G
Gelöschtes Mitglied 3772
Guest
Hallo zusammen,
ich habe ein merkwürdiges Problem.
Erstmal ein Beispiel
Wenn ich diesen Code unter Windows kompiliere funktioniert die Abfrage auf Wiederholung einwandfrei, allerdings funktioniert dieser Code bei mir unter Mac OS X insofern nicht, als das er nach der Frage ob das Programm wiederholt werden soll nicht auf eine Eingabe wartet (auch schon ohne fflush() getestet, selbe Ergebnis) und direkt wieder am Kopf der DO-WHILE Schleife anfängt. An der Uni müssen wir den Borland Builder nutzen, da funktioniert es.
Aber ich würde halt gern mit meinem Macbook programmieren und da will ich nicht extra ne VM aufsetzen in der dann Windows mit dem Borlandbuilder läuft, da sträuben sich mir die Haare
Vielleicht weiß ja jemand wo das Problem liegt, und bitte die komische Formatierung erstmal nicht beachten
//edit: Ich nutze Netbeans 6.5 unter Mac OS X
//edit2: Okay, ich habe das ganze gerade mal auf meinem Server kompiliert und laufen lassen unter Archlinux mit dem gcc.
Da tritt genau das gleiche Problem auf, das die Frage auf wiederholung einfach übergangen wird
als wenn noch ein ENTER im Puffer irgendwo steht, was ja nicht sein sollte. Dafür ist ja extra das fflush(stdin);
Wirklich seltsam das es nur unter Borland so funktioniert wie es soll :-/
Vielen Dank
ich habe ein merkwürdiges Problem.
Erstmal ein Beispiel
Code:
#include<stdlib.h>
#include<iostream.h>
#include<stdio.h>
#include<math.h>
int main(void)
{
fflush(stdin); //Eingabepuffer leeren
int index;
int zahl=0;
int grenze=0;
char reset,anwendungen; //char reset fuer Programmwiederholung
int is_primzahl(int zahl);
do //Hauptschleife f¸r Programmwiederholungen
{
//system("cls"); //Bildschirm leeren
printf("\nAufgabe P7A1\n\n");
fflush(stdin);
printf("Ueberpruefung ob Zahl Primzahl ist\n");
do{
printf("\nNur eine [Z]ahl ueberpruefen, oder bis zu einer [G]renze pruefen?\n");
scanf("%c", &anwendungen);
anwendungen=toupper(anwendungen);
if(anwendungen!='Z' && anwendungen!='G'){
printf("\nUngueltige Eingabe");
}
}while(anwendungen!='Z'&& anwendungen!= 'G');
if(anwendungen=='Z')
{
fflush(stdin);
printf("\nBitte Zahl eingeben\n");
scanf("%i", &zahl);
if(is_primzahl(zahl)==0)
printf("Die Zahl %i ist keine Primzahl\n", zahl);
if(is_primzahl(zahl)==1)
printf("Die Zahl %i ist eine Primzahl\n", zahl);
}
if(anwendungen=='G')
{
fflush(stdin);
printf("\nBitte obere Grenze eingeben\n");
scanf("%i", &grenze);
printf("\n");
for(index=2;index<=grenze;index++)
{
if(is_primzahl(index)==1)
printf("%i\n", index);
}
}
/** Programm wiederholen? **/
printf("\nProgramm wiederholen? (J)a/(N)ein\n");
fflush(stdin);
scanf("%c",&reset); //Hier liegt das Problem denke ich :-/
reset=toupper(reset);
}while(reset!='N'); //Oder doch bei dem Vergleich? Vllt vergleicht ein Unix system anders als ein Windows?
fflush(stdin); //Eingabepuffer leeren
return 0;
}
int is_primzahl(int zahl)
{
int index;
for (index=2; index < zahl; index++)
if (zahl % index == 0)
return 0;
return 1;
}
Aber ich würde halt gern mit meinem Macbook programmieren und da will ich nicht extra ne VM aufsetzen in der dann Windows mit dem Borlandbuilder läuft, da sträuben sich mir die Haare

Vielleicht weiß ja jemand wo das Problem liegt, und bitte die komische Formatierung erstmal nicht beachten

//edit: Ich nutze Netbeans 6.5 unter Mac OS X
//edit2: Okay, ich habe das ganze gerade mal auf meinem Server kompiliert und laufen lassen unter Archlinux mit dem gcc.
Da tritt genau das gleiche Problem auf, das die Frage auf wiederholung einfach übergangen wird
als wenn noch ein ENTER im Puffer irgendwo steht, was ja nicht sein sollte. Dafür ist ja extra das fflush(stdin);
Wirklich seltsam das es nur unter Borland so funktioniert wie es soll :-/
Vielen Dank
Zuletzt bearbeitet von einem Moderator: