Newsgroup: it.comp.programmare.win32
Titolo: aiuto programma elementare!!!

Ciao sto studiando c e devo fare un programma veramente facile ma il
compilatore mi dice che c'è un errore...
Mi sono comunque fatto prima il mio bel diagramma di flusso.
Esercizio: Scrivere un programma in C che dati 3 numeri interi
differenti li stampi in ordine crescente
il mio codice:
Da notare che dopo un qualsiasi cilco if associo al valore più alto
"x", a quello intermedio "y", e a quello più basso "z".
#include <stdio.h>
main()
{
      int a,b,c,x,y,z;
      printf("inserisci il primo numero = ");
      scanf("%d",&a);
      printf("inserisci il secondo numero = ");
      scanf("%d",&b);
      printf("inserisci il terzo numero = ");
      scanf("%d",&c);
      if (a >= b)
         if (a >= c)
             a = x;
             if (b >= c)
                 b = y;
                 c = z;
             else
                 c = y;
                 b = z;
         else
             c = x;
             a = y;
             b = z;
      else
          if (b >= c)
              b = x;
              if (a >= c)
                  a = y;
                  c = z;
              else
                  c = y;
                  a = z;
          else
              c = x;
              b = y;
              a = z;
printf("%d %d %d", x,y,z);
system("pause");
}
Penso che l'errore stia nel fatto che dopo un if ci va sempre un else
ma non riesco a modificarlo.

 
Stai programmando in C o in Python?
perchè se stai programmando in C, i blocchi vanno scritti tra parentesi 
graffe.
es:
       if (a >= b) {
           if (a >= c) {
               a = x;
               if (b >= c) {
                   b = y;
                   c = z;
               } else {
                   c = y;
                   b = z;
               }
ecc. ecc.
LP

Grazie mille!
Sul mio libro non metteva nessuna graffa..adesso almeno lo compilo e
gira ma mi da dei risultati strani...immetto 3 numeri e me ne
restituisce 3 completamente diversi di valore decisamente maggiore!!!


perchè hai sbagliato gli assegnamenti.
Quello che hai scritto è un programma che carica i dati in a,b,c.
Fa delle verifiche su a,b,c e poi dice che a,b,c sono uguali a x,y,z
(l'assegnamento è "a <= y" o "c <= z". Per fare quello che penso volevi 
tu, era y=a, o z=c)
Stampa x,y,z.
In pratica, x,y,z non vengono mai inizializzate e quindi ti becchi 
numeri a capocchia.
LP
PS: Se hai copiato l'esempio dal libro, verifica anche gli altri esempi. 
Se anche quelli sono cannati, posso tranquillamente dirti che il libro 
fa letteralmente schifo.

 restituisce 3 completamente diversi di valore decisamente maggiore!!!
Perchè tu leggi a, b e c ... poi fai i confronti su questi ... ma quando
assegni i valori "più alto", "medio" e "più basso" non li assegni ad x, y, z
che sono le 3 variabili che stampi alla fine :)
Quindi ciò che stampi sono 3 variabili "senza valore" (con C hanno un valore
"non definito", non assegnato)
Ciauz! :)
--
Virtual

ok grazie a tutti delle risposte. Penso che risolverò mettendo dei
prinf in ogni ciclo if senza usare x y e z, anche se come soluzione mi
sembrava migliore...


è sufficiente invertire le assegnazioni negli if.
LP

Ti ringrazio ancora, adesso funziona alla grande!!! è che sono
all'inizio....penso che si veda dalla difficoltà dei programmi :)
Se avessi ancora problemi posso continuare a postare?
Ciao, buona giornata
Edoardo

 Se avessi ancora problemi posso continuare a postare?
Ma sono compiti di scuola? 
-- 
Luc


E sopratutto, ma che razza di scuola č se non insegnano nemmeno che bisogna 
mettere le parentesi graffe?
Bye,
-- 
Carmine ( 
pikachu...@gmail.com
 (Togli la scritta NOSPAM) )
Webmaster di The Total Site 4 : 
http://www.thetotalsite.it
MariokartDS Codice Amico: 532639027909 - CarmineC in MarioKartDS
"Un problema non č un problema se puņ essere risolto"