Errore negli Esercizi in c

di il
7 risposte

Errore negli Esercizi in c

Salve a tutti,

Sono nuovo in questo forum, ma sono principiante nella programmazione.

01) Dati in input 3 numeri interi, stampare la loro somma solo se sono tutti compresi tra 4 e 10.
02) Dati in input 2 numeri reali, stampare il loro prodotto (con sole 3 cifre dopo la virgola) solo se è pari.
03) Dati in input 3 numeri interi, trovare il minimo e il massimo.

1 esercizio svolto:

// 01) Dati in input 3 numeri interi, stampare la loro somma
//     solo se sono tutti compresi tra 4 e 10.

#include<stdio.h>
#include<stdlib.h>

int main() {

	// Blocco Dichiarazioni
	int a, b, c;	//Riga Input
	int x;	//Riga Outupt

	//Blocco Input Dati

		printf("\nInserisci il 1°valore: ");
		scanf("%d",&a);
		if ( a >= 4 && a <= 10);

	printf("\nInserisci il 2°valore: ");
	scanf("%d",&b);

	printf("\nInserisci il 3°valore: ");
	scanf("%d",&c);

	//Blocco Calcoli
	x = ( a + b + c );


	//Blocco Stampe
	printf("\n( %d + %d + %d ) = %d\n\n",a, b, c, x);
}
Esercizio 2:

// 02) Dati in input 2 numeri reali, stampare il loro prodotto
//     (con sole 3 cifre dopo la virgola) solo se è pari.


#include<stdio.h>
#include<stdlib.h>

int main() {

	// Blocco Dichiarazioni
	float a, b;	//Riga Input
	float x;	//Riga Outupt
	float restoA, restoB; // Riga Resto di 2

	//Blocco Input Dati
	printf("\nInserisci il 1°valore: ");
	scanf("%f",&a);

	printf("\nInserisci il 2°valore: ");
	scanf("%f",&b);

	//Blocco Calcoli
	restoA = a % (float)2;
	restoB = b % (float)2;
	if ( restoA != 0 || restoB !=0)
		x = a * b;
	else
		printf("\n Non è pari");

	//Blocco Stampe
	printf("\n%f * %f = %.3f\n\n",a, b, x);
}
Esercizio 3:


// 04) Dati in input 3 numeri interi, trovare il minimo e il massimo.


#include<stdio.h>
#include<stdlib.h>

int main() {

	// Blocco Dichiarazioni
	int a, b, c;	//Riga Input
	int Min, Max;	//Riga Outupt


	//Blocco Input Dati
	printf("\nInserisci il 1° valore: ");
	scanf("%d",&a);

	printf("\nInserisci il 2° valore: ");
	scanf("%d",&b);

	printf("\nInserisci il 3° valore: ");
	scanf("%d",&c);

	//Blocco Calcoli
	if ( a < b ) {
		Max = b;
		min = a;
	}
	else {
		Min = b;
		Max = a;
	}
	else if ( b < c ) {
		Max = c;
		Min = b;
	}
	else {
		Min = c;
		Max = b;
	}

	//Blocco Stampe
	printf("\nMax = %d e Min = %d\n\n",Max, Min);
}
Mi potete aiutare a correggere tali esercizi.

Grazie

7 Risposte

  • Re: Errore negli Esercizi in c

    1°) Come per a, controlla pure per b e c che siano tra 4 e 10. (Ricorda di usare le parentisi graffe con gli if() )


    2°) Potresti fare la moltiplicazione e vedere dopo se il risultato è pari o dispari. Se è pari stampi, altrimenti non fai nulla (o avvisi che il risaultato è dispari)


    3°) Se usi l'approccio che hai scelto nella tua soluzione, devi poi successivamente confrontare pure a e c tra di loro.
  • Re: Errore negli Esercizi in c

    In genere si posta un solo problema per thread e si spiega quello che succede, gli errori che si hanno o i malfunzionamenti.

    Così il thread diventa confuso ...
  • Re: Errore negli Esercizi in c

    Esercizio 1 : ( continua a non funzionare )
    Provate anche voi il codice e guardate che non dà nessun risultato.
    
        // 01) Dati in input 3 numeri interi, stampare la loro somma
        //     solo se sono tutti compresi tra 4 e 10.
    
        #include<stdio.h>
        #include<stdlib.h>
    
        int main() {
    
           // Blocco Dichiarazioni
           int a, b, c;   //Riga Input
           int x;   //Riga Outupt
    
           //Blocco Input Dati
           if ( a >= 4 & a <= 10) {
           printf("\nInserisci il 1°valore: ");
           scanf("%d",&a);
           }
    
           if ( b >= 4 & b <= 10) {
           printf("\nInserisci il 2°valore: ");
           scanf("%d",&b);
           }
    
           if ( c >= 4 & c <= 10) {
           printf("\nInserisci il 3°valore: ");
           scanf("%d",&c);
           }
    
           //Blocco Calcoli
           x = ( a + b + c );
    
    
           //Blocco Stampe
           printf("\n( %d + %d + %d ) = %d\n\n",a, b, c, x);
        }
    
    Esercizio 2: ( non funziona )
    
        // 02) Dati in input 2 numeri reali, stampare il loro prodotto
        //     (con sole 3 cifre dopo la virgola) solo se è pari.
    
    
        #include<stdio.h>
        #include<stdlib.h>
    
        int main() {
    
           // Blocco Dichiarazioni
           float a, b;   //Riga Input
           float x;   //Riga Outupt
    
           //Blocco Input Dati
           printf("\nInserisci il 1°valore: ");
           scanf("%f",&a);
    
           printf("\nInserisci il 2°valore: ");
           scanf("%f",&b);
    
           //Blocco Calcoli
           (int)x = (int)a * (int)b;
    
           if ( x % 2 == 0 ) {
              printf("\nIl numero è pari");
           }
           else {
              printf("\nIl numero non è pari");
           }
    
           //Blocco Stampe
           printf("\n%f * %f = %.3f\n\n",a, b, x);
        }
    

    Ho fatto delle modifiche, ma ancora non funziona. Perchè? dove sbaglio ?
  • Re: Errore negli Esercizi in c

    Per il primo esercizio, che senso ha fare prima il controllo e poi l'input?

    Secondo logica, ti pare corretto confrontare prima un numero che non hai ancora inserito??

    Per il secondo, l'ultima parte dovrebbe essere
    
           a = (int)a;
           b = (int)b;
           x = a * b;
    
           if ( (int)x % 2 == 0 ) {
              printf("\nIl numero è pari");
    		  printf("\n%f * %f = %.3f\n\n",a, b, x);
           }
           else {
              printf("\nIl numero non è pari");
           }
    
  • Re: Errore negli Esercizi in c

    Per il terzo esercizio, confronti prima i primi due valori (a e b) e assegni a max il valore massimo tra questi, e a min il minimo.
    poi confronti max e min con l'ultimo numero (c): se max < c allora c è il numero massimo, oppure se min > c allora c è il numero minimo.
    tradotto in codice (che potresti capire meglio):
    if (a < b)
    {
    	max = b;
    	min = a;
    }
    else
    {
    	max = a;
    	min = b;
    }
    
    if (max < c)
    	max = c;
    	
    if (min > c)
    	min = c;
    	
    // da questo punto in poi avrai il minimo e il massimo valore salvati rispettivamente in min e max
    
  • Re: Errore negli Esercizi in c

    Aggiungo a quanto scritto da Oregon..
    L'operatore AND è la doppia E commerciale
    
     if ( a >= 4 && a <= 10)
     non
      if ( a >= 4 & a <= 10)
    
  • Re: Errore negli Esercizi in c

    Ci sono tanti errori di logica e di sintassi, probabilmente le basi vanno studiate ancora ... un po' più di applicazione sui libri per capire cosa si scrive non farebbe male ...
Devi accedere o registrarti per scrivere nel forum
7 risposte