Veröffentlicht 18. Dezember 201014 j Hallo, ich soll das programm... so umschrieben das es mit dynamischen arrays arbeitet und in eine datei ausgegeben wird. habe erstmal mit sizeof probiert, value_char = malloc(anzahl*sizeof(char)); aber hab jetzt keine ahnung wie ich weiter machen muss erstmal das programm #include <stdio.h> #include <stdlib.h> struct artikel{ char artikle_n[50]; //Artikelname mit max. 50 Zeichen double artikel_nr; //Artikelnummer double artikel_p; //Artikelpreis double artikel_m; //Menge des vorhandenen Artikels }a[100]; int main(){ char *value_char; int anzahl, i; double mwst, gesamtpreis, mwstanteil, gesamtwert=0, gesamt=0; printf("\n ----------> WARENLAGER <---------- \n"); printf("\n Eingabe der einzelnen Artikel!! \n\n"); printf(" Wie viele Artikel wollen Sie eingeben? "); scanf(" %d",&anzahl); //Anzahl wie oft die Schleife durchlaufen werden soll value_char = malloc(anzahl*sizeof(char)); printf("\n Sie geben jetzt %d Artikel ein.\n",anzahl); for(i = 0; i < anzahl; i++){ printf("\n %d. Artikel",i+1); while(getchar() != '\n'); printf("\n Artikelname: "); //Eingabe des Artikelnamen fgets(a[i].artikle_n, 50, stdin); sscanf(a[i].artikle_n, "%s", &a[i].artikle_n); printf("\n Artikelnummer: "); //Eingabe der Artiklenummer scanf(" %lf",&a[i].artikel_nr); printf("\n Preis: "); //Eingabe des Preises scanf(" %lf",&a[i].artikel_p); printf("\n Menge: "); //Eingabe der Menge scanf(" %lf",&a[i].artikel_m); } printf(""); printf("\n ----------> Uebersicht des Warenbestandes <----------"); printf("\n Eingabe des Mehrwertsteuersatzes( in Prozent): "); scanf(" %lf",&mwst); // Eingabe der MwSt printf("\n\n Artikelname Artikelnr. Preis Menge Gesamtpreis MwSt-Anteil \n"); printf(" _____________________________________________________________________________\n"); for(i=0; i< anzahl; i++){ printf(" %s ",a[i].artikle_n); printf(" %10.0lf",a[i].artikel_nr); printf(" %12.2lf",a[i].artikel_p); printf(" %12.0lf",a[i].artikel_m); gesamtpreis = a[i].artikel_p*a[i].artikel_m; // Gesamtpreis ist Artikelpreis mal Menge printf(" %12.2lf",gesamtpreis); mwstanteil=((mwst/100)*gesamtpreis); // MwSt-Anteil ist die MwSt durch 100 und das ganze mal Gesamtpreis printf(" %12.2lf\n", mwstanteil); gesamtwert+=gesamtpreis+mwstanteil; gesamt+=gesamtpreis; } printf("\n\n Gesamtwert: %.2lf\n", gesamtwert); printf("\n Gesamtwert (ohne MwSt): %.2lf\n\n", gesamt); system("pause"); return 0; } vielleicht kann mir einer sagen wie ich weiter machen muss bzw. was ich umschreiben muss. danke
18. Dezember 201014 j Definiere bitte "dynamisches Array". Wenn ich das lese, assoziiere ich damit immer ein selbstständig wachsendes bzw. schrumpfendes Array. Das ist in C natürlich nicht möglich. value_char = malloc(anzahl*sizeof(char)); Spontan geschätzt: Du möchtest keinen Speicherbereich für ein Char-Array alloziieren. Wahrscheinlich möchtest Du eher ein Array des Typs "struct artikel" erzeugen. Aktuell wird ein solches, 100-elementiges, fest auf dem Stack erzeugt. Sollte doch noch etwas Dynamik erforderlich sein (sollte das Array wachsen müssen), so ist "realloc" Dein Freund. Und niemals vergessen: alloziierter Speicher muss auch wieder freigegeben werden
26. Dezember 201014 j value_char = (char*)malloc(anzahl*sizeof(char)); ich habe mir den code durchgesehen, aber für was brauchst du bitte das value_char? das kommt nur bei char *value_char; vor und beim assoziieren... also sinnlos Oo achja, ich gebe dir folgenden tipp: mach die Struktur so: struct artikel { [INDENT]char artikelname[50]; int artikelnummer; int anzahl; float preis;[/INDENT] }; noch schöner währe char *artikelname; , nur muss dann bei jeder eingabe dann auch speicher reserviert werden (und wieder freigegeben mit free() weiters die variable nicht global deklarieren, das ist nicht schön^^ hoffe ich konnte ein wenig helfen. lg Laubi
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.