Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [C++]simulazione di una cpu.

    Salve ,
    Mi è stato delegato un programma in c++ in cui devo simulare il funzionamento della cpu riconoscendo istruzioni e dati forniti in una memoria composta da n celle. Per fare ciò ho scelto dei numeri a cui assegnare un istruzione , per esempio 33 per caricare il dato nella cella successiva all'istruzione nel registro a (stessa cosa per 34 e 35 rispettivamente nei registri b e c), 36 per sommare a e b , e 37 per memorizzare il dato nell'accumulatore, ovvero il registro a. Questo è il codice.
    codice:
    #include <iostream>using namespace std;
    const int mx=10;
    int main()
    {
        int memoria[mx],a=0,b=0,c=0,i=1,acc=0;
        for( i=1;i<=mx;i++)memoria[i]=0;
        for( i=1;i<=mx;i++)
        {
                cout<<"inserisci il numero n."<<i<<":";
                cin>>memoria[i];
        }
        while(i<=mx)
        {
                switch(memoria[i])
                {
                                  case 33:
                                       i++;
                                       a=memoria[i];
                                       cout<<"eseguita istruzione load in a N."<<endl;
                                       i++;
                                       break;
                                  case 34:
                                       i++;
                                       b=memoria[i];
                                       cout<<"eseguita istruzione load in b N."<<endl;
                                       i++;
                                       break;
                                  case 35:
                                       i++;
                                       c=memoria[i];
                                       cout<<"eseguita istruzione load in c N."<<endl;
                                       i++;
                                       break;
                                  case 36:
                                       i++;
                                       acc=a+b;
                                       break;
                                  case 37:
                                       i++;
                                       a=a+b;
                                       break;
                                       default:
                                               cout<<"ciao"<<endl;
                                               i++;
                                               break;
    
    
                                           }
        }
        return 0;
    }
    Ora , il problema è che quando inserisco tutti i numeri nella memoria il programma finisce e non restituisce nulla , neanche un cout . Come posso risolvere?

  2. #2
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    prova ad aggiungere un cin prima di return 0
    Per gli Spartani e Sparta usa spartan Il mio github

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Attenzione ... il valore dell'indice nei cicli è sbagliato ...

    Deve essere

    for (i=0; i<mx; i++)

    ... e anche il controllo nel while è sbagliato...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    inserendo il cout esce questo.. 448d7900a7d019c1e5920b2dc2ba3424.png

    aggiornando il codice cambiando l'indice non cambia nulla...
    codice:
    #include <iostream>using namespace std;
    const int mx=10;
    int main()
    {
        int memoria[mx],a=0,b=0,c=0,i=0,acc=0;
        for( i=0;i<=mx;i++)memoria[i]=0;
        for( i=0;i<=mx;i++)
        {
                cout<<"inserisci il numero n."<<i<<":";
                cin>>memoria[i];
        }
        while(i<=mx)
        {
                switch(memoria[i])
                {
                                  case 33:
                                       i++;
                                       a=memoria[i];
                                       cout<<"eseguita istruzione load in a N."<<endl;
                                       i++;
                                       break;
                                  case 34:
                                       i++;
                                       b=memoria[i];
                                       cout<<"eseguita istruzione load in b N."<<endl;
                                       i++;
                                       break;
                                  case 35:
                                       i++;
                                       c=memoria[i];
                                       cout<<"eseguita istruzione load in c N."<<endl;
                                       i++;
                                       break;
                                  case 36:
                                       i++;
                                       acc=a+b;
                                       break;
                                  case 37:
                                       i++;
                                       a=a+b;
                                       break;
                                       default:
                                               cout<<"ciao"<<endl;
                                               i++;
                                               break;
    
    
                                           }
                }
        cout<<"ciao"<<endl;
        return 0;
    }
    Oregon, cosa intendi per controllo nel while?

  5. #5
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    i=0

    prima del while?
    Per gli Spartani e Sparta usa spartan Il mio github

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Non i<=mx ma i<mx

    E prima della while devi azzerare i
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Cavolo vero , non ci avevo fatto caso all'indice da azzerare... grazie mille! Ho risolto!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.