Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    2

    aiuto con programmino c + +

    Ciao,
    son alle prese con i miei primi programmi in c + + dopo anni passati col basic( studiato alle superiori)
    ora... sto tentando di fare un programmino che scambia in una stringa le lettere dispari con il relativo codice asci ma non c'e' verso di riuscire a "trasformare" il carattere nel suo valore...
    se provo con il cast mi da un errore nella compilazione ...sicuramente sbaglio qualcosa ma cosa??? allego il sorgente in calce :-)

    codice:
    #include <cstdlib>
    #include <iostream>
    #include <string>
    #include <iomanip>
    using namespace std;
     string password[50][50];
        string ingressop[50];
        string ingressod[50];
    int lunghezza;
    int i=0;
    int j=0;
    string pari[50];
    string dispari[50];
    int controllo=0;
    string fabiano="a";
    int main()
    {
        /*il programma genera una password */
       
        cout <<"inserire lunghezza della parola da codificare " ;
            cin >> lunghezza;
         do
         {   
           
            
           
        cout <<"inserire lettera   " <<i<<"   ";
            cin >> ingressop[i];
            i=i+1;
      
        
     }while (i<lunghezza);
    
        getchar();
        lunghezza=lunghezza+1 ;
     for(i=0; i<lunghezza/2; i++)
     
    pari[i]=ingressop[i*2];
    
    for (j=0; j<lunghezza;j++)
    dispari[j]=ingressop[j*2+1];
    //cout <<  ingressop[i*2] << ingressop [i*2+1] ;
    
    for (i=0; i<lunghezza/2;i++)
    
    
    cout <<  pari[i] <<  static_cast <int> (dispari[i]);
    
    return 0;
     getchar();

  2. #2
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    edit

  3. #3
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    CIAO

    Non conosco il c++ , ma il programma è simile al c visto che non ci sono classi !

    non so cosa tu voglia fare effetivamente , ma se sostituisci array di string con array di
    char il problema è risolto ,almeno per trasformare il carattere in codice ascii
    ti posto il programma modificato , correggi sostituisci l' istruzione di stampa in modo
    che sia più chiaro l'output


    codice:
    #include <cstdlib>
    #include <iostream>
    #include <string>
    #include <iomanip>
    using namespace std;
    char password[50][50];
    char ingressop[50];
    char ingressod[50];
    int lunghezza;
    int i=0;
    int j=0;
    char pari[50];
    char dispari[50];
    int controllo=0;
    string fabiano="a";
    int main()
    {
    /*il programma genera una password */
    
    cout <<"inserire lunghezza della parola da codificare " ;
    cin >> lunghezza;
    do
    { 
    
    
    
            cout <<"inserire lettera " <<i<<" ";
            cin >> ingressop[i];
             i=i+1;
    
    
    }while (i<lunghezza);
    
    getchar();
    lunghezza=lunghezza+1 ;
    for(i=0; i<lunghezza/2; i++)
    
                pari[i]=ingressop[i*2];
    
    for (j=0; j<lunghezza;j++)
               dispari[j]=ingressop[j*2+1];
    //cout << ingressop[i*2] << ingressop [i*2+1] ;
    
    for (i=0; i<lunghezza/2;i++)
    
    
                cout << pari[i] << static_cast <int> (dispari[i]); // MODIFICA LA STAMPA
    
    
    system("pause");
    }
    Tecnologia

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304

    Moderazione

    Ho corretto il titolo della discussione, che non era conforme a quanto richiesto dal Regolamento interno.
    Ho inoltre aggiunto i tag CODE per il codice, sempre richiesti dal regolamento linkato, che ti invito a leggere per il futuro.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Una stringa è un oggetto che contiene tutti i caratteri che compongono la stringa.
    Questa è la comodità delle stringhe in c++ : la lunghezza la ottieni col metodo size(), non ti serve sapere a priori la lunghezza della stringa, ne prendere in input i caratteri uno per uno.
    L' errore è questo:
    codice:
    cout <<  pari[i] <<  static_cast <int> (dispari[i]);
    Ma ce ne sono molti altri concettuali.
    Tu dichiari un array di 50 stringhe, ma a che ti serve?
    Poi non puoi convertire una stringa in un int, dispari[i] è una stringa, semmai convertirai dispari[0][i] in un int.Ma ti bastava una stringa sola, non 50.

    Se hai una stringa, la prendi in input con cin:
    codice:
    string str;
    cin>>str;
    Se poi vuoi elaborarla:
    codice:
    for(int i=0;i<str.size();i++)
    {
        // fai quello che devi fare
        // str[i] ritorna il riferimento al carattere i-esimo della stringa
    }
    In definitiva l' esercizio poteva essere risolto molto più semplicemente:
    codice:
    string str;
    cin>>str;
    for(int i=0;i<str.size();i++)
    {
        if(i%2)
            cout << static_cast <int> str[i] << "\t" ; // lo vedi meglio così
        else
            cout << str[i] << "\t";
    }

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    2
    Originariamente inviato da ramy89
    Una stringa è un oggetto che contiene tutti i caratteri che compongono la stringa.
    Questa è la comodità delle stringhe in c++ : la lunghezza la ottieni col metodo size(), non ti serve sapere a priori la lunghezza della stringa, ne prendere in input i caratteri uno per uno.
    L' errore è questo:
    codice:
    cout <<  pari[i] <<  static_cast <int> (dispari[i]);
    Ma ce ne sono molti altri concettuali.
    Tu dichiari un array di 50 stringhe, ma a che ti serve?
    Poi non puoi convertire una stringa in un int, dispari[i] è una stringa, semmai convertirai dispari[0][i] in un int.Ma ti bastava una stringa sola, non 50.

    Se hai una stringa, la prendi in input con cin:
    codice:
    string str;
    cin>>str;
    Se poi vuoi elaborarla:
    codice:
    for(int i=0;i<str.size();i++)
    {
        // fai quello che devi fare
        // str[i] ritorna il riferimento al carattere i-esimo della stringa
    }
    In definitiva l' esercizio poteva essere risolto molto più semplicemente:
    codice:
    string str;
    cin>>str;
    for(int i=0;i<str.size();i++)
    {
        if(i%2)
            cout << static_cast <int> str[i] << "\t" ; // lo vedi meglio così
        else
            cout << str[i] << "\t";
    }

    mmm Grazie per le correzioni e le spiegazioni...
    praticamente ho cercato di fare un programmino senza prima "racchiuderlo" in un algoritmo
    cosi' di getto utilizzando le poche informazioni di cui sono attualmente in possesso in tema programmazione c + + (che ho praticamente iniziato a studiare ieri) .. per quanto riguarda gli "strafalcioni" ed errori concettuali mi son rifatto ai programmi che facevo 20 anni fa' in basic
    nel quale dimensionavo i vettori prima e senza cognizione di causa in quanto i programmi nascevano sempre di getto (a parte quelli a scuola nel quale i vettori e le matrici venivano dimensionati a dovere )

    per il resto di sicuro ho molto da studiare ...ma conto prima o poi di arrivare a livelli decenti..

    grazie ancora ;-)

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.