Programmablauf durch Eingabe vom Benutzer unterbrechen?



  • Hallo,

    ich weiß leider nicht wie ich es realisieren kann.

    Aufgabenstellung:
    Geben Sie das Ergebnis der Berechnung auf dem Bildschirm aus. Das Rechteck und das Quadrat wird
    auf dem Bildschirm gezeichnet. Verwenden Sie zum Zeichnen der einzelnen Punkte das Sternchen. [
    RechteckSternchen() und QuadratSternchen() ] *

    "Das Programm wird solange ausgeführt, bis der Benutzer es durch eine Eingabe eines bestimmten Wertes abbricht."
    Aufgabenstellung Ende....

    Ich habe das Programm soweit fertig, und habe die Zeichnung des Quadrats bzw. Sterchens auf 50 Einheiten begrenzt.

    Allerdings wäre es besser wenn ich das wie in der Aufgabenstellung beschrieben manuell während des Programmablaufs abbrechen könnte.
    Wie kann ich das machen?

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int main(void) {
    
    	float radius, Kreisumfang, Kreisflaeche;
    	int hoehe, breite, laenge;
    	int Rechteckumfang, Rechteckflaeche, Quadratumfang, Quadratflaeche;
    	int auswahl;
    	int i;
    	int j;
    
    	printf("Was möchten Sie berechnen?\n");
    	printf("Drücken Sie nachfolgend eine Taste zur Auswahl:\n");
    	printf("0 für Abbruch\n1 für Kreis\n2 für Rechteck\n3 für Quadrat\n");
    	scanf("%i", &auswahl);
    
    	switch(auswahl)
    	{
    
    	case 0:{
    		printf("Abbruch durch Benutzer");
    	} 	break;
    
    	case 1:{
    		printf("Geben Sie den Radius in meter ein:\n");
    		scanf("%f",&radius);
    		Kreisumfang=(2*(M_PI)*radius);
    		Kreisflaeche=((M_PI)*(radius*radius));
    		printf("Kreisumfang in m: %0.2f\n", Kreisumfang);
    		printf("Kreisflaeche in m²: %0.2f\n", Kreisflaeche);
    
    	}; break;
    
    	case 2:{
    		printf("Geben Sie die Höhe in meter ein:\n");
    		scanf("%i", &hoehe);
    		printf("Geben Sie die Breite in meter ein:\n");
    		scanf("%i", &breite);
    		Rechteckumfang=(2*(hoehe+breite));
    		Rechteckflaeche=(hoehe*breite);
    		printf("Rechteckumfang in m: %i\n", Rechteckumfang);
    		printf("Rechteckfläche in m²: %i\n", Rechteckflaeche);
    
    		for(i = 0; i < hoehe; i++){
    			for(j = 0; j < breite; j++){
    
    				if(laenge>50 || breite>50) break;
    
    				printf("*");
    			}
    			printf("\n");
    		}
    	}; break;
    
    	case 3:
    	{
    		printf("Geben Sie die Seitenlänge in meter ein:\n");
    		scanf("%i",&laenge);
    		Quadratumfang=(4*laenge);
    		Quadratflaeche=(laenge*laenge);
    		printf("Quadratumfang in m:%i\n", Quadratumfang);
    		printf("Quadratfläche in m²: %i\n", Quadratflaeche);
    
    		for(i = 0; i < laenge; i++){
    					for(j = 0; j < laenge; j++){
    
    						if(laenge>50) break;
    
    						printf("*");
    					}
    					printf("\n");
    				}
    	}; break;
    
    	default: printf("Fehler!\nEingabe einer Zahl von 0 bis 3!");
    		break;
    	}
    	return 0;
    }
    


  • Frost1989 schrieb:

    Verwenden Sie zum Zeichnen der einzelnen Punkte das Sternchen. [RechteckSternchen() und QuadratSternchen() ] *

    Das klingt ein wenig so, als Du auch Funktionen definieren sollst, nicht?



  • Dein Programm läuft einmal durch.
    Es soll aber erst beendet werden, wenn der Nutzer das wünscht.

    Das hat hat auch nichts mit den 50 tun tun.

    Und dein if(laenge>50 || breite>50) break; steht an einer sehr merkwürdigen Stelle.



  • ich würde an Stelle von if(laenge>50 || breite>50) break; einfach überprüfen, ob länge bzw. breite größer als ein Maximalwert sind und dann einfach auf diesen Maximalwert setzen.

    Der code wird dann kürzer, übersichtlicher und ist einfacher zu verändern. Letzteres ist hier vielleicht nicht so wichtig, aber wenn du irgendwann mal 10 solche Schleifen hast und jedesmal suchen musst, wo jetzt diese 50 ist, wirst du irgendwann wahnsinnig.


Anmelden zum Antworten