Feld und String --- Problem!

gibbon

Grünschnabel
Hallo,
ich habe folgendes Probelem. Ich soll ein Programm entwickeln, dass es ermöglicht Namen von Schuelern einzugeben und diesen Noten zuzuortnen. (Mit hilfe von Feldern.)
Dann sollen die Namen und Noten auf dem Schirm ausgegeben werden.
Es sollen unterschiedlich viele Schueler eingegeben werden.

Ich bekomme es einfach nicht hin ein Programm zu bauen, dass die Strings der Namen in ein Feld speichert.
Hoffe auf Ideen, Tips und Vorschläge.

Danke,
Gibbon (!)
 
Poste doch mal etwas Code, also wie weit du bist.
Wenn ich das richtig verstanden habe willst du einfach nur die Namen der Schüler in ein String-Array schreiben oder was? Das sollte ja nicht so das Problems sein.

Greetz...
Sinac
 
Code:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int i, a[8];
char vorname[20];
 
void main(){ 
 
for ( i=0 ; i<anz ; i++){
printf("\nVorname %i : ",i);
gets(vorname);
 
a[0]=strlen(vorname);
}
 
printf("\n");
for ( i=0 ; i<a[0] ; i++ ){
printf("%s",vorname[i]);
}

printf("\n");

printf("\n\n");
}
 
Stimmt

Genau beliebig viele Namen sollen in ein Array und dann Noten zugewiesen werden.
Ausgegeben und gespeichert.
Alles einfach außer das mit den Namen...
Hab auch alles andere schon aber irgendwie raff ich das mit den mehrdimensionalen Feldern nicht.
 
Ich wuerde das als Verkettete Liste machen, die Namen kannst du aber auch als Zeigerarray speichern:
Zeigeveriante:

Code:
char *vorname[]={"Jan", "Fred", "Achim"};

Du kannst natuerlich auch vorname mit einer Maximalzahl vorsetzten zb char vorname[100] wenn dann Schueler zugefuegt werden musst du malloc() bemuehen.

Der Listenansatz waere:
Code:
/* dein Listen element */
struct schliste {
   char vorname[8];
   char nachnahme[8];
   int note;
   struct schliste *next;
}

Dazu brauchst du dann noch die Funktionen wie: get_data, append, remove, delete, length, search, ...
next verweist dann immer auf den naechsten eintrag. Wenn du nach einfach verketteter Liste im Netz suchst, findest du bestimmt noch weitere Anregungen.
 
Hallo gibbon,
soll das nur eine Spielerei werden, oder ein Programm was zum Einsatz kommt ?

Weil, ist ne Menge Code.

Bye.
 
Um auf dein Beispiel zurückzukommen:
Code:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int anz = 8; // max. 8 vornamen

int i, a[8];
char vorname[8][20];

void main(){ 

// die stringlänge darf in deinem Beispiel 19 (+Nullterminierung) nicht überschreiten
for ( i=0 ; i<anz ; i++ ){
printf("\nVorname %i : ",i);
gets(vorname[i]);

a[0]=strlen(vorname[i]);   // warum auch immer du das brauchst

}

printf("\n");
for ( i=0 ; i<anz ; i++ ){
printf("%s",vorname[i]);
}

printf("\n");

printf("\n\n");
}

Um das alles variabler zu machen solltest du mit std::string arbeiten und mit unbestimmter Anzahl von Vornamen usw. Aber das hast du ja schon, wie du geschrieben hast.
 
Danke

Okay danke für eure Mithilfe.
Alles läuft so weit.
Nächstes Problen wie kann ich den Ausgabetext so formatieren, dass die noten und namen unter einander stehen egal wie lang sie sind.
Beispiel :

kurzename1 note1
laaaaaaannngerrrrrrname2 note2
etc.

Hoffe auf erneute Hilfe und nochmals danke...
cu Gibbon
 
Zurück