WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 28.11.2003, 00:33   #1
Bastet
Elite
 
Registriert seit: 07.09.2000
Beiträge: 1.036


Unglücklich C - Vektoren

vektoren. also ich glaub ich steh mal wieder auf der seife. und ja - ich hab bereits mehrere skripte sudiert
(im inet gibts genug davon - deshalb, bitte nicht aus nem buch zitieren, dass hilft mir nichts, weil sonst
hätt ichs bereits kapiert ) sorry, falls euch meine erklärungen irritieren, aber ich bin absolut keine
meisterin in erklärungen - schaltets für mich einfach mal auf dummiemodus, danke.


vektor syntax:
typ variablenname[anzahl_der_elemente_odr_auch_index_genannt];

Code:
#include <stdio.h>
int main()
{
	 int i, zahl[10];   /* meine fragen-erklärungen zum beispiel siehe unten. NR 1 */

	printf("...");     		 /* nö - keine frage  */
    	for (i=0; i<10; i++) 		 /* frage NR 2 */
	  	scanf(".....", zahl[i]); 	 /* frage NR 3 */

	for (i=9; i>=0; i--)  		 /*frage NR 4 */
		prinft("...", zahl[i]);

	return 1;
}
NR 1 syntax: zahl[10] verstanden, aber wieso brauch ich noch ne var i?
NR 2 schätze mal i=0; gilt für anfang und i<10 ist das ende (weil 10 werte - wobei von 0-9 gezählt wird,
i++ bedeutet, dass bei der eingabe der werte - nach enter immer der wert auf dem nächsten platz
gespeichert wird.
NR 3 zahl[i] betrifft irgendwie NR 1 - könnte ich nicht: for (zahl=0; zahl<10; zahl++) scanf(".....", zahl[])
schreiben? wieso sollte ich bei varname[index] in index die var i angeben?
NR 4 wenn ich was umgekehrt (i--) ausgeben möchte schreibe ich zuerst: for i=9 weil ich ja von hinten anfange.

soweit so gut, aber ich hab noch ein beispiel, da versteh ich scheinbar nur mehr bahnhof...

Code:
#include <stdio.h>

int main()
{
	int i, laenge, wort[21];

	for(i=0; i<21; i++)
	          wort[i]=0;             				 /* frage NR 1 */

	printf("....");

	while(getchar()!='\n')
	{	
		for(laenge=1; getchar()!='\n'; laenge++);  		 /* frage NR 2 */
	
		if(laenge>20)
			wort[20]++;
		else	
			wort[laenge-1]++;                          	 /*frage NR 3 */
	}
	for(i=0; i<21; i++)
		printf("%d Wörter mit %d Buchstaben\n", wort[i], i+1);  /* frage NR 4 */
	return 1;
}
NR 1 wieso geb ich dass jetzt an, beim obigen beispiel musste ich dass nicht.
NR 2 wieso laenge=1 ? müsste dass nicht laenge=0 sein, ich fange doch bei 0 an.
NR 3 häää???
NR 4 ist mir klar dass ich %d was zuweisen muss, aber wieso hat das i ein +1?
____________________________________
Bye Bastet

Bastet ist offline   Mit Zitat antworten
Alt 28.11.2003, 04:53   #2
Who-T
Elite
 
Registriert seit: 01.08.2000
Beiträge: 1.395


Who-T eine Nachricht über ICQ schicken
Standard

also erstens: gebräuchlicher ist der ausdruck array. vektor ist nur selten in dem zusammenhang zu finden.

zu deinen fragen:

1) i brauchst du zum durchlaufen des arrays
und weil du in c bist musst du die vars oben bereits deklarieren. i hat aber ansonsten mit zahl nix zu tun, ist eine eigentständige var.

vielleicht verständlicher wenn du schreibst

int zahl[10]; // array
int i; /counter

2 + 3)
stell dir ein array als straße vor. der name des arrays ist der straßenname.
zahl ist also eine straße mit 10 häusern, in denen kannst du werte speichern.

wenn du auf das dritte haus zugreifen willst brauchst du straßenname + hausnummer.
zahl[2]

oder - ohne vergleich. zahl ist nur ein pointer auf die startadresse eines freien speicherbereiches. die länge des speicherbereichs ist die anzahl der elemente * der größe in bytes pro element. um auf ein element zugreifen zu können, benutzt man den index, der die entsprechende zahl an bytes "weiterspringt"

zweiter fragenblock:
nr 1: die werte im array sind nicht standardmäßig gesetzt, sprich nehmen irgendeinen wert an. deshalb setzt du alle werte zu sicherheit mal auf 0.
nr 2 + 3: das is wirklich strange. aber da du an der position laenge - 1 speicherst, fängst du effektiv eh bei 0 an.
der grund ist hier die besssere lesbarkeit, (laenge fängt bei 1 an) meiner meinung nach aber net wirklcih sinnvoll hier. kommentare fehlen, genau solche sachen gehören kommentiert
nr 4: du speicherst an index 0 die zahl der wörter mit 1 buchstaben länge, an index 1 die mit 2 buchstaben usw.
sprich an adresse i speicherst du die zahl der wörter mit i+1 buchstaben.

alles klar?
____________________________________
Whoever built humanity left in a major design flaw: it was the tendency to bend at the knees.
Who-T ist offline   Mit Zitat antworten
Alt 28.11.2003, 09:28   #3
Bastet
Elite
 
Registriert seit: 07.09.2000
Beiträge: 1.036


Standard

ja danke - du hasts super erklärt - ich habs jetzt verstanden


wenn ich irgendwo so ne erklärung gefunden hätte, hätte ich mein hirn nicht so malträtieren müssen... tja, wieso solltens die bücher einfach schreiben. da könnte doch dann jeder alles
____________________________________
Bye Bastet

Bastet ist offline   Mit Zitat antworten
Alt 29.11.2003, 02:16   #4
Who-T
Elite
 
Registriert seit: 01.08.2000
Beiträge: 1.395


Who-T eine Nachricht über ICQ schicken
Standard

i schick da halt dann die rechnung
____________________________________
Whoever built humanity left in a major design flaw: it was the tendency to bend at the knees.
Who-T ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:36 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag