Zum Inhalt springen

dynamische array


19chris88

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen


    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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...