C einfache for schleife ?

Diskutiere C einfache for schleife ? im Developer Network Forum im Bereich Hardware & Software Forum; hallo , ich bin gerade dabei ein wenig die syntax von zu kennen zu lernen , was mir allerdings rätsel aufgibt ist warum mein schön erdachtes...
  • C einfache for schleife ? Beitrag #1
S

Swedlana

Neues Mitglied
Dabei seit
28.04.2004
Beiträge
3
Reaktionspunkte
0
Ort
Nowosibirsk
hallo , ich bin gerade dabei ein wenig die syntax von zu kennen zu lernen , was mir allerdings rätsel aufgibt ist warum mein schön erdachtes programm nicht funktioniert , wo steckt der logikfehler das die zahlenpyramide nicht richtig ausgegeben wird ? ;/

#include <stdio.h>
int main (void)
{
// pyramiden aufbau zählvariablen
int i ,j ,f=0;

// unterstruktur
for (j=0;j<=9;j++)
{
printf("\n%d" , f);
for (i=1;i<=j;i++)
{
printf("%d",i);
}
}
// pres any .. verschieben
printf("\n");
return(0);
}
 
  • C einfache for schleife ? Beitrag #2
Re¨Tron

Re¨Tron

Bekanntes Mitglied
Dabei seit
24.12.1999
Beiträge
4.475
Reaktionspunkte
7
Ort
Schweiz
Swedlana schrieb:
hallo , ich bin gerade dabei ein wenig die syntax von zu kennen zu lernen , was mir allerdings rätsel aufgibt ist warum mein schön erdachtes programm nicht funktioniert , wo steckt der logikfehler das die zahlenpyramide nicht richtig ausgegeben wird ? ;/

#include <stdio.h>
int main (void)
{
// pyramiden aufbau zählvariablen
int i ,j ,f=0;

// unterstruktur
for (j=0;j<=9;j++)
{
printf("\n%d" , f);
for (i=1;i<=j;i++)
{
printf("%d",i);
}
}
// pres any .. verschieben
printf("\n");
return(0);
}
Code:
0
01
012
0123
01234
012345
0123456
01234567
012345678
0123456789
...wird ausgegeben! Wo ist das Problem? Ist es nicht das, was du willst?
 
  • C einfache for schleife ? Beitrag #3
S

Swedlana

Neues Mitglied
Dabei seit
28.04.2004
Beiträge
3
Reaktionspunkte
0
Ort
Nowosibirsk
nicht ganz , ich wollte ja keine halbe pyramide programmieren sondern eine ganze ;) nur die schleife sollte das eigentlich für Links und Rechts machen oder muß´ich noch ein parameter zusätzlich einfügen damit es auch eine richtige pyramide wird ?
 
  • C einfache for schleife ? Beitrag #4
K

KaFu

Bekanntes Mitglied
Dabei seit
07.12.1999
Beiträge
755
Reaktionspunkte
0
Hi!

Macht mal wieder Spaß mit C... Hier wäre meine Lösung:
Code:
#include <stdio.h>
int main (void)
{
// pyramiden aufbau zählvariablen
  int i ,j;
// unterstruktur
  for (j=0;j<=9;j++)
  {
	for (i=9;i>=0;i--)
	{
	  if (i<=j) printf("%d",i);
	  else printf(" ");
	}
	for (i=1;i<=j;i++)
	{
	  printf("%d",i);
	}
	printf("\n");
  }
// pres any .. verschieben
  printf("\n");
  return(0);
}

Tschüß,
KaFu
 
  • C einfache for schleife ? Beitrag #5
Re¨Tron

Re¨Tron

Bekanntes Mitglied
Dabei seit
24.12.1999
Beiträge
4.475
Reaktionspunkte
7
Ort
Schweiz
Swedlana schrieb:
noch ein parameter zusätzlich einfügen damit es auch eine richtige pyramide wird ?
Oder du hälst dir einen Spiegel an den Monitor! :D

Du musst es mit Leerzeichen hinbiegen, so wie es KaFu vorgemacht hat. Leider gibts für sowas keine "Spiegel" Funktion in C/C++.
 
  • C einfache for schleife ? Beitrag #6
S

Swedlana

Neues Mitglied
Dabei seit
28.04.2004
Beiträge
3
Reaktionspunkte
0
Ort
Nowosibirsk
das mit dem spiegel kann ich meinem proff ja mal vorschlagen , seine 3 diopdrine brille sehen jedenfalls nach einem ordentlichen augenschaden aus
 
  • C einfache for schleife ? Beitrag #7
N

nic_power

Senior Moderator
Dabei seit
27.12.2000
Beiträge
7.838
Reaktionspunkte
2
Hallo,

das kann man aber auch wesentlich einfacher haben:
Code:
int main()
{
  char i;
  char pyra[]="                    ";

  for(i=0; i<10; i++) {
    pyra[10-i]=48+i;
    pyra[10+i]=48+i;
    printf("%s\n", pyra);
  }
}

Nic
 
  • C einfache for schleife ? Beitrag #8
A

Alucard

Mitglied
Dabei seit
04.04.2005
Beiträge
7
Reaktionspunkte
0
Sehr elegante Lösung, kannst du mir die aber bitte mal erklären???!!!!

mfg Alucard
 
  • C einfache for schleife ? Beitrag #9
ZockerM

ZockerM

Verdienter Ex-Mod
Dabei seit
25.11.2000
Beiträge
2.722
Reaktionspunkte
0
Ort
/root
Hi!

Code:
int main()
{
  char i;
  char pyra[]="                    ";

  for(i=0; i<10; i++) {
    pyra[10-i]=48+i;
    pyra[10+i]=48+i;
    printf("%s\n", pyra);
  }
}
Ich darfs bestimmt auch erklären:
char ist eine Zeichenkette. Man greift darauf mittels eines Indexes (in den eckigen Klammern) auf die einzelnen Zeichen zu. Der Trick mit der Pyramide ist, dass sie von vornherein symmetrisch aufgebaut wird. Und zwar durch das 10 plus und minus i. Das heißt, das 10. Zeichen ist in der Mitte und der Rest wird symmetrisch drumherum geschrieben.

gruß ZockerM
 
  • C einfache for schleife ? Beitrag #10
FerFemNemBem

FerFemNemBem

Moderator
Teammitglied
Dabei seit
11.09.1999
Beiträge
4.494
Reaktionspunkte
0
Halloechen,

kenne das nur vom Java aber mit der Beschreibung von ZockerM gehe ich nicht mit!
"char" ist ein einzelnes Zeichen (keine Zeichenkette) nic_power benutzt hier einen Zeichen-Array ("char[]"). Also eine Menge von Zeichen, auf welche mittels Index zugegriffen wird.
eine Zeichenkette waere in meinen Augen ein "String".
Den Rest sehe ich aber genauso... ;)

Gruss, FFNB.
 
  • C einfache for schleife ? Beitrag #11
ZockerM

ZockerM

Verdienter Ex-Mod
Dabei seit
25.11.2000
Beiträge
2.722
Reaktionspunkte
0
Ort
/root
Hi!

@FerFemNemBem:
Hast natürlich Recht. So ist es präziser und vor allem richtiger.
Ich komme langsam aber sicher mit all den Programmiersprachen, die ich halb gelernt habe, 'nen bisschen ins Schwimmen. ;)
Sorry.

gruß ZockerM
 
  • C einfache for schleife ? Beitrag #12
N

nic_power

Senior Moderator
Dabei seit
27.12.2000
Beiträge
7.838
Reaktionspunkte
2
Hallo,

In dem Array "pyra" wird anfangs eine Zeichenkette gespeichert, die nur aus Leerzeichen besteht. Möchte man nun eine Pyramide aufbauen, so beginnt man in der Mitte des Arrays. Die Mitte des Arrays stellt pyra[10] dar (beim ersten Schleifendurchlauf mit "i=0"). An diese Stelle wird der ASCII-Wert von '0' geschrieben (also die 48 --> siehe auch ASCII-Tabelle; genau genommen wird er 2x an die selbe Stelle geschrieben).

Beim zweiten Durchlauf mit "i=1" schreibt das Programm an die Stellen pyra[10-1] und pyra[10+1] also links und rechts der Null den ASCII Wert für '1' (also 48+1). usw. usf.

Nic
 
  • C einfache for schleife ? Beitrag #13
A

Alucard

Mitglied
Dabei seit
04.04.2005
Beiträge
7
Reaktionspunkte
0
Danke Sehr,
Jetzt hab auch ich es verstanden.
 
Thema:

C einfache for schleife ?

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.180
Beiträge
1.579.174
Mitglieder
55.879
Neuestes Mitglied
stonetreck
Oben