PROBLEMA Algoritmo

rctimelines

Utente Èlite
5,143
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
In che modo dovrei aggiungere una condizione per individuare il sottoinsieme comune?
Passati gli altri test, quelli in comune compresi tra gli estremi:

4>n<11

Inviato dal mio Nexus 5 utilizzando Tapatalk
 

BAT

Moderatore
Staff Forum
Utente Èlite
22,946
11,581
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
Ah ok, quindi al posto del ; devo inserire AND?
Per quanto riguarda l'ultimo diagramma che ho mandato, cosa ne dici?
Mettiamola così:
senza operatori booleani i flowchart diventano grossi come cartelloni pubblicitari e ingestibili.
D'altra parte se non consoci tali operatori il prof. potrebbe obiettare "chi ti ha fatto i compiti?"
Non mi sento di darti un consiglio: come ti dico, sbaglio!

Personalmente non ho MAI usato diagrammi di flusso, vanno bene solo per esempi giocattolo e sono molto meno chiari di un testo informale in pseudocodice.
Vanno bene per spiegare ad un principiante come funziona una istruzione condizionale o un ciclo ma anche in questo caso se ne puòò fare tranquillamente a meno.
 

rctimelines

Utente Èlite
5,143
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
Ma non saprei proprio come e dove aggiungere un'altra funziona SE per verificare 4>n<11
Mettile in linea tutte tre.. ogni test esclude qualcosa, se li passa tutti hai n che appartiene ad entrambi gli insiemi

Inviato dal mio Nexus 5 utilizzando Tapatalk
 

rctimelines

Utente Èlite
5,143
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
Personalmente non ho MAI usato diagrammi di flusso, vanno bene solo per esempi giocattolo e sono molto meno chiari di un testo informale in pseudocodice.
Vanno bene per spiegare ad un principiante come funziona una istruzione condizionale o un ciclo ma anche in questo caso se ne puòò fare tranquillamente a meno.

Nel 1987 mi sono serviti per fare un gran bel figurone ad un corso di Fox (per chi non sa cos'è: un compilatore di macro DB-III.. a sua volta database relazionale per MS-DOS.. che segue DB-II anche per CP/M... DB-I non è mai esistito)
:) :) :)



Inviato dal mio Nexus 5 utilizzando Tapatalk
 

Marcus Aseth

Utente Attivo
404
138
OS
Windows 10
Non so che linguaggio stai usando, ma nel caso sia C++, senza darti la soluzione posso proporti la struttura del test e lasciare il completamento degli elementi mancanti a te, come esercizio extra :)
Tutto ciò che ti serve scrivere è una classe Range con dentro 2 int, un costruttore che prende il valore del primo ed ultimo elemento, ed infine una funzione "Include" con signature "bool (int)" che controlla se il valore passato è nel range [first,last]

Edit: ho letto ora gli altri commenti e forse ti sto confondendo le idee piu che altro... nel caso ignora il mio commento :D
Quello che cercavo di sottolineare è che puoi strutturare la cosa in modo che sembri una comune frase, come a punto nel codice sotto "if (Range.Includes(MyNumber))" che sarebbe una cosa tipo "Se l'intervallo contiene il mio numero", in questo modo ti viene molto piu semplice ragionarci su :)

C++:
int main()
{
    vector<Range> Ranges{
            Range(4, 10),
            Range(5, 20)
    };

    int MyNumber = 4;
    for (auto& Range : Ranges)
    {
        cout << "Range [" << Range.first << "," << Range.last << "] ";
 
        if (Range.Includes(MyNumber))
        {
            cout << "includes " << MyNumber << endl;
        }
        else
        {
            cout << "does not include " << MyNumber << endl;
        }
    }
}
Output n=4:
Range [4,10] includes 4
Range [5,20] does not include 4
 
Ultima modifica:

rctimelines

Utente Èlite
5,143
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
Non so che linguaggio stai usando, ma nel caso sia C++, senza darti la soluzione posso proporti la struttura del test e lasciare il completamento degli elementi mancanti a te, come esercizio extra :)
Tutto ciò che ti serve scrivere è una classe Range con dentro 2 int, un costruttore che prende il valore del primo ed ultimo elemento, ed infine una funzione "Include" con signature "bool (int)" che controlla se il valore passato è nel range [first,last]

Edit: ho letto ora gli altri commenti e forse ti sto confondendo le idee piu che altro... nel caso ignora il mio commento :D
Quello che cercavo di sottolineare è che puoi strutturare la cosa in modo che sembri una comune frase, come a punto nel codice sotto "if (Range.Includes(MyNumber))" che sarebbe una cosa tipo "Se l'intervallo contiene il mio numero", in questo modo ti viene molto piu semplice ragionarci su :)

C++:
int main()
{
    vector<Range> Ranges{
            Range(4, 10),
            Range(5, 20)
    };

    int MyNumber = 4;
    for (auto& Range : Ranges)
    {
        cout << "Range [" << Range.first << "," << Range.last << "] ";
 
        if (Range.Includes(MyNumber))
        {
            cout << "includes " << MyNumber << endl;
        }
        else
        {
            cout << "does not include " << MyNumber << endl;
        }
    }
}
Output n=4:
Ma se non sa fare un diagramma di flusso e non ha mai visto un linguaggio di programmazione.. certo che gli stai confondendo le idee!

Inviato dal mio Nexus 5 utilizzando Tapatalk
 

Marcus Aseth

Utente Attivo
404
138
OS
Windows 10
Ma se non sa fare un diagramma di flusso e non ha mai visto un linguaggio di programmazione.. certo che gli stai confondendo le idee!

Lol :D
Cmq onestamente io non so neppure cosa sia un diagramma di flusso (o almeno non lo conosco sotto questo nome), ragione in più per la quale il mio reply sopra potrebbe essere totalmente fuori strada :\
 

BAT

Moderatore
Staff Forum
Utente Èlite
22,946
11,581
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
Lol :D
Cmq onestamente io non so neppure cosa sia un diagramma di flusso (o almeno non lo conosco sotto questo nome)
i famigerati flowchart
non preoccuparti non ti sei perso niente :ok:
 

rctimelines

Utente Èlite
5,143
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
i famigerati flowchart
non preoccuparti non ti sei perso niente :ok:
Non sono qui a difenderli, ma come ogni cosa non sono il male assoluto e non bisogna abusarne, ma anche al di fuori dell'ambito della programmazione ci sono situazioni in cui possono essere utili a fare chiarezza ai neofiti soprattutto.
La conoscenza fa sempre bene, suggerire l'ignoranza non è mai buona cosa!

Inviato dal mio Nexus 5 utilizzando Tapatalk
 
  • Mi piace
Reazioni: icox

rctimelines

Utente Èlite
5,143
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
Io trovo i flowchart utili nell'imparare a programmare.
Ecco, vedi.

Probabilmente con i linguaggi procedurali sono più utili. Anch'io non li uso più da tanto tempo, però aldilà dell'esperienza poi maturata, ci sono ambiti in cui non esiterei ancora oggi ad utilizzarli. Mi ricordo che mi trovavo benissimo con l'assembler, una volta ho fatto un simulatore di circuiti logici con lo z80: ho ancora da qualche parte le cartelline con pacchetti di flowchart.. non c'era modo migliore per tradurlo in codice!

Inviato dal mio Nexus 5 utilizzando Tapatalk
 
M

Mursey

Ospite
Si, magari con la OOP hanno meno senso, ma per la scrittura di un algoritmo un flowchart è già utile visivamente: se ha troppi giri o incroci è fatto male.
 
  • Mi piace
Reazioni: rctimelines

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!