Einlesen
-
49 sollte das natürlich sein
-
Ich hab das jetzt so gemacht:
for(i=0;i<6;i++) { scanf("%d",&cZahlen[i]); while (getchar() != '\n'); if(cZahlen[i]<1 || cZahlen[i] >49) { printf("%s\n",FEHLER); i=i-1; } }
Könnte so klappen oder?
Dann würde ich gern die Zahlen hintereinander auf einer Zeile mit Abstand haben.
Wie mach ich das?
-
Erstmal solltest du für deine Zahlen ein int-Array verwenden, ansonsten sieht es schon gut aus (fehlt nur noch ein Schutz gegen doppelt verwendete Zahlen).
Zur Ausgabe:
for(i=0;i<6;++i) printf("%d\t",cZahlen[i]);//das \t im Formatstring sorgt für den Abstand printf("\n");//neue Zeile
-
Wo soll die Ausgabe hin???
-
Das mußt du wissen
Ich habe lediglich deine Aussage:
fevernova schrieb:
Dann würde ich gern die Zahlen hintereinander auf einer Zeile mit Abstand haben.
interpretiert, daß du die Zahlen hintereinander weg ausgeben wolltest.
-
dann anders...
ich möchte die Zahlenreihe nach der Eingabe nochmal zusammen und hintereinander ausgeben.
-
nach der while ein Semikolon ??? confused
die ausgabe entweder nach der while schleife oder mittendrin statt nur dabei
-
Wie kann ich nun noch überprüfen, ob die Zahl schon drin ist,
also eine Vermeidung doppelter Zahlen?
-
#include <stdio.h>
int main(int argc, char *argv[])
{
int cZahlen[6];
for(int i=0;i<6;i++)
{
scanf("%d",&cZahlen[i]);
while (getchar() != '\n');
if(cZahlen[i]<1 || cZahlen[i] >49)
{
printf("%s\n","Fehler Zehl nicht im Bereich von 1-49");
getchar();
exit(1);
i=i-1;
}
for(int f=0;f<i;f++)
{
if(cZahlen[i]==cZahlen[f])
printf("%s\n","Fehler Doppelte Zahl");
getchar();
exit(1);
}
}for(int i=0;i<6;++i)
printf("%d\t",cZahlen[i]);//das \t im Formatstring sorgt für den Abstand
printf("\n");//neue Zeile
return 0;
}So und jetzt lern mal was dazu
-
versuchs lieber damit
#include <stdio.h>
int main(int argc, char *argv[])
{
int cZahlen[6];
for(int i=0;i<6;i++)
{
scanf("%d",&cZahlen[i]);
while (getchar() != '\n');
if(cZahlen[i]<1 || cZahlen[i] >49)
{
printf("%s\n","Fehler Zehl nicht im Bereich von 1-49");i=i-1;
}
for(int f=0;f<i;f++)
{
if(cZahlen[i]==cZahlen[f])
printf("%s\n","Fehler Doppelte Zahl");}
}for(int i=0;i<6;++i)
printf("%d\t",cZahlen[i]);//das \t im Formatstring sorgt für den Abstand
printf("\n");//neue Zeile
return 0;
}
-
das i-- auch in die 2 schleife und ein break fehlt noch also
for(int f=0;f<i;f++)
{
if(cZahlen[i]==cZahlen[f])
{
printf("%s\n","Fehler Doppelte Zahl");
i--;
break;
}}
-
Hab das jetzt so realisiert:
int iZahlen[6]={0,0,0,0,0,0}; printf("\n1.Reihe - Bitte eingeben:\n"); for(int i=0;i<6;i++) { scanf("%i",&iZahlen[i]); while (getchar() != '\n'); if(iZahlen[i]<1 || iZahlen[i] >49) { printf("%s\n",FEHLER_2); i=i-1; } for(int f=0;f<i;f++) { if(iZahlen[i]==iZahlen[f]) { printf("%s\n",FEHLER_3); i=i-1; break; } } } printf("Ihre Tippreihe lautet: %i, %i, %i, %i, %i, %i.",iZahlen[0],iZahlen[1],iZahlen[2],iZahlen[3],iZahlen[4],iZahlen[5]);
Jetzt werde ich mich mal noch um das Sortieren bemühen!
-
Hier ist mein Code für die Sortierung - klappt auch einwandfrei!
int done = 0; int iWechsel; while(!done ) { done = 1; for(int i = 1; i < 7; i++) { if(iZahlen[i-1] > iZahlen[i]) { iWechsel = iZahlen[i-1]; iZahlen[i-1] = iZahlen[i]; iZahlen[i] = iWechsel; done = 0; } } } printf("Ihre Tippreihe lautet: %i, %i, %i, %i, %i, %i.",iZahlen[0],iZahlen[1],iZahlen[2],iZahlen[3],iZahlen[4],iZahlen[5]);
-
Ich hab wieder was.
In einer anderen Funktion der Klasse habe ich eine 2te manuelle Eingabe der Zahlen für eine 2te Tippreihe.Kann ich da 2x mal hintereinander das vorhin gepostete ausführen oder ist das eine Frage des Stils? Und gehts anders?
-
Ja, kannst du, ist aber unnötig - pack die ganze Eingabe lieber in eine Funktion:
void lies_tip(int*target) { //hier kommt dein Quelltext - verwendet target statt iZahlen } int main() { int tip1[6],tip2[6]; lies_tip(tip1); lies_tip(tip2); }