PDA

View Full Version : [C] Chi mi aiuta a vedere che sbaglio?


stgww
16-02-2007, 19:01
Ciao, sono sempre io:D
Mi aiutate a vedere perchè sbaglio a far venire un programma?
Allora: l'utente deve inserire 3 numeri e il computer li deve disporre in ordine crescente; bisogna usare una variabile d'appoggio
Ecco cosa ho fatto io
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int n1, n2, n3, app;
printf("Inserisci primo numero\n");
scanf("%i", &n1);

printf("Inserisci secondo numero\n");
scanf("%i", &n2);

printf("Inserisci terzo numero\n");
scanf("%i", &n3);

if (n1>n2){
n1=app;
n1=n1;
n2=app;
}
if (n2>n3){
n2=app;
n3=n2;
n3=app;
}
if (n3>n1){
n3=app;
n1=n3;
n1=app;
}

printf("i numeri ordinati sono %i,\n"); n1, n2, n3;



system("PAUSE");
return 0;
}

E questo è uno, poi vediamo glia altri:D
Grazie

stgww
16-02-2007, 19:33
nella speranza che prima o poi qualcuno mi aiuti ecccone un'altro:
#include <stdio.h>
#include <stdlib.h>


int main(int argc, char *argv[])
{
int n, par, disp;
char risp;

par=0;
disp=0;

do{
printf("\nInserisci un numero intero\n");
scanf("%i", &n);

if (n%2==0){
par++;
}
else
disp++;

printf("Vuoi inserire un altro numero? s/n\n");
risp=getche();
}
while(risp=='s');

printf("I numeri pari sono: %i\n"), par;
printf("I numeri dispari sono: %i\n"), disp;








system("PAUSE");
return 0;
}

grazie

stgww
16-02-2007, 20:50
raga? nessuno? io sono in panico!!!!

andbin
16-02-2007, 20:59
Nel primo sono sbagliate le assegnazioni per lo scambio (ad esempio fai n1=n1; o non usi app come temporaneo) e poi è sbagliata pure la sequenza dei test. Devi prima comparare n1>n2 poi n1>n3 e poi n2>n3. Altrimenti non potranno mai essere ordinati.

Il secondo mi sembra corretto.
EDIT-1: Le due printf finali non hanno una sintassi corretta.
EDIT-2: La funzione scanf lascia il \n nel buffer, quindi il programma termina subito senza richiedere s/n.

stgww
16-02-2007, 21:46
Nel primo sono sbagliate le assegnazioni per lo scambio (ad esempio fai n1=n1; o non usi app come temporaneo) e poi è sbagliata pure la sequenza dei test. Devi prima comparare n1>n2 poi n1>n3 e poi n2>n3. Altrimenti non potranno mai essere ordinati.

Il secondo mi sembra corretto.
EDIT-1: Le due printf finali non hanno una sintassi corretta.
EDIT-2: La funzione scanf lascia il \n nel buffer, quindi il programma termina subito senza richiedere s/n.

Mi spieghi la sintassi che dovrebbero avere?
Grazie ancora

andbin
16-02-2007, 21:52
Mi spieghi la sintassi che dovrebbero avere?
Grazie ancoraprintf("I numeri pari sono: %i\n"), par;

va:
printf("I numeri pari sono: %i\n", par);

A dire il vero non è propriamente un errore di sintassi ma di semantica. L'espressione che hai messo compila (e potrebbe segnalare un warning) ma non dà il risultato aspettato.

stgww
16-02-2007, 23:07
printf("I numeri pari sono: %i\n"), par;

va:
printf("I numeri pari sono: %i\n", par);

A dire il vero non è propriamente un errore di sintassi ma di semantica. L'espressione che hai messo compila (e potrebbe segnalare un warning) ma non dà il risultato aspettato.

Grazie del tuo aiuto ora funziona tutto, speriamo che riesca domani a non sbagliare niente nella prova