Dubbio du questo programma in c

gio881
salve sto partendo dalle basi per imparare a utilizzare il linguaggio c e sto svolgendo questo esercizio

scrivere un algoritmo che :
-definisce 4 variabili intere x,y,z,k
-legge due numeri in x e y da input
-assegna a z il più piccolo
-assegna a k il doppio di z
-visualizza in output z , k e il quadrato di x


io l'ho svolto così ma non sono siscuro , sbaglio qualcosa?

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

int main(){

int x , y , z, k ,c ;

printf ("inserisci un numero:");
scanf ("%d", &x);
printf("inserisci un numero:");
scanf("%d" , &y);

z=c;

if (x<z) {

    x=c;
    z=x;
    c=z;
}

if (y<z){
    y=c;
    z=y;
    c=z;
    }
k=2*z;

printf("z vale: %d\n" , z);
printf("k vale :%d\n" , k);
printf ("x vale : %d\n", x*x);

return 0;

}




grazie in anticipo!

Risposte
vict85
Mi sembra tutto corretto tranne il terzo punto. In quel punto c'è un errore grave: usare una variabile non inizializzata. Tra l'altro il codice corretto era incredibilmente più corto. Hai anche incluso una libreria inutile: stdlib (non la usi da nessuna parte) ma questo è il meno.

Per fare quel punto devi usare un if seguito da un else e nessuna variabile di supporto.

gio881
effettivamente mi sono complicato la vità basta porre che se x è minore di di z , z sarà uguale e a x o di conseguenza uguale a y

#include <stdio.h>

int main(){

int x , y , z, k ;

printf ("inserisci un numero:");
scanf ("%d", &x);
printf("inserisci un numero:");
scanf("%d" , &y);

if (x<z) z=x;
else z=y;


k=2*z;

printf("z vale: %d\n" , z);
printf("k vale :%d\n" , k);
printf ("x vale : %d\n", x*x);

return 0;

}


spero di non aver fatto altri errori , grazie per l'aiuto

JackMek
C'è un errore nella condizione dell'if
Continui ad usare una variabile non inizializzata.

Pensa bene a che confronto devi fare per capire qual è il più piccolo valore tra quelli inseriti.

gio881
così è giusto? ho modificato il valore nell'if dicendo così che tra i due valori che inserisco x e y ,se x è minore di y ,z avrà il valore di x , in caso contrario avrà il valore di y

#include <stdio.h>

int main(){

int x , y , z, k ;

printf ("inserisci un numero:");
scanf ("%d", &x);
printf("inserisci un numero:");
scanf("%d" , &y);

if (x<y) z=x;
else z=y;

k=2*z;

printf("z vale: %d\n" , z);
printf("k vale :%d\n" , k);
printf ("x vale : %d\n", x*x);

return 0;

}


grazie per l'aiuto

apatriarca
Adesso mi sembra corretto.

gio881
perfetto grazie mille!!!!!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.