Forum
Tipps
News
Menu-Icon

Verbesserungsideen? Progamm funktioniert erscheint mir aber zu kompliziert.

Hallo!

Eigentlich funktioniert das Programm, aber es erscheint mir viel zu kompliziert. Ich bin mir sicher es gibt bessere Lösung für das Problem:

Erstellen Sie ein Programm, das eine vom Benutzer zuvor gewählte Anzahl von bis zu 100 Integerzahlen von der Tastatur einließt und anschließend prüft ob alle Zahlen zwischen 10 und 20 in dem Array vorkommen. Die Laufzeitkomplexität des Programms sollte linear dabei sein.



Code:


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

int main()
{
   int i,j,k, z=0;
   int array[100];
   int array11[11];
   printf("Geben Sie die Anzahl der Zahlen ein, die Sie eingeben wollen (maximal 100): ");
   scanf("%d", &i);
   
   for(j=0;j<i;j++)
      {
      printf("Bitte geben Sie eine Zahl ein: ");
      scanf("%d", &array[j]);
      }
   for (j=0;j<i;j++)
      {
      if(array[j] == 10)
         array11[0] = 1;
      else if (array[j] == 11)
         array11[1] = 1;
      else if (array[j] == 12)
         array11[2] = 1;
      else if (array[j] == 13)
         array11[3] = 1;
      else if (array[j] == 14)
         array11[4] = 1;
      else if (array[j] == 15)
         array11[5] = 1;
      else if (array[j] == 16)
         array11[6] = 1;
      else if (array[j] == 17)
         array11[7] = 1;
      else if (array[j] == 18)
         array11[8] = 1;
      else if (array[j] == 19)
         array11[9] = 1;
      else if (array[j] == 20)
         array11[10] = 1;
      }
      for(k=0; k<10; k++)
         {
         if(array11[k] == 1)
            z++;
         }
      if(z==10)
         printf("Es sind alle Zahlen 10 bis 20 enthalten");
      else
         printf("Es sind nicht alle Zahlen enthalten");
      
      for (j=0;j<i;j++)
      {
         printf(" %d", array[j]);
      }
   return 0;
}

Mit freundlichen Grüßen
Daniel


Antworten zu Verbesserungsideen? Progamm funktioniert erscheint mir aber zu kompliziert.:

int main( void )
{
int i,j[11], k;

printf( "Wieviele Zahlen? " );
scanf( "%d", &i );
for( ; i > 0; --i )
{
printf( "Zahl? " );
scanf( "%d", &k );
if( k >= 10 && k <= 20 )
{
j[k-10] = 1;
}
}

for( i = k = 0; i < (sizeof(j)/sizeof(int)); ++i )
{
k += j[i];
}
printf( "Sie haben %s Zahlen zwischen 10 und 20 eingegeben!\n", k == (sizeof( j ) / sizeof( int )) ? "alle" : "nicht alle" );
return 0;
}
:P:P:P:P:P:P:P:P:P:P:P:P

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi!

Besten Dank für die schnelle Antwort! Das ist wirklich super schön kurz! Werde das jetzt versuchen zu verstehen.

Grüße
Daniel




« Aufgabe für alle 1337 Haxx0rsVisual c++ Zahlen aus text einlesen »
 

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

Benutzerkonto
Windows bietet die Möglichkeit Benutzerkonten, kurz Nutzerkonten, anzulegen. Auf diese Weise kann ein Rechner von mehreren Nutzern verwendet werden.   Bei jed...