Ein Histogramm in C erstellen

cwriter

Erfahrenes Mitglied
Was muss ich denn aus meinem eigenen Code weglassen welche Zeilen ...
Hehe...
Überlege dir, was der Code macht, und was die Anforderungen sind.
Dann schaue an, was dein Code macht, und was noch zu tun ist.

Siehst du, ich könnte dir schon schnell deine Aufgabe lösen, aber das bringt dir ja nicht wirklich etwas. Ein grosser Teil des Programmierens ist schlicht Code lesen und verstehen, und ich habe dir eigentlich schon (zu) viel vorgekaut.
Wenn du spezifische Fragen hast, werde ich sie dir gerne beantworten, aber "wie sähe der Code korrekt aus" ist ja nur eine Kopieranleitung, und Kopieren kannst wahrscheinlich schon.

Gruss
cwriter
 

BasicC

Erfahrenes Mitglied
Morgen,
ich hab den ganzen Code weg gemacht nach return 1;
Und da kommt nicht viel.
Ich weiß wirklich nicht welche Berechnung bleiben muss :/
 

BasicC

Erfahrenes Mitglied
C:
#include <stdio.h>

#include <stdlib.h>

#include <math.h>





int main() {

   

   

    int array[10000]={0};

    int i=0, z=0, n=0;

    double avg=0,zahl,minimum,maximum;

   

   

    FILE *fp;

   

    if((fp=fopen("/Users/*********1/A4-2_Beispieldaten/random_uniform.txt", "r"))==NULL) {

        fprintf(stderr, "Konnte Datei nicht finden\n");

        return 1;

    }

    printf("Zahlen wurden bis EOF gelesen\n");

   

    while(fscanf(fp, "%d",&array[i])==1) {

       

        if ( array[i] < 0 || array[i]  > 9999 ) {

            printf("ERR_R\n");

           

            return 1;

        }

       

        z+=array[i];

        i++;

        n++;

       

    }

    avg=(double)z/n;

   

   

    minimum=maximum=array[0];

   

    for (i=0;i<n;i++) {

        zahl=array[i];

        if (zahl<minimum) {

           

            minimum=zahl;

           

        }

        if(zahl>maximum){

           

            maximum=zahl;

           

        }

       

    }

   

    printf("Der Durchnitt ergibt: %lf\n",avg);

    printf("Minimum: %d\n", (int)minimum);

    printf("Maximum: %d\n", (int)maximum);

    printf("Anzahl n: %d\n",n);

   

    (double)n;

   

    double oben=pow(array[i]-avg,2);

    double summe=0;

    for(i=0;i<n;i++) {

        summe+=sqrt(oben/n);

       

    }

    printf("Standardabweichung: %lf\n",summe);

   

   

    return 0;

}



    //Iteration über Klassen

    for(size_t j = 0; j < 25; ++j)

    {

       

        printf("\nKlasse %2zu: ", j);

        int elcount = 0;

        unsigned long classmin = j * k;

        unsigned long classmax = (j+1) * k;

        //Iteration über alle (unsortierten) Elemente

        for(size_t i = 0; i < 10000; ++i)

        {

            //Wenn im Klassenbereich, zähle aktuelle Klasse hoch (und gebe Sternchen aus)

            if(array[i] >=  classmin && array[i] < classmax) {

                ++elcount;

              printf("*");

            }

        }

        return 0;

    }
 
Zuletzt bearbeitet:

cwriter

Erfahrenes Mitglied
Und das Problem ist...?
(Die 10000 kannst du durch n ersetzen, classmin und classmax sollten ints, nicht unsigned longs sein)

cwriter
 

BasicC

Erfahrenes Mitglied
Also ich arbeite mit Xcode und der gibt mir nur diesen einen Fehler an, desweiteren sagt er auch, da wo ich unsigned int hatte anstelle int, dass die Definition von Int nicht mehr da ist daher unsigned int rein soll.