Mein erstes Array Programm

  • Themenstarter Themenstarter HaSeL3000
  • Beginndatum Beginndatum
H

HaSeL3000

Hallo vielleicht kann mir einer beim Programm helfen :& .. ?

ich lerne atm die Programmiersprache C bevor ich in C++ einsteige und hab versucht mein erstes Arrayprogramm zum starten zu bringen . Das Programm soll aus 10 Werten den groeßten und den kleinsten Wert dann auspucken und ansagen an welcher Stelle sie vom Array stehen ...

hier mein Quellcode :

#include <stdio.h>

int main()
{

int x,min=1000,max=0,Feld[10],min_stelle,max_stelle;

printf("\n\tArray Programm");
printf("\n\t--------------");
printf("\n\n\n\tBitte geben sie 10 Zahlen ein ");
for(x=0,x<=9,x++)
{
scanf("%i",&x);
if(Feld[x]<min)
{
Feld[x]=min_stelle;
min_stelle=x;
}
if(Feld[x]>max)
{
Feld[x]=max_stelle;
max_stelle=x;
}
}
printf("\n\n\tDie groesste Zahl lautet %i und ist an Stelle %i .",max,max_stelle);
printf("\n\n\tDie kleinste Zahl lautet %i und ist an Stelle %i .",min,min_stelle);
}


Problem besteht das man nicht mal die 10 Werte der Schleife angeben kann und weiss nicht wieso ... angeblicher Error besteht darin das ; vor ) fehlt (bei der Zaehlschleife) und bei der Schleife gehoert halt kein ; hinter darum bitte ich um Rat und Hilfe


mfg HaSeL3000
 
Hi.

Bitte verwende die Code-Tags für deine Codeschnipsel und füge die vollständigen Fehlermeldungen hier ein.

Eine for Schleife hat folgendes Schema:
C++:
for (init ; test ; änderung)  ...
Beachte die Semikola!

Gruß
 
Oh :D hab ich garnet bemerkt :O das ich da kommas hingesetzt habe anstatt semikolas =) danke dir vielmals
 
Okey 2. Frage xD sry aber muss sein :& , da das Programm immer abbricht :/ kann nun halt 1 Zahl eingeben von 10 denn dann schmirrt die exe ab und es kommt ein Debug error.

Run-Time Check Failure #3 - The variable 'min_stelle' is being used without being initialized.

Der fehler muss hier sein ...

if(Feld[x]<min)
{
Feld[x]=min;
min_stelle=x+1;
}
if(Feld[x]>max)
{
Feld[x]=max;
max_stelle=x+1;
}

aber hab schon vieles rumgetestet und komm einfach net drauf hoffe auf eine baldige antwort wie ich das Programm zum laufen krieg

PS: Kompletter Quellcode steht oben nur das die Kommas nun semikolas sind :)

mfg

HaSeL3000
 
Bitte verwende die Code-Tags für deine Codeschnipsel und füge die vollständigen Fehlermeldungen hier ein.

Du verwendest mehrere uninitialisierte Variabeln, d.h. Variablen ohne Wert.
Z.B greifst du bei Feld[x]<min auf ein Array zu, das es nicht gibt.
 
Wenn du den Code aus dem zweiten Beitrag verwendest
C++:
        if(Feld[x]<min)
        {
            Feld[x]=min;
            min_stelle=x+1;
        }
        if(Feld[x]>max)
        {
            Feld[x]=max;
            max_stelle=x+1;
        }
und nicht den aus dem ersten Beitrag, dann kommen auch keine Fehler...
 
Zuletzt bearbeitet von einem Moderator:
So ist es, der Compiler sagt es ja auch. Du verwendest uninitialisierte Variablen, dazu zählen dein Array, und deine min- und max_stelle Variablen.

Das bedeutet, das in den Varaiblen Zufallswerte stehen, und darüber beschwert sich der Compiler.

Sofern du auf bestimmte Werte aus Variablen überprüfen willst, müssen diese initialisiert sein.
Du kannst das nur weglassen, wenn sich eine Wertzuweisung erst im späterem Verlauf des Programms ergibt, darfst dann aber bis zu dem Zeitpunkt nicht auf den Wert prüfen.

Mfg
Dragonate
 
Lass am Besten mal das Array weg.
Achtung: Du verwendest ein int, das von 0 bis 9 zählt, weist aber gleichzeitig immer einen neuen Wert zu. D.h. das Programm will immer Eingaben, bis man 9 eingibt.
Hier mal ein Beispiel, es anders zu lösen:
C++:
#include <stdio.h>

int main()
{

    int x,min=1000,max=0,min_stelle,max_stelle;

    printf("\n\tArray Programm");
    printf("\n\t--------------");
    printf("\n\n\n\tBitte geben sie 10 Zahlen ein ");
    for(int i = 0; i<10; i++)
    {
        scanf("%i",&x);
        if(x<min)
        {
            min=x;
            min_stelle=i+1;
        }else if(x>max)
        {
            max=x;
            max_stelle=i+1;
        }
    }
    printf("\n\n\tDie groesste Zahl lautet %i und ist an Stelle %i .",max,max_stelle);
    printf("\n\n\tDie kleinste Zahl lautet %i und ist an Stelle %i .",min,min_stelle);
    return 0;
}
 
Zuletzt bearbeitet von einem Moderator:
:D danke schonma an alle aber da ich nicht locker lassen konnte :& es mit einen array zu loesen und loesen wollen habe ich mich nochma nachdenklich drangesetzt und das ist hierbei rausgekommen

#include <stdio.h>
#include <windows.h>

int main()
{

int x,min=1000,max=0,Feld[10],min_stelle,max_stelle,max_doppel,min_doppel;

printf("\n\tArray Programm");
printf("\n\t--------------");
printf("\n\n\n\tBitte geben sie 10 Zahlen ein \n\n");
for(x=0;x<=9;x++)
{
printf("\tStelle %i-> ",x+1);
scanf("%i",&Feld[x]);
if(Feld[x]<min)
{
min=Feld[x];
min_stelle=x+1;
}
if(Feld[x]>max)
{
max=Feld[x];
max_stelle=x+1;
}
if(Feld[x]<=min)
{
min_doppel=x+1;
}
if(Feld[x]>=max)
{
max_doppel=x+1;
}
}
printf("\n\n\tDie groesste Zahl lautet %i und ist an Stelle %i und %i. ",max,max_stelle,max_doppel);
printf("\n\n\tDie kleinste Zahl lautet %i und ist an Stelle %i und %i. ",min,min_stelle,min_doppel);
printf("\n\n\t");
system("PAUSE");
}


zitat : Es funktioniert :)

trotz allem vielen dank wie man es haette auch loesen koennen :O

PS: Thread kann geschlossen werden
 
Zurück