Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo alle miteinander.

Habe da ein kleines Problem, und zwar habe ich von meinem Dozenten folgende Aufgabenstellung erhalten:

Schreiben Sie bitte ein Programm, welches Ihnen 100 Zufallszahlen liefert.

Anschließend sollen die Summe, der Mittelwert aller Zahlen berechnet werden.

Auch sollen die kleinste und die Größte der Zufallszahlen ausgegeben werden.

Hier nun mein Quellcode des Programmes:

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

// Funktion für Minimum

int minimum(int* feld, int length)

{

int min=feld[1];

for(int i=1; i<length; i++)

{

if (feld<min)

{

min=feld;

}

}

return min;

}

// Funktion für Maximum

int maximum(int* feld, int length)

{

int max=feld[0];

for(int i=1; i<length; i++)

{

if (feld>max)

{

max=feld;

}

}

return max;

}

// Funktion für Summe

int summe(int* feld, int length)

{

int sum=feld[1];

for(int i=1; i<length; i++)

{

if (feld<sum)

{

sum=sum+feld;

}

}

return sum;

}

// Funktion für den Mittelwert

float mittelwert(int* feld, int length)

{

float mit;

mit=(float)summe(feld,length)/length;

return mit;

}

// Ergebnisse ausgeben

void anzeigen(int* feld, int length)

{

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

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

printf("Summe: %d\n",summe(feld,length));

printf("Mittelwert: %.2f\n",mittelwert(feld,length));

}

void main(void)

{

const int anzahl=100;

int feld[anzahl];

int random=0;

srand ((unsigned)time(NULL));

// Array füllen

for (int i=0; i<anzahl; i++)

{

feld=(rand()%anzahl)+1;

}

// Array ausgeben

for(int i=0; i<anzahl; i++)

{

printf("%d\t3",feld);

}

printf("\n");

// Displayausgaben

anzeigen(feld,anzahl);

}

Mein Problem ist, dass es mir zwar die 100 Zahlen liefert, aber nicht die korrekte summer aller, auch nicht die kleinste und nicht die größte der Zufallszahlen.

1000 Dank im vorraus.

Geschrieben
#include <stdio.h>

#include <stdlib.h>

#include <time.h>


// Funktion für Minimum


int minimum(int* feld, int length)

{

int min=feld[1];

for(int i=1; i<length; i++)

{

if (feld[i]<min)

{

min=feld[i];

}

}

return min;

}

// Funktion für Maximum


int maximum(int* feld, int length)

{

int max=feld[0];

for(int i=1; i<length; i++)

{

if (feld[i]>max)

{

max=feld[i];

}

}

return max;

}

// Funktion für Summe


int summe(int* feld, int length)

{

int sum=feld[1];

for(int i=1; i<length; i++)

{

if (feld[i]<sum)

{

sum=sum+feld[i];

}

}

return sum;

}

// Funktion für den Mittelwert


float mittelwert(int* feld, int length)

{

float mit;

mit=(float)summe(feld,length)/length;

return mit;

}

// Ergebnisse ausgeben


void anzeigen(int* feld, int length)

{

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

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

printf("Summe: %d\n",summe(feld,length));

printf("Mittelwert: %.2f\n",mittelwert(feld,length));

}


void main(void)

{

const int anzahl=100;

int feld[anzahl];

int random=0;

srand ((unsigned)time(NULL));

// Array füllen


for (int i=0; i<anzahl; i++)

{

feld[i]=(rand()%anzahl)+1;

}

// Array ausgeben


for(int i=0; i<anzahl; i++)

{

printf("%d\t3",feld[i]);

}

printf("\n");

// Displayausgaben

anzeigen(feld,anzahl);

}

Geschrieben (bearbeitet)

Nicht viel besser, da einrückungen fehlen.... aber:

void main(void)

{

   const int anzahl=100;

   int feld[anzahl];

   int random=0;

   srand ((unsigned)time(NULL));

   // Array füllen


   for (int i=0; i<anzahl; i++)

   {

       feld[i]=(rand()%anzahl)+1;

   }

   // Array ausgeben


   for(int i=0; i<anzahl; i++)

   {

      printf("%d\t3",feld[i]);

   }

   printf("\n");

   // Displayausgaben

   anzeigen(feld,anzahl);

}

Edit: Moment...

Bearbeitet von Hexagon
Geschrieben (bearbeitet)


#include <stdio.h>

#include <stdlib.h>

#include <time.h>


// Funktion für Minimum


int minimum(int* feld, int length)

{

    int min=feld[1];

    for(int i=1; i<length; i++)

    {

        if (feld[i]<min)

        {

            min=feld[i];

        }

    }

    return min;

}

// Funktion für Maximum


int maximum(int* feld, int length)

{

    int max=feld[0];

    for(int i=1; i<length; i++)

    {

        if (feld[i]>max)

            {

                max=feld[i];

            }

    }

    return max;

}

// Funktion für Summe


int summe(int* feld, int length)

{

    int sum=feld[1];

    for(int i=1; i<length; i++)

    {

        if (feld[i]<sum)

        {

            sum=sum+feld[i];

        }

    }

    return sum;

}

// Funktion für den Mittelwert


float mittelwert(int* feld, int length)

{

    float mit;

    mit=(float)summe(feld,length)/length;

    return mit;

}

// Ergebnisse ausgeben


void anzeigen(int* feld, int length)

{

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

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

    printf("Summe: %d\n",summe(feld,length));

    printf("Mittelwert: %.2f\n",mittelwert(feld,length));

}


void main(void)

{

    const int anzahl=100;

    int feld[anzahl];

    int random=0;

    srand ((unsigned)time(NULL));

// Array füllen


for (int i=0; i<anzahl; i++)

{

    feld[i]=(rand()%anzahl)+1;

}

// Array ausgeben


for(int i=0; i<anzahl; i++)

{

    printf("%d\t3",feld[i]);

}

printf("\n");

// Displayausgaben

anzeigen(feld,anzahl);

}

Frage, ich steh hier echt wie der Ochs vorm Berge, aber wie kann ich es machen, dass er alle Zahlen addiert, und mir später den entsprechenden Mittelwert zurück gibt? Auch die größte und Kleinste Zahl soll es ausgeben. Bin für jeden guten Tip dankbar. Und ich hoffe, das man nun den Code auch besser lesen kann.:)

Bearbeitet von netfuzzi
Geschrieben

int minimum(int* feld, int length)

{

int min=feld[1];

for(int i=1; i<length; i++)

{

if (feld[i]<min)

{

min=feld[i];

}

}

return min;

}

// Funktion für Maximum


int maximum(int* feld, int length)

{

int max=feld[0];

for(int i=1; i<length; i++)

{

if (feld[i]>max)

{

max=feld[i];

}

}

return max;

}

// Funktion für Summe


int summe(int* feld, int length)

{

int sum=feld[1];

for(int i=1; i<length; i++)

{

if (feld[i]<sum)

{

sum=sum+feld[i];

}

}

return sum;

}

Arrays beginnen mit dem 0-nthen Item und nicht mit 1 ;-)

Geschrieben

Danke für den netten Hinweis, nun erhalte ich folgende Ausgabe:

26 385 336 381 395 325 365 352 390 314

345 356 378 399 313 347 335 336 329 399

376 345 357 370 362 33 345 363 375 351

318 381 350 315 315 388 398 334 386 350

333 388 344 376 311 322 320 322 391 315

394 317 317 355 359 338 377 32 350 353

315 361 358 316 312 360 363 337 380 311

319 331 391 383 338 316 389 392 351 398

377 341 396 379 325 313 364 333 336 387

364 376 360 340 312 335 379 373 318 348

3

Minimum: 26

Maximum: 99

Summe: 4645

Mittelwert: 46.45

Drücken Sie eine beliebige Taste . . .

Geschrieben
Nein, leider nicht.

Er rechnet nicht alle 100 Zahlen zusammen, bildet demzufolge den falschen Mittelwert und mir fehlt leider immernoch die größte Zahl.

Nochmal als nachfrage...

Arrays beginnen mit dem 0-nthen Item und nicht mit 1 ;-)
Geschrieben

Sry, aber ich habe alle auf 0 gesetzt, nun zeigt mir die ausgabe immer nur den wert der 1. stelle als kleinste Zahl an.

Addiert immer noch nicht alle Zahlen des Arrays zusammen, und die größte Zahl ist die 99

Hier ein Screenshot der Ausgabe:

26 385 336 381 395 325 365 352 390 314

345 356 378 399 313 347 335 336 329 399

376 345 357 370 362 33 345 363 375 351

318 381 350 315 315 388 398 334 386 350

333 388 344 376 311 322 320 322 391 315

394 317 317 355 359 338 377 32 350 353

315 361 358 316 312 360 363 337 380 311

319 331 391 383 338 316 389 392 351 398

377 341 396 379 325 313 364 333 336 387

364 376 360 340 312 335 379 373 318 348

3

Minimum: 26

Maximum: 99

Summe: 4645

Mittelwert: 46.45

Drücken Sie eine beliebige Taste . . .

Geschrieben

Ich finde den Fehler nicht, habe das if schon entfernt, dennoch komme ich nicht weiter.

Ich danke für die vielen Tipps.

Habt Ihr noch einen Denkanstoß für mich? Ich stecke fest

Geschrieben

Habe Ihn heut Morgen komplett neu geschrieben.

#include <stdio.h>

#include <stdlib.h>

#include <time.h>


int summe(int* feld,int laenge)

{

	int s=0;

	for (int i=0;i<laenge;i++) s=s+feld[i];

	return s;

}


float mittelwert(int* feld,int laenge)

{

	float mw=0;

	mw=(float)summe(feld,laenge)/laenge;

	return mw;


}


int maximum(int* feld, int laenge)

{

	int max=feld[0];

	for (int i=1;i<laenge;i++) if (feld[i]>max) max=feld[i];

	return max;

}


int minimum(int* feld, int laenge)

{

	int min=feld[0];

	for (int i=1;i<laenge;i++) if (feld[i]<min) min=feld[i];

	return min;

}


void anzeigen(int* feld, int laenge, int sum, float mw, int max, int min)

{

	printf("Die Erzeugten Zufallszahlen sind : \n\n\n");

	for (int i=0;i<laenge;i++) printf("%d  ",feld[i]);

	printf("\n\n\nDie Summe ist : %d\n",sum);

	printf("Der Mittelwert ist : %.2f\n",mw);

	printf("Maximum ist :  %d\n",max);

	printf("Minimum ist :  %d\n",min);


	printf("\n\n\n");

}


void main (void)

{

	const int anzahl=100;

	int zf[anzahl];

	int sum=0,mw=0,max=0,min=0;

	srand((unsigned)time(NULL));


	for (int i=0;i<anzahl;i++)	zf[i]=rand()%100 + 1;


	sum=summe(zf,anzahl);

	mw=mittelwert(zf,anzahl);

	max=maximum(zf,anzahl);

	min=minimum(zf,anzahl);


	anzeigen(zf,anzahl,sum,mw,max,min);



}

Stand gestern echt auf der Leitung.

Habe mir heut früh Gedanken gemacht, und siehe da, es funktioniert.:):):)

Nochmals vielen Dank für Eure Mühen, aber es war gut, dass ich mir mal Gedanken gemacht habe.

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...