DOMANDA [C++] Come poter controllare se 4 variabili sono uguali?

Pubblicità
U

Utente cancellato 366168

Ospite
Buonasera a tutti, sto svolgendo un esercizio per casa, che mi chiede di creare un programma on C++, che mi permetta di verificare (attraverso una funzione che poi nel corso del programma chiamerò più volte) se il dato inserito è uguale a i dati precedentemente inseriti. Ho provato a pensarci un po', ma non mi viene niente di concreto, riuscireste a darmi una mano?
 
Buonasera a tutti, sto svolgendo un esercizio per casa, che mi chiede di creare un programma on C++, che mi permetta di verificare (attraverso una funzione che poi nel corso del programma chiamerò più volte) se il dato inserito è uguale a i dati precedentemente inseriti. Ho provato a pensarci un po', ma non mi viene niente di concreto, riuscireste a darmi una mano?
Fammi capire, tu arrivi a 4 dati in input e poi dopo te li dovrebbe controllare?
 
Ok, non mi dice se dopo che li ho inseriti tutti o ogni volta che ne inserisco uno, però posso supporre che il controllo avvenga man man che inserisco i dati. Anche perché se il dato è uguale, il programma le lo richiede stampando prima un messaggio di errore.
--- i due messaggi sono stati uniti ---
Codice:
#include <iostream>
#include <math.h>
using namespace std;

int controllo(){
int n;
do{
    cin>>n;
if (n<0){

    cout<<"ERRORE\nInserire di nuovo il dato: ";

};}while(n<0);
return n;
}



int main()
{int a,b,c,d;

    cout<<"Inserire A: ";
    a=controllo();
    cout<<"Inserire B: ";
    b=controllo();

    if(b==a){
     do{   cout<<"Dato inserito uguale al precedente\nInserire di nuovo il dato: ";
        b=controllo();
    }while(b==a);}

    cout<<"Inserire C";
    if(c==a||c==b){
     do{   cout<<"Dato inserito uguale al precedente\nInserire di nuovo il dato: ";
        b=controllo();
    }while(b==a);}
    c=controllo();

    

    return 0;
}

Io ho provato così, ma a me serve proprio una funzione da richiamare ogni volta, dopo avere inserito il dato. Come ho fatto per verificare se il dato era maggiore di zero.
 
Ok, non mi dice se dopo che li ho inseriti tutti o ogni volta che ne inserisco uno, però posso supporre che il controllo avvenga man man che inserisco i dati. Anche perché se il dato è uguale, il programma le lo richiede stampando prima un messaggio di errore.
--- i due messaggi sono stati uniti ---
Codice:
#include <iostream>
#include <math.h>
using namespace std;

int controllo(){
int n;
do{
    cin>>n;
if (n<0){

    cout<<"ERRORE\nInserire di nuovo il dato: ";

};}while(n<0);
return n;
}



int main()
{int a,b,c,d;

    cout<<"Inserire A: ";
    a=controllo();
    cout<<"Inserire B: ";
    b=controllo();

    if(b==a){
     do{   cout<<"Dato inserito uguale al precedente\nInserire di nuovo il dato: ";
        b=controllo();
    }while(b==a);}

    cout<<"Inserire C";
    if(c==a||c==b){
     do{   cout<<"Dato inserito uguale al precedente\nInserire di nuovo il dato: ";
        b=controllo();
    }while(b==a);}
    c=controllo();

   

    return 0;
}

Io ho provato così, ma a me serve proprio una funzione da richiamare ogni volta, dopo avere inserito il dato. Come ho fatto per verificare se il dato era maggiore di zero.

Sarò stordito pesantemente, ma non mi è chiaro :boh:
Ho fatto sto aborto in tipo 20 secondi (è praticamente la prima volta che metto mano su c++), ma non credo che sia questo quello che ti serva, vero?
C++:
#include <iostream>

using namespace std;
bool compare(int i, int j, int l, int m);

int main() {

    int i = NULL, j = NULL, l = NULL, m = NULL;
    int turn = 0;
    bool flag = false;
    while(1){

        cout << "Inserisci value\n";
        if (turn == 0)
            cin >> i;
        if (turn == 1)
            cin >> j;
        if (turn == 2)
            cin >> l;
        if (turn == 3)
            cin >> m;

        turn++;
        if (turn == 4)
            turn = 0;

        flag = compare(i,j,l,m);
        if(flag)
            return 0;


    }

    return 0;
}

bool compare(int i, int j, int l, int m) {

    if (i != 0 && j != 0 && l != 0 && m != 0) {
        if (i == j)
            if (j == l)
                if (l == m)
                    return true;
    }
    return false;

}
 
Sciallo sono io che mi spiego male.
Allora..
L'utente inserisce a poi inserisce b, se b è uguale ad A, il programma richiede b.
poi si inserisce c e si verifica se c sia uguale a A o a B, se è uguale si richiede.
poi si chiede D che se è uguale ad A o B o C, si richiede.
Ora è un po' più chiaro?:brindiamo:
 
Non dichiarare quattro variabili, dichiara un vettore di quattro (o quanti ne vuoi) elementi.
La funzione non deve fare altro che iterare il vettore fino al numero di elementi entrati a quel punto, e tornare un valore (true o false, decidi tu) appena trova che il valore appena entrato e' simile a uno presente nel vettore.
 
Non dichiarare quattro variabili, dichiara un vettore di quattro (o quanti ne vuoi) elementi.
La funzione non deve fare altro che iterare il vettore fino al numero di elementi entrati a quel punto, e tornare un valore (true o false, decidi tu) appena trova che il valore appena entrato e' simile a uno presente nel vettore.

Ho pensato la stessa cosa, ma il compito vieta l'uso di array:look::muro:, scusate se non vi ho avvisato prima.
 
ok allora visto che le variabili devono essere maggiori di zero, inizializzale tutte con un valore negativo, poi quando fai il confronto confrontale tutte purche' siano positive, ossia se la nuova variabile e' 'd'

if ((a > 0 && a == d) || (b > 0 && b == d) ....)
 
Sarò stordito pesantemente, ma non mi è chiaro :boh:
Ho fatto sto aborto in tipo 20 secondi (è praticamente la prima volta che metto mano su c++), ma non credo che sia questo quello che ti serva, vero?
C++:
#include <iostream>

using namespace std;
bool compare(int i, int j, int l, int m);

int main() {

    int i = NULL, j = NULL, l = NULL, m = NULL;
    int turn = 0;
    bool flag = false;
    while(1){

        cout << "Inserisci value\n";
        if (turn == 0)
            cin >> i;
        if (turn == 1)
            cin >> j;
        if (turn == 2)
            cin >> l;
        if (turn == 3)
            cin >> m;

        turn++;
        if (turn == 4)
            turn = 0;

        flag = compare(i,j,l,m);
        if(flag)
            return 0;


    }

    return 0;
}

bool compare(int i, int j, int l, int m) {

    if (i != 0 && j != 0 && l != 0 && m != 0) {
        if (i == j)
            if (j == l)
                if (l == m)
                    return true;
    }
    return false;

}
Cavolo, apparte quei (void *)0 per inizializzare delle variabili non puntatore è un bel codice.
 
Io credo di non averlo capito bene :sisi:.
Infatti non funziona, fa il test solo quando tutte le variabili sono inizializzate (invece che una alla volta) e controlla se tutte le variabili hanno lo stesso valore (invece che almeno due abbiano lo stesso valore). Probabilmente ha capito male l'esercizio.
Assegnare un NULL (ossia un puntatore nullo) a una variabile di tipo intero e' una cosa che si puo' fare solo in C, in qualsiasi liguaggio moderno tale assegnazione genera errore.
 
Infatti non funziona, fa il test solo quando tutte le variabili sono inizializzate (invece che una alla volta) e controlla se tutte le variabili hanno lo stesso valore (invece che almeno due abbiano lo stesso valore). Probabilmente ha capito male l'esercizio.
Assegnare un NULL (ossia un puntatore nullo) a una variabile di tipo intero e' una cosa che si puo' fare solo in C, in qualsiasi liguaggio moderno tale assegnazione genera errore.

Ah ok. Tu cosa mi consiglieresti di fare?
 
Cavolo, apparte quei (void *)0 per inizializzare delle variabili non puntatore è un bel codice.
Infatti non funziona, fa il test solo quando tutte le variabili sono inizializzate (invece che una alla volta) e controlla se tutte le variabili hanno lo stesso valore (invece che almeno due abbiano lo stesso valore). Probabilmente ha capito male l'esercizio.
Assegnare un NULL (ossia un puntatore nullo) a una variabile di tipo intero e' una cosa che si puo' fare solo in C, in qualsiasi liguaggio moderno tale assegnazione genera errore.
Era letteralmente la prima volta che scrivevo codice su C++ che facesse qualcosa oltre a semplici test del genere:asd: Ora so qualcosa in più
 
Ultima modifica:
Pubblicità
Pubblicità
Indietro
Top