Problem bei Arrays
-
zählt man nicht von 0-99 und 0-2? (0....99, 0,1,2)???
aber ich brauche doch arrays für die darstellung, sprich
0 1 2
0x x x
1y y y
2y y y
3y y y
-
[n] heist von 0..n-1
-
xarathus schrieb:
zählt man nicht von 0-99 und 0-2? (0....99, 0,1,2)???
nein!
array[100] => 0..99
array[2] => 0..1xarathus schrieb:
aber ich brauche doch arrays für die darstellung, sprich
0 1 2
0x x x
1y y y
2y y y
3y y ydann brauchst du [100][3]
-
okey danke, noch mein hauptproblem liegt darin, das die for schleiffe nicht funktioniert!
sobald ich sie raus nehme und x durch 0 ersetze, so ergiebt es 3 einträge.
wo liegt dort der fehler?
-
Erstens du denkst zu kompliziert ;). Wie bereits von MFK erwwähnt benötigst du entweder gar kein Array (bei direkter Berechnung und Ausgabe), oder aber nur ein eindemensionales Array.
Zweitens: Das ist C-Code.
So kannst du vorgehen bei Zwischenspeicherung (im Array) deiner Werte:
Wenn du eine struktur a la:
struct Data { int zahl; // char-Werte sind in diesem Fall imho unpassend int quadrat; double wurzel; };
hast, brauchst du kein mehrdemensionales Array, da du ja (dank der Struktur) in der Schleife folgendes schreiben kannst:
... Data foo[100]; // Array der struktur Data mit 100 Elementen erzeugen. ... for(unsigned int i = 0; i < 100; ++i) { foo[i].zahl = i; foo[i].quadrat = i * i; foo[i].wurzel = sqrt((double) i); }
//Edit^n: Fehler über Fehler;
//2*Edit^n: Und just by the way: Eine Struktur mit Namen 'Personendaten' ist vielleicht ein wenig unpassend, wenn sie zahlen etc. speichern soll, oder?Caipi
-
viel dank Caipi, du hast mir sehr geholfen!
das programm läuft nun, aber die Wurzelwerte stimmen nicht, ich kriege hin und wieder negative zahlen, oder riesengrosse werte.....
weiss aber nicht an was das liegt......#include <stdio.h> /*aufgabe1.c*/ #include <string.h> struct data { int zahl; int quadrat; double wurzel; char ausgabe[40]; char ausgabe1[40]; char ausgabe2[40]; }; int main() { struct data rechnung[100], rechen; int w=10; int i; strcpy(rechen.ausgabe,"Zahl"); strcpy(rechen.ausgabe1,"Quadrat"); strcpy(rechen.ausgabe2,"Wurzel"); printf("%s %s %s\n",rechen.ausgabe1, rechen.ausgabe,rechen.ausgabe2); for(i = 1; i < 101; ++i) { rechnung[i].zahl= i; rechnung[i].quadrat= i * i; rechnung[i].wurzel= sqrt((double)i); printf("%i %i %dl\n",rechnung[i].quadrat, rechnung[i].zahl,rechnung[i].wurzel); if(i==w) { getchar(); w=w+10; } } printf("%i %i %dl\n",rechnung[i].zahl, rechnung[i].quadrat,rechnung[i].wurzel); }
-
Mach mal aus %dl in printf %lf
also:
#include <stdio.h> /*aufgabe1.c*/ #include <string.h> struct data { int zahl; int quadrat; double wurzel; char ausgabe[40]; char ausgabe1[40]; char ausgabe2[40]; }; int main() { struct data rechnung[100], rechen; int w=10; int i; strcpy(rechen.ausgabe,"Zahl"); strcpy(rechen.ausgabe1,"Quadrat"); strcpy(rechen.ausgabe2,"Wurzel"); printf("%s %s %s\n",rechen.ausgabe1, rechen.ausgabe,rechen.ausgabe2); for(i = 1; i < 101; ++i) { rechnung[i].zahl= i; rechnung[i].quadrat= i * i; rechnung[i].wurzel= sqrt((double)i); printf("%i %i %lf\n",rechnung[i].quadrat, rechnung[i].zahl,rechnung[i].wurzel); if(i==w) { getchar(); w=w+10; } } printf("%i %i %lf\n",rechnung[i].zahl, rechnung[i].quadrat,rechnung[i].wurzel); }
//EDIT:
Oder noch besser nimm cout
-
yo, danke dir, das problem ist nun gelöst!
-
Ist dir klar, dass du da 300 jeweils 40 Zeichen große char-Arrays hast, die du nicht brauchst (und auch nicht benutzt)?
-
Und um das ganze abzurunden versuche ich es auch nochmal mit den Arrays
Da ich aus xarathus vorletztem Post schließe, dass er es noch nicht ganz verstanden hat.@xarathus:
Die Zählweise von Arrays beginnt bei 0. Folgende Regel:
Ein Array mit 10 Elementen geht von Index 0 bis 9. D.h. du sprichst es an über array_var[0] bis array_var[9]. Allgemeiner ausgedrückt ein Array mit n Elementen geht von Index 0 bis Index n-1 (D.h. array_var[0] bis array_var[n-1]).Bei deinem Code übergehst du das erste Element (Index 0) einfach; Dafür liest/schreibst du aber über die Grenzen des Arrays hinaus. (Du liest/schreibst auf das Element n).
Also:
for(unsigned int i = 0; i < 100; ++i) // Hier das, was in der Schleife gemacht werden soll :-)
Caipi