Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

c-Programm: "Maxima Suche"

Hallo zusammen,
ich hab die Aufgabe in C ein Programm zu schreiben, dass aus einem Array, welches mit Zufallszahlen gefüllt worden ist, die betragsmäßig größte Zahl bestimmt.
Mein Programm gibt gibt den Array noch aus, bricht aber dann ab ohne die größte Zahl auszugeben.
Und ich kann den Fehler nicht finden.
Kann mir jemand helfen?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

//Funktion für Zufallszahlen

int Zufallszahl(int iAnfang, int iEnde)
{
   int iZahl=0;

//Kontrolle ob richtiges Intervall
   
   if (iAnfang>=iEnde)
   {
      printf("Falsches Intervall:");
      printf("\n\n\t");
      printf("Die Obere Grenze ist kleiner als  die Untere Grenze!!!\n\n\n");
      exit (1);
   }

   else
   {
      if(iEnde-iAnfang>32767)
      {
   printf("Kein gueltiges Intervall!\n\n\n");
      exit (1);
      }
      else
      {iZahl=(rand()%(iAnfang-iEnde+1))+iAnfang;
      return iZahl;}
   }   
}

int iMaxima(int *iArray, int iSize)
{
   int i=0, k=0, j=0;

   for(i=0; i<iSize; i++)
   {
      if((*iArray+i)<0)
         *(iArray+i) *= (-1);
   }
   for(k=0; k<iSize; k++)
   {
      if ((*iArray+k+1)<(*iArray+k))
         j=(*iArray+k+1);
   }
return (*iArray+k+1);
}

int main()
{
   int AiArray[20]={0}, iAnfang=0, iEnde=0, r=0, s=0, t=0;
   int *ipZeiger=NULL;
      srand((unsigned)time(NULL));

   printf("Bitte den Anfang des Intervalls eingeben:  ");
      scanf(" %i", &iAnfang);
   printf("\n\nBitte den Endwert des Intervalls eingeben:  ");
      scanf(" %i", &iEnde);
   printf("\n\n");

//Befüllen des Arrays mit Zufallszahlen
      for (r=0; r<20; r++)
      {
         AiArray[r] = (Zufallszahl (iAnfang, iEnde));

      }
      printf("20 Zufallszahlen:\n\n\n");
//Ersten zehn Zufallszahlen
      for (s=0; s<10; s++)
      {
         printf("%i\t", AiArray);
      }
      printf("\n");

//Zweiten zehn Zufallszahlen
      for (s=10; s<20; s++)
      {
         printf("%i\t", AiArray);
      }

      ipZeiger=AiArray;

      t=iMaxima(*ipZeiger, 20);

      printf("Groeßte Zahl ist %i", t);

return 0;
}

Viele Dank!


Antworten zu c-Programm: "Maxima Suche":

Boah, warum denn son Pointer-gefrickel. Hat das nen bestimmten Grund (Aufgabenstellung o.ae.)?

Ohne is viel leichter:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

//Funktion für Zufallszahlen

int Zufallszahl(int iAnfang, int iEnde)
{
   int iZahl=0;

//Kontrolle ob richtiges Intervall

   if (iAnfang>=iEnde)
   {
      printf("Falsches Intervall:");
      printf("\n\n\t");
      printf("Die Obere Grenze ist kleiner als  die Untere Grenze!!!\n\n\n");
      exit (1);
   }

   else
   {
      if(iEnde-iAnfang>32767)
      {
   printf("Kein gueltiges Intervall!\n\n\n");
      exit (1);
      }
      else
      {iZahl=(rand()%(iAnfang-iEnde+1))+iAnfang;
      return iZahl;}
   }
}

int iMaxima(int *iArray, int iSize)
{
   int i=0, k=0, j=0;

   for(i=0; i<iSize; i++)
   {
      if(iArray[i]<0)
        iArray[i] *= -1;
   }
   for(k=1; k<iSize; k++)
   {
      if (iArray[k]>j)
         j=iArray[k];
   }
return j;
}

int main()
{
   int AiArray[20]={0}, iAnfang=0, iEnde=0, r=0, s=0, t=0;
   int *ipZeiger=NULL;
      srand((unsigned)time(NULL));

   printf("Bitte den Anfang des Intervalls eingeben:  ");
      scanf(" %i", &iAnfang);
   printf("\n\nBitte den Endwert des Intervalls eingeben:  ");
      scanf(" %i", &iEnde);
   printf("\n\n");

//Befüllen des Arrays mit Zufallszahlen
      for (r=0; r<20; r++)
      {
         AiArray[r] = (Zufallszahl (iAnfang, iEnde));

      }
      printf("20 Zufallszahlen:\n\n\n");
      for (s=0; s<20; s++)
      {
         printf("%i\t", AiArray[s]);
      }
      printf("\n");

      t=iMaxima(AiArray, 20);

      printf("Groesste Zahl ist %i \n", t);

return 0;
}
Und in der Maximal funktion war auch noch n logischer Fehler drin...
 

Danke.
Ja, das war schon die Aufgabenstellung, hab die Fehler aber nach langem Suchen gefunden.
Klar, deine Lösung wäre viel einfacher (und verständlicher!).
Also Danke!


« Textticker StrukturierenSuche CAD Programmierer (w/m) »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Internet-Zugriffsprogramm
Ein Internet-Zugriffsprogramm, auch Browser genannt, stellt Internetseiten für den Benutzer dar. Am bekanntesten ist der Microsoft Internet Explorer, gefolgt vom kos...

Programm
Siehe Software...

Grundstrich
Der Begriff des Grundstrichs im Bereich der Typografie, bezeichnet den senkrechten Strich der Buchstaben. Bei Schriftarten mit variabler Strichstärke, wie zum Beispi...