Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

C Programm

Empfohlene Antworten

Veröffentlicht

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.

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

}

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


#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


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

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

Nein, leider nicht.

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

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

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

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

ja,so sollte es sein. Alle 100 Zahlen sollen addiert werden. Die Berechnung des Mittelwertes passt. Nur es werden nicht alle Zahlen addiert.:(

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.