Esercizio base in C

di il
2 risposte

Esercizio base in C

Salve a tutti,
ho iniziato da poco a programmare e ho iniziato a fare degli esercizi base. La traccia è questa:
Il biglietto per entrare ad un parco di divertimenti costa 30€ a persona. Il biglietto è ridotto del 20% per i ragazzi fino a 12 anni di età e per gli anziani oltre i 60 anni.
Inserita dall’esterno l’età, visualizzare l’importo da pagare
.

Ora ho fatto il mio codice ma come risultato mi dà sempre 30. E non capisco perchè. Il codice è questo:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>

main (){
	int ticket=30;
	int age;
	
	printf("Put the age of a single person, please. \n");
	scanf("%d", &age);
	
	if (age<=12 && age>=60)  
	{
		ticket=ticket-(30*20)/100;
		printf("The prize of the ticket is %d", ticket);
    } 
	
	else
		printf("The prize of the ticket is %d", ticket);
	
}
Qualcuno mi può spiegare dove sbaglio e se ci sono altri errori? Grazie in anticipo

2 Risposte

  • Re: Esercizio base in C

    Rifletti su questa linea

    if (age<=12 && age>=60)

    e vedi perché è sbagliata
  • Re: Esercizio base in C

    L'ho capito da solo facendo questo ragionamento:
    main (){
    	int ticket=30;
    	int age;
    	
    	printf("Put the age of a single person, please. \n");
    	scanf("%d", &age);
    	
    	if (age<=12)
    	{
    		ticket=ticket-(30*20)/100;
    		printf("The prize of the ticket is %d", ticket);
        } 
        else if (age>=60)
        {
        	ticket=ticket-(30*20)/100;
    	printf("The prize of the ticket is %d", ticket);
    	}
    	
    	else
    		printf("The prize of the ticket is %d", ticket);
    Da qui ho capito che invece dell'and (&&), in cui i due operandi devo essere entrambi veri, devo usare l'or (||), in modo tale da entrare nell'if se almeno uno dei due operandi è vero. Così ho sintetizzato il codice sopra e l'ho modificato:
    main (){
    	int ticket=30;
    	int age;
    	
    	printf("Put the age of a single person, please. \n");
    	scanf("%d", &age);
    	
    	if (age<=12 || age>=60)  
    	{
    		ticket=ticket-(30*20)/100;
    		printf("The prize of the ticket is %d", ticket);
        } 
    	
    	else
    		printf("The prize of the ticket is %d", ticket);
    	
    }
    Ho impiegato un giorno intero per capire come potessi far funzionare questo programmino e poi, per caso, mi è venuta l'illuminazione . Ti ringrazio comunque per la dritta.
Devi accedere o registrarti per scrivere nel forum
2 risposte