Arrays
-
Wie bekomme ich jetzt den wert aus der koordinate[0][0]
also der 34 in meine ausgabe? kann mir da jemand helfen?int main(void)
{
int i,j;
double Kunde;
double Kategorie;
float profil[6][2]={{34,4},{55,6},{12,3},{78,9},{46,5},{23,4}};
printf("Das ist ein Kunden\n");{
for(i=0;i<=0;i++)
{
printf("Kunde: \n",i+1);
scanf("%lf",&profil[i]);
}
for(j=0;j<=0;j++)
{
printf("Kategorie:\n",j+1);
scanf("%lf",&profil[j]);
}
}
system("pause");
return 0;
}
-
gosi schrieb:
Wie bekomme ich jetzt den wert aus der koordinate[0][0]
also der 34 in meine ausgabe? kann mir da jemand helfen?... printf ("Kunde %d: %f\n", i + 1, profil[0][0]); ...
Ich weiß nicht, warum du für die Ausgabe
scanf
verwendest, da diese Funktion für die Eingabe zuständig ist. Außerdem hast du bei der 2. und 3.printf
-Anweisung zwar zusätzliche Argumente angegeben, diese aber nicht im Formatstring (1. Argument) miteinbezogen. Wie es aussehen sollte, siehst du oben.
-
Und bitte nutze cpp-Tags (links unter den Smileys), dann sieht dein Code gleich viel schöner aus, nämlich so:
int main(void) { int i,j; double Kunde; double Kategorie; float profil[6][2]={{34,4},{55,6},{12,3},{78,9},{46,5},{23,4}}; printf("Das ist ein Kunden\n"); { for(i=0;i<=0;i++) { printf("Kunde: \n",i+1); scanf("%lf",&profil[i]); } for(j=0;j<=0;j++) { printf("Kategorie:\n",j+1); scanf("%lf",&profil[j]); } } system("pause"); return 0; }
Zu scanf: Erstens liest man damit vom Benutzer ein (du willst ausgeben, richtig?), wie schon erwähnt wurde, zweitens solltest du nicht auf ein zweidimensionales Array zugreifen wie auf ein eindimensionales. Was glaubst du, welches Element profil[7] ist?
Drittens sind deine Schleifenköpfe Quatsch. Mit dieser Notation
for(i=0;i<=0;i++)
kriegst du genau einen Schleifendurchlauf hin, mehr nicht. Du sagst hier: "setze i auf 0; mache solange weiter, wie i<=0 ist; erhöhe i nach jedem Durchlauf um 1". Dir leuchtet nun sicher ein, wieso die Bedingung nur beim ersten Durchlauf erfüllt ist.
-
ich habe bei den einmaligen durchläufen gedacht, das ich immer nur einen "kunden"
aufrufe, damit ich erste einen unden, und dann eine kategoriewählen kann.
sorry, mache gerade meinen techniker und dies ist nicht unbedingt mein paradefach
-
gosi schrieb:
ich habe bei den einmaligen durchläufen gedacht, das ich immer nur einen "kunden"
aufrufe, damit ich erste einen unden, und dann eine kategoriewählen kann.
sorry, mache gerade meinen techniker und dies ist nicht unbedingt mein paradefachIch verstehe zwar nicht ganz, was du sagen willst (das solltest du nochmal näher erläutern), aber deine Schleifen sind im Moment so, dass du die Schleifen auch genausogut weglassen kannst.
//das hier for(i=0;i<=0;i++) { printf("Kunde: \n",i+1); scanf("%lf",&profil[i]); } //ist genau das gleiche wie das hier printf("Kunde: \n",i+1); scanf("%lf",&profil[i]); //kein Unterschied...
-
ich dachte ich gebe so die "koordinaten"(i und j) meiner arrays ein.
-
gosi schrieb:
ich dachte ich gebe so die "koordinaten"(i und j) meiner arrays ein.
Was du hier machst, ist Folgendes:
for(i=0;i<=0;i++) { printf("Kunde: \n",i+1); scanf("%lf",&profil[i]); } //die erste Schleife ist hier beendet! for(j=0;j<=0;j++) //erst jetzt beginnt die zweite Schleife { printf("Kategorie:\n",j+1); scanf("%lf",&profil[j]); }
Was du willst, ist eher sowas hier:
for(i=0;i<6;i++) //hier i die Anzahl der Elemente der ersten Dimension des Arrays durchlaufen lassen (von 0-5, also nicht "<=", sondern "<" benutzen) { for(j=0;j<2;j++) //hier j die Anzahl der Elemente der zweiten Dimension des Arrays durchlaufen lassen (von 0-1) { printf("(was auch immer in deinem Array steht, hab ich bis jetzt nicht so richtig begriffen): %f\n",profile[i][j]); } }
Damit gehst du alle Elemente durch und gibst sie aus. Zuerst (0,0), dann (0,1), dann (1,0), dann (1,1) usw. Falls du was vom Benutzer einlesen willst (scanf lässt das vermuten, andererseits initialisierst du das Array vollständig mit irgendwelchen Werten...
), kannst du das mit einem ähnlichen Konstrukt machen.
Übrigens ist float ein Fließkomma-Typ. Du scheinst aber Ganzzahlenwerte nutzen zu wollen. Wieso nimmst du da nicht int?
Kleiner Tip: hör auf, einfach ohne Vorwissen drauf loszuprogrammieren. Das bringt nix. Such dir im Internet ein kleines, schönes Anfängertutorial und lies zumindest die ersten Seiten durch. Dann kommst du bei zukünftigen Aufgaben auch eher (bzw. überhaupt) ans Ziel.
-
du hast voll kommen recht, mein problem ist nur, dass ich es mir fast komplett
selber beibringen muss, da mein doc(lehrer) nicht im stande ist das vernünftig
rüber zu bringen.
aber besten dank für die hinweise, das hat mir in meinem verständniss sehr weitergeholfen.
mit dem "profil" versuche ich kundendaten einzulesen und sie nach zwei kategorien einzuteilen.
-
gosi schrieb:
du hast voll kommen recht, mein problem ist nur, dass ich es mir fast komplett
selber beibringen muss, da mein doc(lehrer) nicht im stande ist das vernünftig
rüber zu bringen.So einen Lehrer hat wohl jeder schon mal gehabt...
gosi schrieb:
mit dem "profil" versuche ich kundendaten einzulesen und sie nach zwei kategorien einzuteilen.
Hm, ich hab deinen Code mal ein wenig geändert. Vielleicht ist es schon so halbwegs, was du willst. Versuche auf jeden Fall, den Code auch zu verstehen.
int main(void) { int i,j; double Kunde; double Kategorie; float profil[6][2]={0}; printf("Dateneingabe:\n"); printf("-------------\n"); for(i=0;i<6;i++) { printf("Kunde %d: \n",i+1); for(j=0;j<2;j++) { printf("Wert %d eingeben:",j+1); scanf("%f",&profil[i][j]); } } printf("\nDatenausgabe:\n"); printf( "-------------\n"); for(i=0;i<6;i++) { printf("Kunde %d: ",i+1); for(j=0;j<2;j++) { printf("Wert %d = %f ",j+1,profil[i][j]); } printf("\n"); } system("pause"); return 0; }
-
supi,
versuche es jetzt zu verstehen.dankeschön