Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    26

    [c++] array di tipo string

    salve, voglio creare un array che contenga in ogni sua cella, una stringa (una frase compresa di spazi)...
    questo è quello che ho cercato di fare, ma mi da un errore lunghissimo che non ho mai visto, alla riga 10....

    #include <iostream>
    #include <string.h>
    using namespace std;
    int main()
    {
    string A[10];
    for(int i=0;i<10;i++)
    {
    cout<<"Inserisci stringa:";
    cin.getline(A[i]);
    }
    return 0;
    }

    mi rendo conto di aver scritto una boiata immane... mi potreste dire come fare per raggiungere il mio scopo? grazie...

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    93
    Mi pare che tu abbia omesso un argomento in cin.getline()

    http://www.cplusplus.com/reference/i...tream/getline/

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    26
    ho inserito l argomento alla funz... ma nulla... sempre lo stesso errore.....

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    93
    C'è anche un'altro problema,

    dovresti usare
    codice:
    char A[10]

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    26
    ma poi ogni elemento dell array sarà un carattere.... io voglio invece che sia una stringa (compresa di spazi)... una frase tanto per intenderci.... capisci?

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    93
    Se non vuoi usare getline

    codice:
    #include <iostream>
    #include <string.h>
    using namespace std;
    int main()
    {
    
    string B[10];
    for(int i=0;i<10;i++)
    {
    cout<<"Inserisci stringa:";
    cin >> B[i];
    }
    return 0;
    }
    Altrimenti una cosa del tipo:
    codice:
    #include <iostream>
    #include <string.h>
    using namespace std;
    int main()
    {
    char A[10];
    string B[10];
    for(int i=0;i<10;i++)
    {
    cout<<"Inserisci stringa:";
    cin.getline(&A[i],10);
    B[i]=A[i];
    }
    return 0;
    }
    ma non ne sono per nulla sicuro!

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    93
    Ma se guardi qui è meglio forse:

    http://www.sanlab.it/post/2008/11/01...-in-C2b2b.aspx

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    26
    nulla da fare... cmq mi sono spiegato male.... o meglio... non avevo capito bene nemmeno io quello che dovevo fare -.-°°°° ora vi scrivo il testo così lo capite meglio.....

    si scriva una funzione c++ che lette da input due frasi (terminate da INVIO, e le cui parole possono essere separate da SPAZIO, VIRGOLA o TRATTINO), restituisca il numero di parole che esse hanno in comune. Si consiglia di procedere individuando, per ognuna delle due frasi, le parole che la compongono, e memorizzandole in un array (un array per ogni frase).


    Da quello che ho capito, devo creare due array, e in ognuno ci devo mettere le due frasi... ad ogni cella corrisponde una parola.. e la lettura dell array termina quando premo invio..... mmh.... cosa suggerite?

  9. #9
    Io ti suggerirei di leggere ciascuna parola come fosse una stringa (ovvero ogni volta che trova uno spazio, una virgola, un ! o quel che ci devi mettere, passa alla stringa successiva). A questo punto crei due array di stringhe in questo modo (uno per la prima frase, ed uno per la seconda). Poi non devi far altro che confrontare se ciascuna stringa di A è contenuta nell'array di stringhe di B e (questo è importante) se ciascuna stringa di B sia contenuta nell'array di stringhe A (non fare questo passaggio fa perdere metà esercizio XD). In questo modo te la dovresti cavare abilmente

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    93
    Come puoi leggere nel link che ti ho postato per leggere unintera linea (terminata da '\n') puoi usare "getline" a cui passi un oggetto di tipo string.

    Visto che ha te serve leggere due frasi potresti usare due oggetti di tipi string e leggerle con qusta funzione.

    Dopo ciò, visto che ogni parola è separata da uno spazio, un trattino o virgola (anche se dire che le parole sono separate da una virgola vorrebbe dire una cosa di questo tipo: prima_parola,seconda_parola e non prima_parola, sevonda_parola non so se mi spiego) il numero di parola è uguale al numero di spazi,trattini ecc... + 1 (per l'ultima parola...prova a scriverle su in foglio ).

    Quindi potresti cercare il numero di occorrenze di questi caratteri con il metodo find della classe string:

    http://it.wikibooks.org/wiki/Dal_C_a...delle_stringhe

    In particolare:
    La funzione "find" cerca il carattere nella stringa, e rende la prima posizione in cui viene trovato il carattere, oppure la costante "string::npos", se il carattere non viene trovato.

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.