Feld und String --- Problem!

Okay last but not least...

Wie kann ich die eingabe der Namen variabel machen.
(Man soll vorher bestimmen können wieviele Schüler eingegeben werden sollen. Maximal 35 Schüler.)
Es müssen quasi nur noch die alle Fünfen in der Variablendeklaration variabel gemacht werden... Aber wie? Hillllfe!
Code:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
//------------------------------------------------------------------------------------------------

int anz = 5, wahl, i, a[5], note[5];
char name[5][30];
//------------------------------------------------------------------------------------------------

void main(){ 

for ( i=0 ; i<anz ; i++ )
{
 printf("\n%i. Schueler : ",i+1);
 scanf("%s",&name[i]);
}

printf("\n");

for ( i=0 ; i<anz ; i++ )
{
 printf("Note des Schuelers %s\t: ",name[i]);
 scanf("%i",&note[i]);
}

printf("\n");
printf("\n\tSchueler\tNote\n        --------        ----\n\n");

for ( i=0 ; i<anz ; i++ )
{
 printf("\t%s\t\t%i\n",name[i],note[i]);
}
//------------------------------------------------------------------------------------------------

printf("\n\n");
}
 
Am einfachsten ist es, wenn du für die Variablen die Maximalgrösse annimst.

Also
int anz = 0, wahl, i, a[35], note[35];
char name[35][30];

und dann die Anzahl vom Anwender eingeben lässt.
Oder ein Abbruchkriterium festlegst, z.B. Name des Schülers ist leer, und Anz auf die maximale Anzahl setzt, damit die maximale Anzahl nicht überschritten wird.

Code:
int Anz = 35;
for ( i=0 ; i<anz ; i++ )
{
   printf("\n%i. Schueler : ",i+1);
   scanf("%s",&name[i]);
   if(strlen(name[i]) == 0)
   {
	  anz = i;  // Jetzt enthält Anz die eingegebene Anzahl Schüler
	  break;
   }
}
 
Gut...

Gute Idee aber die Null kann ich nicht nehmen, weil ich etwas eingeben muss um weiter zu kommen und daher z.B. die 1 nehmen muss. Wenn Null die Abbruchbedingung sein soll muss beim Enterdrücken das Prgramm weiterlaufen geht das?
 
Du hast recht, die Eingabe von <ENTER> allein reicht nicht.
Dann musst du ein Endekriterium festlegen, z. B. könnte man "ende" eingeben (ist zwar nicht besonders schön, aber du brauchst das Programm ja nur für eigene zwecke.

Dieses Endekriterium sollte es allerdings nicht als Schülername geben. :-)

Code:
int anz = 35;
for ( i=0 ; i<anz ; i++ )
{
printf("\n%i. Schueler : ",i+1);
scanf("%s",&name[i]);
if(stricmp(name[i], "ende") == 0)
{
	 anz = i; // Jetzt enthält anz die eingegebene Anzahl Schüler
	 break;
}
}
 
Hilfe!

hi leute
Habe gerade erfahren, das auch die anzahl der Noter pro Schüler variabel sein muss bitte um schnelle Hilfe!
cu gibbon
 
In etwa so: (nicht getestet)

Code:
int ** Note;
int AnzSchueler;
//Anzahl Schüler einlesen
Note = new int*[AnzSchueler];
for(int i=0; i<AnzSchueler; i++)
{
  int AnzNotenProSchueler;
  printf("Anzahl Noten Pro Schüler &d", i);
  //Anzahl Noten pro Schüler einlesen
  Note[i] = new int[AnzNotenProSchueler];
}
//Note deleten wenn nicht mehr gebraucht
if(Note)
delete [] Note;
 
Zuletzt bearbeitet:
Gute Idee habe versucht es bei mir zu integrieren .
Klappt aber nich schicke mal meinen Quellcode :
Code:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
//------------------------------------------------------------------------------------------------
int wahl, i, note[10];
char name[35][30], vorname[35][30];
int anz = 35;
int anz2 = 10;
//------------------------------------------------------------------------------------------------
void main()
{
for ( i=0 ; i<anz ; i++ )
{
   printf("\n%i. Schueler (Vorname und Nachname) : ",i+1);
   scanf("%s",&vorname[i]);
   if (strlen(vorname[i]) == 1)
   {
   anz = i; 
   break;
   }
   scanf("%s",&name[i]);
   if (strlen(name[i]) == 1)
   {
   anz = i; 
   break;
   }
}
 
for ( i=0 ; i<anz2 ; i++ )
{
   printf("%i Note des Schuelers %s %s\t: ",i+1,vorname[i],name[i]);
   scanf("%i",&note[i]);

}

printf("\n");
printf("\n\tSchueler\tNote\n        --------        ----\n\n");
for ( i=0 ; i<anz ; i++ )
{
 printf("\t%s %s\t\t%i\n",vorname[i],name[i],note[i]);
}
//------------------------------------------------------------------------------------------------
printf("\n\n");
}
 
Zurück