006
08.01.2005, 18:57 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft... (Operator)
|
Zitat: |
es ist aber für mich leserlicher wennst es gelassen hättest wies war
|
für uns aber nicht und wir sollen ja deine frage beantworten
habs mal ein wenig verbessert... auf jeden fall solltest du ne variable mitführen die angibt wieviele städte aktuell denn wirklich in deinem array gespeichert sind.... wenn du dann noch den spass mit stadt hinzufügen und löschen als menüpunkte hinzunimmst kannst du überlegen das mit ner liste oder nen dynamsichen array zu basteln (malloc und free angucken..)
C++: |
#include <stdio.h> #include <stdlib.h> #include <string.h>
#define NMAX 20
struct city_s { char name[30]; char country[5]; long inhabitants; };
void clearinputbuffer(); void printcity(struct city_s *c); void printcitys(struct city_s *c,int n); long searchcity(struct city_s c[], long len, char *name);
int main(int argc, char *argv[]) { struct city_s cities[NMAX]= { {"Wien", "A", 1.8e6 }, {"Graz", "A", 238e3 }, {"Berlin", "D", 3.45e3 }, {"Zurich", "Ch", 360e3 }, {"Kopenhagen", "DK", 1.3e6 } }; long wahl; long i,anzahl=5; char stadt[NMAX]; for(wahl=1;wahl;){
printf("\t1) print all cities\n"); printf("\t2) search city\n"); printf("\t3) find largest city\n"); printf("\t0) Quit\n\n"); printf("Druecke Wahl: "); scanf("%ld", &wahl); printf("\n"); switch (wahl) { case 1: printcitys(cities,anzahl); break; case 2: //das hier würd ich auch jeden fall noch in eine eigene funktion packen und nicht alles in main ballern... printf("welche stadt suchen sie: "); scanf("%s", stadt); printf("\n"); i= searchcity(cities, anzahl, stadt); if (i== -1) printf("stadt nicht gefunden\n"); else printcity(&cities[i]); break; } } }
void printcity(struct city_s *c){ printf("%s\t%s\t%ld\n", c->name, c->country, c->inhabitants); }
void printcitys(struct city_s *c,int n){ for(++n; --n; ++c) printcity(c); }
long searchcity(struct city_s *c, long len, char *name){ return len?!strcmp((c+len-1)->name,name)?len-1:searchcity(c,len-1,name):-1; }
|
-- ...fleißig wie zwei Weißbrote |