Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    33

    c++ conversione

    Salve , il mio probelma è il seguente: devo implementare un programma che data una sequenza di numeri interi positivi terminata da un tappo (negativo) ed inserita da input mi dia per ogni numero il suo corrispondente in una lettera del alfabeto, ad esmpio :

    19 15 12 5 inserita da input mi dovrebbe ristituire "sole"

    il codice che ho fatto è il seguente

    codice:
    # include <iostream>
    #include <cstring>
    using namespace std;
    const int n=100;
    const int k=27;
    
    void  stampaConversione (int [], char [])
    void inserisciNumeri (int [], int &);
    int main ()
    
    {
    	char b[27]={' ','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','w','x','y','z'};
    	int a[n];
    	int dim=0;
    	cout<<"inserisci sequenza di numeri"<<endl;
    	
    
    
    
          inserisciNumeri (a,  dim);
          cout<<endl;
          stampaConversione (a ,b);
    
    return 0;
    }
    
    
    void inserisciNumeri (int a[], int &dim)
    {
    	int num;
    	for (int i=0; i<n && num > 0 ;i++)
    	{
    		cin>>num;
    		a[i]=num;
    		dim=i;
    	}
    }
    
    void stampaConversione (int a[], char b[])
    {
    	for (int i=0;i<n;i++)
    	{
    		string b[k]=b[a[i]];		
    		cout<<b[a[i]];
    	}
    }

    il compilatore mi dice che :
    08-04-2011.cpp:20: error: ‘inserisciNumeri’ was not declared in this scope

    e lo stesso errore per l'altra funzione
    non capisco dov'è l'eventuale errore di sintassi e come posso fare per risolvere questo porblema grazie

  2. #2
    Ciao, guarda che manca un ; dopo la dichiarazione della funzione stampaConversione:

    codice:
    void stampaConversione (int [], char [])
    ***Ciao***

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    33
    grazie mi ero dimenticato del ; , ma comunque non esegue quello che voglio , fondamentalmente è come se non eseguisse la seconda funzione, cioè quella di stampa con la conversione dei numeri a caratteri
    dimmi, come posso fare?
    grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    45
    nella funzione 'stampaConversione' prova a togliere questa linea
    codice:
    string b[k]=b[a[i]];
    ciao.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    33
    l'ho tolta ma non funziona lo stesso mi fa inserire i numeri ma non stampa la conversione

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    45
    ma i numeri te li fa inserire? perche a me da errore nella funzione 'inserisciNumeri'.
    infatti la variabile 'int num' non e' definita.
    io ho fatto cosi' e mi funziona.
    codice:
    void inserisciNumeri (int a[], int &dim)
    {
    	int num=0;
    	for (int i=0; i<n && num >=0 ;i++)
    	{
    		cin>>num;
    		a[i]=num;
    		dim=i;
    	}
    }

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    33
    Ciao , scusa forse sono io ma a me non funziona , ti mando il codie che sto cercando di compilare, allora mi da inserire bene i numero senza num=0 (altrimenti mi da errore se faccio cosi), poi quando metto un numero negativo ovviamente la sequenza finisce ma il problema che quando metto il numero negativo la seuqenza finisce e non fa nient'altro, cioè non viene letta la funzione di stampa e non so perche
    il codice è sempre:
    codice:
    # include <iostream>
    #include <cstring>
    using namespace std;
    const int n=100;
    const int k=27;
    
    void  stampaConversione (int [], char []);
    void inserisciNumeri (int [], int &);
    int main ()
    
    {
    	char b[27]={' ','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','w','x','y','z'};
    	int a[n];
    	int dim=0;
    
    	cout<<"inserisci sequenza di numeri"<<endl;
    	
    
    
    
          inserisciNumeri (a,  dim);
    
          stampaConversione (a ,b);
    
    return 0;
    }
    
    
    void inserisciNumeri (int a[], int &dim)
    {
    	int num=0;
    	for (int i=0; i<n && num > 0 ;i++)
    	{
    		cin>>num;
    		a[i]=num;
    		dim=i;
    	}
    }
    
    void stampaConversione (int a[], char b[])
    {
    	for (int i=0;i<n;i++)
    	{
    		
    		cout<<b[a[i]];
    	}
    
    }
    scusa ancora e grazie per la tua pazienza

  8. #8
    ho due dubbi sul tuo codice

    first:
    nella funzione inserisciNumeri tu poni
    num = 0

    e poi nel for successivo controlli che
    num > 0

    questo non potrà mai avvenire e in quel for non dovrebbe mai entrare.



    second:
    nella funzione stampaConversione
    tu gli chiedi di stampare finchè i < 100
    ma che ne sai che ci siano 100 valori validi nel vettore "a"?
    di fatto, se io in "a" inserisco un solo numero e poi metto un valore negativo, la funzione stampaConversione dovrebbe valutare solo la prima posizione del vettore "a"

    nel vettore "a", a tempo di compilazione, ci saranno tutti valori non noti
    potrebbero esserci sia numeri positivi sia numeri negativi, che succede se tenta di stampare b[9999] o peggio b[-1467] ? -> segmentation fault



    edit: impara ad usare il DEBUGGER. Per un programmatore è lo strumento fondamentale, è molto più importante imparare ad usare il debugger che imparare ad usare le funzioni avanzate di un determinato linguaggio di programmazione. Continuo a sostenere che se tutti usassero il debugger prima di postare qui, probabilmente ci sarebbero meno di un quarto dei thread attualmente presenti

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    21
    Come dice Celebron, hai posto num = 0, quindi non entrerà mai nel for immediatamente successivo..

    Sarebbe meglio:

    codice:
    cin >> num;
    for ( int i = 0; i < n && num > 0; i++ )
    {
          a[ i ] = num;
          
          dim = i;
          cin >> num;
    }
    Un' altra cosa: forse ti conviene porre ( dim = i ) fuori dal ciclo for, in modo da evitare l'operazione ad ogni iterazione ( previa però dichiarazione della variabile i fuori dallo scope del for ).

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    45
    scusa forse potevo sprecare qualche parola in piu,nel codice che ho postato ho messo 'dim=0',ma poi nel ciclo for ho modificato
    'num=0 in num>=0' altrimenti come ti hanno detto nel ciclo for non entra.
    codice:
    for (int i=0; i<n && num >=0 ;i++)
    ciao.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.