RISOLTO devo mettere i quattro numeri in ordine decrescente, ma non riesco ad andare avanti.

Stato
Discussione chiusa ad ulteriori risposte.

Carlo Corticelli

Nuovo Utente
10
1
Codice:
#include <stdio.h>
int main()
{
int num1,num2,num3,num4;
printf("inserire i quattro numeri:\n");
scanf("%d",&num1);
printf("\n");
scanf("%d",&num2);
printf("\n");
scanf("%d",&num3);
printf("\n");
scanf("%d",&num4);
printf("\n");
printf("visualizziamoli ora in ordine decrescente:\n");
}
 
Ultima modifica da un moderatore:

Spanci03

Utente Attivo
418
87
Periferiche
usb, mouse,tastiera
Net
duckduckgo
OS
windows 7 , debian
Hai fatto l'ordinamento ?
Puoi metterli in un vettore e fare il bubble sort / selection sort
 

rctimelines

Utente Èlite
5,144
2,023
CPU
Ryzen 7 2700X | i7-6700k@4.5 | i5-4460... altri
Dissipatore
wraith MAX | Scythe Katana2|Arctic Freezer 11LP
Scheda Madre
Asrock B450 Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
HDD
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
GPU
RadeonPro WX3100 4G | ZOTAC GTX 1070 8G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | LG Ultrawide 27''
Net
fibra 1000
OS
Windows10-pro64/OpenSUSE-QL15.1/Debian 10.3
Più che "non riesco ad andare avanti" mi pare che non riesci neanche ad iniziare. Ciò che hai scritto non c'entra praticamente nulla con l'algoritmo che ti viene richiesto.
Ci sono molti modi per risolvere l'esercizio. Puoi, per esempio, riordinare in senso decrescente i valori contenuti nelle stesse variabili oppure (suggerimento) imposti altre quattro nuove variabili (primo, secondo, terzo, quarto) e trasferisci in quelle la sequenza nell'ordine che ti serve.

Inviato dal mio Nexus 6P utilizzando Tapatalk
 
  • Mi piace
Reazioni: Krona

rctimelines

Utente Èlite
5,144
2,023
CPU
Ryzen 7 2700X | i7-6700k@4.5 | i5-4460... altri
Dissipatore
wraith MAX | Scythe Katana2|Arctic Freezer 11LP
Scheda Madre
Asrock B450 Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
HDD
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
GPU
RadeonPro WX3100 4G | ZOTAC GTX 1070 8G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | LG Ultrawide 27''
Net
fibra 1000
OS
Windows10-pro64/OpenSUSE-QL15.1/Debian 10.3
Hai fatto l'ordinamento ?
Puoi metterli in un vettore e fare il bubble sort / selection sort
Ce l'hai fissa con questo "bubble sort / selection sort".. per ordinare 4 numeri non serve implementare alcun metodo di ordinamento, bastano 5 confronti.
Inoltre, dal codice scritto dall'OP, dubito pure che sappia cosa sia un vettore o l'ordinamento.

Inviato dal mio Nexus 6P utilizzando Tapatalk
 
  • Mi piace
Reazioni: Krona

Spanci03

Utente Attivo
418
87
Periferiche
usb, mouse,tastiera
Net
duckduckgo
OS
windows 7 , debian
Ce l'hai fissa con questo "bubble sort / selection sort".. per ordinare 4 numeri non serve implementare alcun metodo di ordinamento, bastano 5 confronti.
Inoltre, dal codice scritto dall'OP, dubito pure che sappia cosa sia un vettore o l'ordinamento.

Inviato dal mio Nexus 6P utilizzando Tapatalk

no , ho detto di metterli in un vettore se leggi
 

rctimelines

Utente Èlite
5,144
2,023
CPU
Ryzen 7 2700X | i7-6700k@4.5 | i5-4460... altri
Dissipatore
wraith MAX | Scythe Katana2|Arctic Freezer 11LP
Scheda Madre
Asrock B450 Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
HDD
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
GPU
RadeonPro WX3100 4G | ZOTAC GTX 1070 8G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | LG Ultrawide 27''
Net
fibra 1000
OS
Windows10-pro64/OpenSUSE-QL15.1/Debian 10.3
Si, prima di scrivere il codice ti conviene abbozzare un semplice diagramma di flusso con cui scrivere la strategia. L'esercizio potrebbe non richiedere l'uso dei vettori e quindi va bene anche usare le 4 variabili.

Inviato dal mio Nexus 6P utilizzando Tapatalk
 
  • Mi piace
Reazioni: Krona
U

Utente 16812

Ospite
Codice:
#include <stdio.h>
int main()
{
int num1,num2,num3,num4;
printf("inserire i quattro numeri:\n");
scanf("%d",&num1);
printf("\n");
scanf("%d",&num2);
printf("\n");
scanf("%d",&num3);
printf("\n");
scanf("%d",&num4);
printf("\n");
printf("visualizziamoli ora in ordine decrescente:\n");
}

Salve,
innanzitutto leggi la mia risposta qui:
https://forum.tomshw.it/threads/non-riesco-ad-imparare-java.808367/post-7548937 :sisi:
Hai studiato gli array (i vettori) ?
Con tale tipo di struttura "sequenziale" la "navigazione" tra i suoi elementi è facilitata da un accesso diretto tramite un indice.
Dato che gli elementi sono pochi, come in questo caso, si consiglia un algoritmo di SORT tra i più semplici: quello di selezione.
I passi sono semplicissimi: 1) all'interno dell'array ricerchi l'elemento più piccolo e lo scambi con quello in prima posizione (se non si trova già in prima posizione); 2) poi ricerchi il secondo elemento più piccolo e lo scambi con quello in seconda posizione (se già non è in seconda posizione); 3) prosegui allo stesso modo finché il vettore non è completamente ordinato.
Avrai bisogno di utilizzare una terza variabile "ausiliaria" (in cui salvare temporaneamente uno dei due valori da scambiare) per effettuare lo scambio tra i contenuti di due variabili.
A presto ;)
 

rctimelines

Utente Èlite
5,144
2,023
CPU
Ryzen 7 2700X | i7-6700k@4.5 | i5-4460... altri
Dissipatore
wraith MAX | Scythe Katana2|Arctic Freezer 11LP
Scheda Madre
Asrock B450 Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
HDD
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
GPU
RadeonPro WX3100 4G | ZOTAC GTX 1070 8G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | LG Ultrawide 27''
Net
fibra 1000
OS
Windows10-pro64/OpenSUSE-QL15.1/Debian 10.3
Ancora con 'sti vettori. Risolvere l'esercizio con le quattro variabili distinte come inserito dall'OP. È un problema diverso.

Inviato dal mio Nexus 6P utilizzando Tapatalk
 
  • Mi piace
Reazioni: Krona e fabio93

nullptr

Nuovo Utente
34
9
Ce l'hai fissa con questo "bubble sort / selection sort".. per ordinare 4 numeri non serve implementare alcun metodo di ordinamento, bastano 5 confronti.
Caro @rctimelines, @OP ha chiaramente chiesto di voler ordinare, non confrontare gli elementi. Perciò la tua risposta è totalmente fuori-luogo, come tra l'altro tutte le altre tue risposte in questa sezione.
Non capisco come i moderatori scelgano di quasi "bastonare" un utente che non mette tra i tag un codice invece di un utente che boicotta soltanto la gente che concede parte del suo tempo per assistere gli utenti e dare informazioni corrette (come ha detto @Lupen03).

Carlo Conticelli per fare ciò che ti serve puoi scegliere uno dei tanti di ordinamento di array (quello che fa al caso tuo).

Ti farò un esempio con l'ordinamento per scambio, soprannominato bubble sort (faccio un esempio di uno pseudo-codice in bubble-sort, immaginalo in ordinamento crescente): considera un vettore di più elementi, se il primo è maggiore del secondo i primi due elementi vengono scambiati. Dopo considera gli altri due successivi (secondo e terzo), e quindi li confronti e nel caso li scambi, e così via tenendo conto di ogni coppia degli elementi contigui fino a completare il vettore. Poi scambi se sono nell'ordine che non desideri ottenere (con ogni scansione consideri uno per uno le possibili paia di coppie contigue).

Qui è possibile vedere lo pseudo-codice originale:
Codice:
procedure BubbleSort(A:lista degli elementi da ordinare)
  scambio ← true
  while scambio do
    scambio ← false
    for i ← 0 to length(A)-2  do
      if A[i] > A[i+1] then // cambi di segno durante la scansione per far sì che sia in ordine decrescente
        swap( A[i], A[i+1] )
        scambio ← true

in questo caso:
Codice:
#include <stdio.h>

int main() {
    int lista[100], n, c, d, scambio;
    printf("Quanti numeri vorresti ordinare?\n");
    scanf("%d", & n);
    printf("Inserisci %d numeri\n", n);

    for (c = 0; c < n; c++)
        scanf("%d", & lista[c]);

    for (c = 0; c < (n - 1); c++) {
        for (d = 0; d < n - c - 1; d++) {
            if (lista[d] < lista[d + 1]) {
                scambio = lista[d];
                lista[d] = lista[d + 1];
                lista[d + 1] = scambio;
            }
        }
    }

    printf("Lista ordinata:\n");

    for (c = 0; c < n; c++)
        printf("%d\n", lista[c]);

    return 0;
}
 
  • Mi piace
Reazioni: Spanci03 e Luke✌

rctimelines

Utente Èlite
5,144
2,023
CPU
Ryzen 7 2700X | i7-6700k@4.5 | i5-4460... altri
Dissipatore
wraith MAX | Scythe Katana2|Arctic Freezer 11LP
Scheda Madre
Asrock B450 Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
HDD
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
GPU
RadeonPro WX3100 4G | ZOTAC GTX 1070 8G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | LG Ultrawide 27''
Net
fibra 1000
OS
Windows10-pro64/OpenSUSE-QL15.1/Debian 10.3
Caro @nullptr , come ho già avuto modo di dire in altra occasione, ti invito a limitarti a fare i tuoi interventi perché non è necessario che tu mi riprenda o che mi sollevi osservazioni che tra l'altro sono anche poco condivisibili, ma in cui non mi dilungo per evitare polemiche completamente OT. Non serve che prendi le difese di altri utenti perché questo genera solo faziosità e mina le regole basilari di un forum.

Hai postato del codice esplicito, tra l'altro di lunghezza assolutamente esagerata .per risolvere un esercizio banale come quello richiesto.. ma soprattutto infrangendo le regole, per cui dovresti essere "bacchettato" tu..
Se invece di voler dimostrare tutta la tua saccenza e rigorosità (tu sei quello che nell'altro post ha usato il verbo "negligere") avessi proposto una soluzione senza l'uso dei vettori sarebbe stato più interessante. Tra l'altro dimostrazione da poco visto che in questa sezione gran parte di chi partecipa regolarmente si occupa di programmazione (come il sottoscritto) e non ha proprio nulla da imparare da quanto hai postato.
L'OP non si è nemmeno fatto più sentire.

Inviato dal mio Nexus 6P utilizzando Tapatalk
 
Ultima modifica:
  • Mi piace
Reazioni: BAT e Krona

nullptr

Nuovo Utente
34
9
Caro @nullptr , come ho già avuto modo di dire in altra occasione, ti invito a limitarti a fare i tuoi interventi perché non è necessario che tu mi riprenda o che mi sollevi osservazioni che tra l'altro sono anche poco condivisibili, ma in cui non mi dilungo per evitare polemiche completamente OT. Non serve che prendi le difese di altri utenti perché questo genera solo faziosità e mina le regole basilari di un forum.

Hai postato del codice esplicito, tra l'altro di lunghezza assolutamente esagerata .per risolvere un esercizio banale come quello richiesto.. ma soprattutto infrangendo le regole, per cui dovresti essere "bacchettato" tu..
Se invece di voler dimostrare tutta la tua saccenza e rigorosità (tu sei quello che nell'altro post ha usato il verbo "negligere") avessi proposto una soluzione senza l'uso dei vettori sarebbe stato più interessante. Tra l'altro dimostrazione da poco visto che in questa sezione gran parte di chi partecipa regolarmente si occupa di programmazione (come il sottoscritto) e non ha proprio nulla da imparare da quanto hai postato.
L'OP non si è nemmeno fatto più sentire.

Inviato dal mio Nexus 6P utilizzando Tapatalk
Carissimo il mio @rctimelines, se volessi rispondere e rettificare i tuoi consigli nulla mi vieta di farlo, come nessuno vieta di farlo a me o a chiunque altro in quanto è un forum. Se non vuoi questo, ti consiglio di spostarti in qualche social network nei gruppi di programmazione in cui molto verosimilmente potrai applicare restrizioni alle tue risposte.

Inoltre l’unica idea poco condivisibile è la tua, come hai già visto, in quanto tutti stanno proponendo di applicare un algoritmo di sorting, e questo dovrebbe già attizzare un bagliore nella tua testa.

Il mio codice non è esplicito, appunto perché ho deciso di scegliere uno dei metodi di sorting, il “bubble sort” in quanto applicato ad una lista con un numero di elementi numerici ben definibile, e non 4 – quindi dovrà sistemarselo da solo - e la lunghezza è più che accettabile.

Nessuno sta prendendo le difese di altri utenti, ti sto esortando a non fare disinformazione e lasciare assistere da parte di chi è più competente e ha conoscenze concrete solide al riguardo.

Prendila come una critica costruttiva, nessuno vuole essere saccente e non mi stupirei se tu ti infastidissi se volessi fare tu stesso una domanda qui e un utente ti arruffi ancora di più le idee.
 
  • Mi piace
Reazioni: Luke✌

rodhellas

Utente Èlite
1,522
427
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
HDD
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
GPU
Gigabyte GTX 960 OC
Audio
Integrata
Monitor
SyncMaster 223BW
PSU
Antec HCG-520M
Case
Meshify C
Net
Gigabit Fastweb
OS
Windows 10 64bit
Caro @rctimelines, @OP ha chiaramente chiesto di voler ordinare, non confrontare gli elementi.
Embeh come pensi di ordinare qualcosa se non fai dei confronti? Con qualche confronto ordini quei 4 numeri senza menartela con cicli for o sort vari.
Visto che ad occhio l'OP, non solo non ha fatto gli array, ma probabilmente neanche i cicli for.
E come implementazione del bubble sort lascia pure a desiderare.
 
Ultima modifica:
Stato
Discussione chiusa ad ulteriori risposte.

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili