Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

programma in C per ordinamento numeri

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto Utentefairyvilje

0
voti

[1] programma in C per ordinamento numeri

Messaggioda Foto Utentehuyol » 22 set 2016, 1:45

ciao a tutti,
questo dovrebbe essere un programma che acquisisce , in sequenza temporale, tre numeri interi a, b, c confrontando dapprima a con b ed assegnando il maggiore dei due ad r, successivamente confronta c con r e, supponendo che c sia il maggiore tra i tre numeri....dovrebbe stampare "R vale_valore di c.......".
Invece il programma si limita a stampare ed acquisire i tre numeri digitati. :?: O_/

Codice: Seleziona tutto
franco@HP-15-Notebook-PC:~/Scrivania$ gcc TRENUMVAR.c -o trenumvar
franco@HP-15-Notebook-PC:~/Scrivania$ ./trenumvar
QUESTO E' UN PROGRAMMA CHE ACQUISISCE TRE NUMERI INTERI a, b, c, CON c>a>b E RESTITUISCE IIL VALORE DI c ALLA VARIABILE DATA r
digita il numero a:
1
digita il numero b:
2
digita il numero c:
3
franco@HP-15-Notebook-PC:~/Scrivania$


Codice: Seleziona tutto
//PROGRAMMA CHE ACQUISISCE IL MAGGIORE TRA TRE NUMERI E LO ASSEGNA ALLA VARIABILE DATA r
#include <stdio.h>

main ()

{
int a, b, c, r;


printf ("QUESTO E' UN PROGRAMMA CHE ACQUISISCE TRE NUMERI INTERI a, b, c, CON c>a>b E RESTITUISCE IIL VALORE DI c ALLA VARIABILE DATA r\n");
printf("digita il numero a: \n");
scanf ("%d", &a);

printf ("digita il numero b: \n");
scanf ("%d", &b);

printf ("digita il numero c: \n");
scanf ("%d", &c);

if (a>b)
{
  r = a;
}
 
   else if (b>a)
             {
         r = b;
             }

      else if (c>r)
                        {
           printf ("r vale : %d   ", c);
         }
return 0;
}
Ultima modifica di Foto Utentealev il 22 set 2016, 6:17, modificato 1 volta in totale.
Motivazione: Chiarito titolo
Avatar utente
Foto Utentehuyol
120 2 5
Frequentatore
Frequentatore
 
Messaggi: 203
Iscritto il: 30 gen 2011, 19:24

0
voti

[2] Re: programma in C per ordinamento numeri

Messaggioda Foto UtenteGuidoB » 22 set 2016, 9:34

Togli l'else davanti all'ultimo if
Big fan of ƎlectroYou!       Ausili per disabili e anziani su ƎlectroYou
Caratteri utili: À È É Ì Ò Ó Ù α β γ δ ε η θ λ μ π ρ σ τ φ ω Ω º ª ² ³ √ ∛ ∜ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ∃ ∄ ∆ ∈ ∉ ± ∓ ∾ ≃ ≈ ≠ ≤ ≥
Avatar utente
Foto UtenteGuidoB
17,8k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 2809
Iscritto il: 3 mar 2011, 16:48
Località: Madrid

0
voti

[3] Re: programma in C per ordinamento numeri

Messaggioda Foto Utentehuyol » 22 set 2016, 9:51

allora...premesso che il programma di cui al post n.1 l'avevo elaborato come "programma campione"....infatti avevo "forzato" che il numero maggiore fosse la variabile "c"...quando sono riuscito a far funzionare tale programma, ho provato a migliorarlo....facendo come mi era stato suggerito in altro post...cioè dapprima confrontare "a" e "b" poi associare il maggiore di essi alla variabile "r" ...successivamente confrontare la variabile "c" con "r" e far stampare il valore della variabile più grande....ci sono riuscito!!! :ok:
P.S.: Forse...nelle descrizioni....potevo anche evitare di ripetere ad ogni rigo "IL PROGRAMMA"...vero?? :mrgreen:
Codice: Seleziona tutto
//PROGRAMMA CHE ACQUISISCE IL MAGGIORE TRA TRE NUMERI E LO ASSEGNA ALLA VARIABILE DATA r
#include <stdio.h>

main ()

{
int a, b, c, r;


printf ("QUESTO E' UN PROGRAMMA CHE ACQUISISCE TRE NUMERI INTERI a, b, c,  ELABORA IL MAGGIORE TRA DI ESSI E RESTITUISCE TALE VALORE ALLA VARIABILE DATA r\n");
printf("digita il numero a: \n");           //IL PROGRAMMA RICHIEDE LA DIGITAZIONE DELLA VARIABILE "a"
scanf ("%d", &a);                           //IL PROGRAMMA ACQUISISCE LA VARIABILE "a"

printf ("digita il numero b: \n");          //IL PROGRAMMA RICHIEDE LA DIGITAZIONE DELLA VARIABILE "b"
scanf ("%d", &b);                           //IL PROGRAMMA ACQUISISCE LA VARIABILE "b"

printf ("digita il numero c: \n");          //IL PROGRAMMA RICHIEDE LA DIGITAZIONE DELLA VARIABILE "c"
scanf ("%d", &c);                           //IL PROGRAMMA ACQUISISCE LA VARIABILE "c"

if (a>b)                                    // SE "a" è maggiore di "b"
{
  r = a;                                    // "a" VIENE ASSOCIATO A "r"
}
 
   else if (b>a)                       // ALTRIMENTI SE "b" è maggiore di "a"
             {
         r = b;                        // "b" VIENE ASSOCIATO A "r"
             }

      if (c>r)                                               // SE "c" E' MAGGIORE DI "r"
                        {
           printf ("r vale : %d   ", c);                  //STAMPA IL VALORE DI "c"
         }
         
            else if (c<r)                          // ALTRIMENTI SE "r" E' MAGGIORE DI "c"
                {
                         printf ("r vale : %d   ", r);    // STAMPA IL VALORE DI "r"
                     }
return 0;
}


Codice: Seleziona tutto
franco@HP-15-Notebook-PC:~/Scrivania$ ./trenumvar
QUESTO E' UN PROGRAMMA CHE ACQUISISCE TRE NUMERI INTERI a, b, c,  ELABORA IL MAGGIORE TRA DI ESSI E RESTITUISCE TALE VALORE ALLA VARIABILE DATA r
digita il numero a:
23
digita il numero b:
345
digita il numero c:
2
r vale : 345   franco@HP-15-Notebook-PC:~/Scrivania$
Avatar utente
Foto Utentehuyol
120 2 5
Frequentatore
Frequentatore
 
Messaggi: 203
Iscritto il: 30 gen 2011, 19:24

0
voti

[4] Re: programma in C per ordinamento numeri

Messaggioda Foto UtenteGuidoB » 22 set 2016, 11:12

Adesso che hai scritto la nuova specifica del programma:

QUESTO E' UN PROGRAMMA CHE ACQUISISCE TRE NUMERI INTERI a, b, c, ELABORA IL MAGGIORE TRA DI ESSI E RESTITUISCE TALE VALORE ALLA VARIABILE DATA r

il programma non è più corretto.

Che cosa succede se a=b=c?

Che cosa succede se a=1, b=2, c=2? :cry:

Ricordati che ci sono anche i confronti >= e <=
Big fan of ƎlectroYou!       Ausili per disabili e anziani su ƎlectroYou
Caratteri utili: À È É Ì Ò Ó Ù α β γ δ ε η θ λ μ π ρ σ τ φ ω Ω º ª ² ³ √ ∛ ∜ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ∃ ∄ ∆ ∈ ∉ ± ∓ ∾ ≃ ≈ ≠ ≤ ≥
Avatar utente
Foto UtenteGuidoB
17,8k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 2809
Iscritto il: 3 mar 2011, 16:48
Località: Madrid

0
voti

[5] Re: programma in C per ordinamento numeri

Messaggioda Foto Utentehuyol » 22 set 2016, 11:38

già....è vero!!! #-o ......devo rimettermi al lavoro!!! :ok:
Avatar utente
Foto Utentehuyol
120 2 5
Frequentatore
Frequentatore
 
Messaggi: 203
Iscritto il: 30 gen 2011, 19:24

0
voti

[6] Re: programma in C per ordinamento numeri

Messaggioda Foto Utentehuyol » 22 set 2016, 11:54

....adesso it's ok?

Codice: Seleziona tutto
franco@HP-15-Notebook-PC:~/Scrivania$ ./trenumvar1
QUESTO E' UN PROGRAMMA CHE ACQUISISCE TRE NUMERI INTERI a, b, c,  ELABORA IL MAGGIORE TRA DI ESSI E RESTITUISCE TALE VALORE ALLA VARIABILE DATA r
digita il numero a:
3
digita il numero b:
3
digita il numero c:
3
r vale : 3   franco@HP-15-Notebook-PC:~/Scrivania$


Codice: Seleziona tutto
franco@HP-15-Notebook-PC:~/Scrivania$ ./trenumvar1
QUESTO E' UN PROGRAMMA CHE ACQUISISCE TRE NUMERI INTERI a, b, c,  ELABORA IL MAGGIORE TRA DI ESSI E RESTITUISCE TALE VALORE ALLA VARIABILE DATA r
digita il numero a:
1
digita il numero b:
2
digita il numero c:
2
r vale : 2   franco@HP-15-Notebook-PC:~/Scrivania$


Codice: Seleziona tutto
//PROGRAMMA CHE ACQUISISCE IL MAGGIORE TRA TRE NUMERI E LO ASSEGNA ALLA VARIABILE DATA r
#include <stdio.h>

main ()

{
int a, b, c, r;


printf ("QUESTO E' UN PROGRAMMA CHE ACQUISISCE TRE NUMERI INTERI a, b, c,  ELABORA IL MAGGIORE TRA DI ESSI E RESTITUISCE TALE VALORE ALLA VARIABILE DATA r\n");
printf("digita il numero a: \n");           //IL PROGRAMMA RICHIEDE LA DIGITAZIONE DELLA VARIABILE "a"
scanf ("%d", &a);                           //IL PROGRAMMA ACQUISISCE LA VARIABILE "a"

printf ("digita il numero b: \n");          //IL PROGRAMMA RICHIEDE LA DIGITAZIONE DELLA VARIABILE "b"
scanf ("%d", &b);                           //IL PROGRAMMA ACQUISISCE LA VARIABILE "b"

printf ("digita il numero c: \n");          //IL PROGRAMMA RICHIEDE LA DIGITAZIONE DELLA VARIABILE "c"
scanf ("%d", &c);                           //IL PROGRAMMA ACQUISISCE LA VARIABILE "c"

if (a>=b)                                    // SE "a" è maggiore o uguale a "b"
{
  r = a;                                    // "a" VIENE ASSOCIATO A "r"
}
 
   else if (b>a)                       // ALTRIMENTI SE "b" E' MAGGIORE DI "a"
             {
         r = b;                        // "b" VIENE ASSOCIATO A "r"
             }

         if (c>=r)                                           // SE "c" E' UGUALE O MAGGIORE DI "r"
                        {
           printf ("r vale : %d   ", c);                  //STAMPA IL VALORE DI "c"
         }
         
            else if (c<r)                          // ALTRIMENTI SE "r" E' MAGGIORE DI "c"
                {
                         printf ("r vale : %d   ", r);    // STAMPA IL VALORE DI "r"
                     }
return 0;
}
Avatar utente
Foto Utentehuyol
120 2 5
Frequentatore
Frequentatore
 
Messaggi: 203
Iscritto il: 30 gen 2011, 19:24

0
voti

[7] Re: programma in C per ordinamento numeri

Messaggioda Foto UtenteGuidoB » 22 set 2016, 12:10

:ok:
Però potresti ottimizzare:

Codice: Seleziona tutto
//PROGRAMMA CHE ACQUISISCE IL MAGGIORE TRA TRE NUMERI E LO ASSEGNA ALLA VARIABILE DATA r
#include <stdio.h>

main ()

{
int a, b, c, r;


printf ("QUESTO E' UN PROGRAMMA CHE ACQUISISCE TRE NUMERI INTERI a, b, c,  ELABORA IL MAGGIORE TRA DI ESSI E RESTITUISCE TALE VALORE ALLA VARIABILE DATA r\n");
printf("digita il numero a: \n");           //IL PROGRAMMA RICHIEDE LA DIGITAZIONE DELLA VARIABILE "a"
scanf ("%d", &a);                           //IL PROGRAMMA ACQUISISCE LA VARIABILE "a"

printf ("digita il numero b: \n");          //IL PROGRAMMA RICHIEDE LA DIGITAZIONE DELLA VARIABILE "b"
scanf ("%d", &b);                           //IL PROGRAMMA ACQUISISCE LA VARIABILE "b"

printf ("digita il numero c: \n");          //IL PROGRAMMA RICHIEDE LA DIGITAZIONE DELLA VARIABILE "c"
scanf ("%d", &c);                           //IL PROGRAMMA ACQUISISCE LA VARIABILE "c"

if (a>=b)                                    // SE "a" è maggiore o uguale a "b"
{
  r = a;                                    // "a" VIENE ASSOCIATO A "r"
}
 
   else                                // ALTRIMENTI SE "b" E' MAGGIORE DI "a"
             {
         r = b;                        // "b" VIENE ASSOCIATO A "r"
             }

         if (c>=r)                                           // SE "c" E' UGUALE O MAGGIORE DI "r"
                        {
           printf ("r vale : %d   ", c);                  //STAMPA IL VALORE DI "c"
         }
         
            else                                   // ALTRIMENTI SE "r" E' MAGGIORE DI "c"
                {
                         printf ("r vale : %d   ", r);    // STAMPA IL VALORE DI "r"
                     }
return 0;
}


Infatti i confronti "if (b>a)" e "if (c<r)" sono ridondanti.



Come faresti se dovessi trovare il massimo non fra 3 numeri, ma fra 10 o 100?

Hai già provato a usare i cicli while e for?
Big fan of ƎlectroYou!       Ausili per disabili e anziani su ƎlectroYou
Caratteri utili: À È É Ì Ò Ó Ù α β γ δ ε η θ λ μ π ρ σ τ φ ω Ω º ª ² ³ √ ∛ ∜ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ∃ ∄ ∆ ∈ ∉ ± ∓ ∾ ≃ ≈ ≠ ≤ ≥
Avatar utente
Foto UtenteGuidoB
17,8k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 2809
Iscritto il: 3 mar 2011, 16:48
Località: Madrid

0
voti

[8] Re: programma in C per ordinamento numeri

Messaggioda Foto Utentehuyol » 22 set 2016, 12:44

quindi..se ho capito bene...in presenza dell'istruzione condizionale if, quando l'espressione contiene due condizioni su tre possibili, o meglio... lascia aperta solo una condizione residua, l'istruzione seguente che contempla l'unica condizione residua sarà else e non else if e non è necessaria la scrittura della condizione residua, ma è possibile passare subito all'istruzione....
sto lavorando al programma per implementare la possibilità di digitare non 1, 2, 3...numeri ma n numeri..

no, non ho ancora studiato il ciclo "for" né "while"...avrei cominciato a studiare le costanti...è meglio studiare prima le costanti oppure i cicli "for" e "while"??
Avatar utente
Foto Utentehuyol
120 2 5
Frequentatore
Frequentatore
 
Messaggi: 203
Iscritto il: 30 gen 2011, 19:24

0
voti

[9] Re: programma in C per ordinamento numeri

Messaggioda Foto UtenteGuidoB » 22 set 2016, 15:34

huyol ha scritto:quando l'espressione... lascia aperta solo una condizione residua, l'istruzione seguente che contempla l'unica condizione residua sarà else e non else if e non è necessaria la scrittura della condizione residua, ma è possibile passare subito all'istruzione....

È proprio così. L'eventuale else viene eseguito quando non è soddifatta la condizione dell'if. Per chi parla inglese è più intuitivo: if = se, else = altrimenti.

huyol ha scritto:sto lavorando al programma per implementare la possibilità di digitare non 1, 2, 3...numeri ma n numeri..

Bravo, così provi i cicli.

huyol ha scritto:no, non ho ancora studiato il ciclo "for" né "while"...avrei cominciato a studiare le costanti...è meglio studiare prima le costanti oppure i cicli "for" e "while"??

Prima le costanti direi.

Buono studio.
Big fan of ƎlectroYou!       Ausili per disabili e anziani su ƎlectroYou
Caratteri utili: À È É Ì Ò Ó Ù α β γ δ ε η θ λ μ π ρ σ τ φ ω Ω º ª ² ³ √ ∛ ∜ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ∃ ∄ ∆ ∈ ∉ ± ∓ ∾ ≃ ≈ ≠ ≤ ≥
Avatar utente
Foto UtenteGuidoB
17,8k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 2809
Iscritto il: 3 mar 2011, 16:48
Località: Madrid

0
voti

[10] Re: programma in C per ordinamento numeri

Messaggioda Foto UtentePietroBaima » 22 set 2016, 15:42

Attenzione, c'è un caso in cui

Codice: Seleziona tutto
if (a>b)
   {
    bla bla bla
   }
else if (b<a)
          {
           bla bla bla
          }


è diverso da

Codice: Seleziona tutto
if (a>b)
   {
    bla bla bla
   }
else
   {
    bla bla bla
   }
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
90,7k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 12206
Iscritto il: 12 ago 2012, 1:20
Località: Londra

Prossimo

Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 17 ospiti