Domanda Risolto PROBLEM SOLVING C++

Stato
Discussione chiusa ad ulteriori risposte.

iSxND

Utente Bronze
3 Luglio 2018
30
11
4
30
Salve a tutti, vi spiego la mia situazione, avendo avuti diversi problemi di natura familiare, cercando di non farmi abbattere, ho deciso di intraprendere l'università di informatica, sapendo di aver già perso il primo trimestre, in questo nuovo semestre dovrò sostenere l'esame di "ALGORITMI E STRUTTURE DATI", il problema è che avendo saltato l'esame di "INTRODUZIONE ALLA PROGRAMMAZIONE", ovviamente tutto sembra impossibile, quindi mettendomi sotto ho iniziato a studiare "IP" e guardando nell'eserciziario sto riscontrando molti dubbi, tra cui


TESTO DELL'ESERCITAZIONE(basato principalmente sui cicli)

Scrivere un programma che legge tre interi e li stampa in ordine crescente, seguendo l’algoritmo proposto (che fissa una serie di dettagli ulteriori)
// chiedere di inserire tre numeri interi
// dichiarare tre variabili a0, a1 e a2 di tipo int
// leggere a0, a1 e a2
// ordinare a0, a1 e a2, ovvero:
// dichiarare una variabile intera aux inizializzata con a1
// se a0 maggiore di a1 scambiare fra loro a0 e a1, cio\`e
// - assegnare ad a1 il valore di a0, ad a0 il valore di aux e...
// ... ad aux il valore di a1 (a questo punto a0 <= a1==aux)
// se a0 maggiore di a2
// - assegnare ad a1 il valore di a0, ad a0 il valore di a2 e...
// ... ad a2 il valore di aux
// altrimenti
// - se a1 maggiore di a2 scambiare fra loro a1 e a2, cioè
// -- assegnare ad a1 il valore di a2, ad a2 il valore...
// ... di aux (a questo punto a0<=a1<=a2)
// stampare la stringa "I numeri inseriti, in ordine crescente, sono: "
// stampare il valore di a0, seguito dal carattere <
// stampare il valore di a1, seguito dal carattere <
// stampare il valore di a2
// stampare un a capo


RIFLESSIONI:

-dichiarare una variabile intera aux inizializzata con a1
- assegnare ad a1 il valore di a0, ad a0 il valore di aux e...

Principalmente rimango bloccato su questi due punti iniziali, se qualcuno di voi potrebbe spiegarmi la risoluzione e soprattutto la comprensione ne sarei davero grato.

MI TROVERETO MOLTO ATTIVO IN QUESTO PERIODO :D
 

St3ve

Utente Emerald
12 Ottobre 2011
2,135
5
1,469
628
L'algoritmo è già scritto, devi solo codificarlo in C++ parola per parola.

-dichiarare una variabile intera aux inizializzata con a1
int aux = a1;

- assegnare ad a1 il valore di a0, ad a0 il valore di aux e ad aux il valore di a1
Codice:
a1 = a0;
a0 = aux;
aux = a1;

Forse sarebbe meglio se postassi anche ciò che hai fatto perché, come vedi, quello che hai chiesto è veramente la traduzione letterale da italiano a C++ e non sono convinto che sia solo questo il tuo ostacolo.

P.S. Forse potrebbe interessarti programmiamo con inforge, anche se tratta il C e non il C++.
 
  • Mi piace
Reactions: iSxND e 0xbro

iSxND

Utente Bronze
3 Luglio 2018
30
11
4
30
Ultima modifica:
L'IDEA SAREBBE STATA QUESTA:

C++:
#include <iostream>
#include <string>
using namespace std;

int main(){
int a0;
int a1;
int a2;
char aux;
aux=a1;

cout << "Dichiarare tre numeri interi: " << endl;
cin >> a0 >> a1 >> a2;
cout << "Le tre variabili sono: " << a0 << " " << a1 << " " << a2 << endl;
if(a0>a1){
       cout << "Le variabili sono cambiate: " << a1=a0 << a0=aux << aux=a1;
 }
}

Come metodo senno avevo fatto in modo di stampare a1 come a0, ma a parere mio non aveva molto senso anche se funzionava
 
Aquarifoundation.com: Investi in un oceano pulito
DOWNLOAD

St3ve

Utente Emerald
12 Ottobre 2011
2,135
5
1,469
628
Con = si fanno le assegnazioni, mentre con == si fanno le comparazioni di uguaglianza. Per chi è agli inizi capita spesso di confondersi: a = 7 vuol dire che la variabile a ha un nuovo valore ed è 7, mentre a==7 vuol dire che ti stai ponendo la domanda "a vale 7?" che può essere true o false.

Evita cose di questo tipo
cin >> a0 >> a1 >> a2;
cout << "Le variabili sono cambiate: " << a1=a0 << a0=aux << aux=a1;
perché, corrette o no, creano spesso confusione: scrivere codice chiaro è meglio che scrivere codice compatto.

Io ti consiglio di risolverlo proprio commento per commento, in questo modo:
C++:
#include <iostream>
using namespace std;

int main() {
    // chiedere di inserire tre numeri interi
    int a0, a1, a2;          // dichiarare tre variabili a0, a1 e a2 di tipo int
    // leggere a0, a1 e a2
    cout << "inserisci a0: ";
    cin >> a0;
    cout << "inserisci a1: ";
    cin >> a1;
    cout << "inserisci a2: ";
    cin >> a2;   
    
    // ordinare a0, a1 e a2, ovvero:
    int aux = a1;            // dichiarare una variabile intera aux inizializzata con a1
    if (a0 > a1) {           // se a0 maggiore di a1 scambiare fra loro a0 e a1, cioè
        a1 = a0              //     assegnare ad a1 il valore di a0
        a0 = aux;            //     ad a0 il valore di aux 
        aux = a1;            //     e ad aux il valore di a1 
    } else if (a1 > a2) {    // altrimenti se a1 maggiore di a2 scambiare fra loro a1 e a2, cioè
    // continua...
    }
    // continua...
    
    return 0;
}

Almeno eviti di fare cose come definire aux come char e di non inizializzarla quanto ti viene chiesto.
 

iSxND

Utente Bronze
3 Luglio 2018
30
11
4
30
Ultima modifica:
MAGICO!
Grazie davvero del consiglio, tutto molto piu ordinato
C++:
#include <iostream>
using namespace std;

int main() {
    // chiedere di inserire tre numeri interi
    int a0, a1, a2;          // dichiarare tre variabili a0, a1 e a2 di tipo int
    // leggere a0, a1 e a2
    cout << "inserisci a0: ";
    cin >> a0;
    cout << "inserisci a1: ";
    cin >> a1;
    cout << "inserisci a2: ";
    cin >> a2;

    // ordinare a0, a1 e a2, ovvero:
    int aux = a1;            // dichiarare una variabile intera aux inizializzata con a1
    if (a0 > a1) {           // se a0 maggiore di a1 scambiare fra loro a0 e a1, cioè
        a1 = a0;              //     assegnare ad a1 il valore di a0
        a0 = aux;            //     ad a0 il valore di aux
        aux = a1;            //     e ad aux il valore di a1

    if (a0 > a2){           // se a0 maggiore di a2
        a1 = a0;            // assegnare ad a1 il valore di a0,
        a0 = a2;            // ad a0 il valore di a2
        a2 = aux;           // ad a2 il valore di aux
    }

    } else if (a1 > a2) {    // altrimenti se a1 maggiore di a2 scambiare fra loro a1 e a2, cioè
      a1 = a2;               // assegnare ad a1 il valore di a2
      a2 = aux;              // ad a2 il valore di aux
    }

    cout << "I numeri inseriti, in ordine crescente, sono: "; // stampare la stringa "I numeri inseriti, in ordine crescente, sono: "
    cout << a0 << "<";  // stampare il valore di a0, seguito dal carattere <
    cout << a1 << "<";  // stampare il valore di a1, seguito dal carattere <
    cout << a2 << endl;  // stampare il valore di a2 e stampare un a capo

    return 0;
}
Messaggio unito automaticamente:

SI PUO CHIUDERE
 
DOWNLOAD
Aquarifoundation.com: Investi in un oceano pulito
Stato
Discussione chiusa ad ulteriori risposte.