Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 21
  1. #11
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    a... giusta osservazione..
    quindi viene così?
    codice:
    #include<conio.h>
    #include<iostream.h>
    #include<stdio.h>
    #include <vcl.h>
    #include <sstream>
    using namespace std;
    main()
    {
            int x[50], y[50], i, d, part[50];
            stringstream s[50];
            do
            {
                    cout<<"quante x e quante y vuoi inserire? ";
                    cin>>d;
                    if(d<2 || d>50)
                            cout<<"puoi solo inserire numeri da 2 a 50"<<endl;
            }
            while(d<2 || d>50);
            for(i=0;i<d;i++)
            {
                    printf("inserisci x%d",i+1);
                    cin>>x[i];
            }
            for(i=0;i<d;i++)
            {
                    printf("inserisci y%d",i+1);
                    cin>>y[i];
            }
            s[0]<<"("<<"x"<<"-"<<x[0];
            cout<<s;
            getch();
    }
    perchè comunque non va...
    ps uso il printf per stamapre la i+1 (non so farlo col cout )

  2. #12
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Allora procediamo un attimino con ordine. Preliminariamente

    uso il printf per stamapre la i+1 (non so farlo col cout )
    mi sembra strana come affermazione perché in generale quello che sai fare in C lo sai fare anche in C++ (ma non viceversa), quindi se in C fai

    printf("inserisci y%d",i+1)

    in C++ ti basterà scrivere

    cout << "Inserisci y" << i+1;

    Nella fattispecie del problema, stiamo sempre lì:

    codice:
            ...
            s[0]<<"("<<"x"<<"-"<<x[0];
            cout<<s[0].str();
            getch();
    }
    se scrivi "cout << s" stai chiedendo di farti stampare s che non è una stringa, ma - nel tuo caso - l'indirizzo di base di un array di classi stringstream... che a te non serve assolutamente a nulla...

    Devi scrivere innanzitutto s[0] perché la classe stringstream sulla quale stai lavorando è la prima dell'array (esattamente come hai fatto nella riga precedente a questa, non hai mica scritto s << "(... ) e poi devi specificare - te lo ripeto - che di quello stream vuoi la stringa associata, e questo lo fai usando il metodo str(), della serie:

    "caro stream associato alla stringa, per piacere mi restituisci il valore della stringa che tieni così poi lo stampo?"

    questa domandina gliela fai - in codice - col metodo str() richiamato sull'oggetto (in questo caso, s[0]).

    iacoposk8 non voglio immischiarmi nei tuoi affari, non so quali competenze devi raggiungere col linguaggio (sono affari tuoi) ma ti suggerisco di dedicartici con molto più impegno se addirittura usavi la printf() perché non riuscivi a trasformarla nella corrispondente cout...

  3. #13
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    heheheheh no il fatto è che per abitudine anche se più scomodo uso il printf e il cout mi è meno immediato anche se son cose che so diciamo che per distrazione le tralascio spesso comunque le competenze che ho son quelle di quarta abacus che è la classe che sto facendo

    comunque c'è un altra cosa che non mi è chiara... questo array stringstream è un insieme di stringhe e quindi ogni "cella" dell'array stringstream è composta da una stringa... quindi per scorrere l'array basta fare un for e far incrementare una variabile che poi si metterà tra le parentesi quadre ma se di ogni "cella" dell'array volessi scorrere con un for anche la stringa contenuta nella "cella" dell'array come dovrei scriverlo???

  4. #14
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Originariamente inviato da iacoposk8
    questo array stringstream è un insieme di stringhe e quindi ogni "cella" dell'array stringstream è composta da una stringa...
    No, ogni elemento dell'array contiene uno stream associato ad una stringa. Significa che ti consente di scrivere/leggere sulla/dalla stringa come se fosse un file o il video (per la scrittura) o la tastiera (per la lettura).

    quindi per scorrere l'array basta fare un for e far incrementare una variabile che poi si metterà tra le parentesi quadre ma se di ogni "cella" dell'array volessi scorrere con un for anche la stringa contenuta nella "cella" dell'array come dovrei scriverlo???
    tenendo sempre presente che in ogni "cella" non c'è una stringa ma un benedetto stream...

    codice:
    #include <iostream>
    #include <sstream>
    using namespace std;
    
    int main() {
    	
    	stringstream s[5];
    	
            //scrivo nei cinque stream dell'array la stringa "ciao" seguita dalla variabile i
            //alla fine avrò quindi
            //s[0].str() -> ciao0
            //s[1].str() -> ciao1
            //ecc...
    	for ( short i = 0; i < 5; i++ )
    		
    		s[i] << "ciao" << i;
    	
            //col for esterno ciclo tutto l'array di stream e con quello interno
            //la stringa associata ad ognuno di essi
    	for ( short j = 0; j < 5; j++ ) {
    		for ( short k = 0; k < 5; k++ )
    			cout << s[j].str().at(k) << endl;
    		cout << endl;
    	}
    	
    	return 0;
    }
    il metodo str() - guarda la novità - restituisce la stringa di quel particolare stream. Questa "stringa" non è un array di caratteri classico (stile C) ma un oggetto della classe "string" del C++. Per ottenere da essa il valore di ogni carattere devi chiamare (su questa) il metodo "at()" al quale passare l'indice del carattere che ti interessa...

    Sono tutte cose un po' difficili da capire così di getto... ti serve un po' di studio di fondo ^^"

  5. #15
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    bè si non è facile.. però conun esempio tipo il programma che hai postato riesco a capire... grazie

  6. #16
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    ma se devo assegnare un valore va bene scritto così: s[3].str().at(4)<9;
    perchè mi da errore.. mi sa che sbaglio la sintassi o qualche concetto che mi sfugge

  7. #17
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    No questo problema non mi si è mai posto quindi come soluzione per ora mi viene da dirti di salvare la stringa dello stream in un oggetto di classe "string" (del c++) e di lavorare su quello, quindi:

    #include <string>

    ..
    ..

    string stringa_cpp = s.str(): //salvo la stringa associata allo stream s in "stringa_cpp"

    //su stringa_cpp faccio tutte le modifiche che voglio
    //es:

    stringa_cpp[0] = 'm';
    stringa_cpp[4] = 'c';

    //ecc...

    Ovviamente questo comporta che devi conoscere un po' anche la classe string in modo tale da poter usare i suoi metodi per fare quello che ti serve

    http://www.cplusplus.com/reference/string/string/

  8. #18
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    bo.. mi da errore..
    [C++ Error] Unit1.cpp(34): E2294 Structure required on left side of . or .*
    [C++ Error] Unit1.cpp(35): E2141 Declaration syntax error
    [C++ Warning] Unit1.cpp(37): W8004 'stringa_cpp' is assigned a value that is never used

  9. #19
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Originariamente inviato da iacoposk8
    bo.. mi da errore..
    [C++ Error] Unit1.cpp(34): E2294 Structure required on left side of . or .*
    [C++ Error] Unit1.cpp(35): E2141 Declaration syntax error
    [C++ Warning] Unit1.cpp(37): W8004 'stringa_cpp' is assigned a value that is never used
    Cosa me ne faccio della segnalazione dell'errore senza conoscere il codice che l'ha prodotta?

  10. #20
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    a si giusto... lo dava su questa riga: string stringa_cpp = s.str();

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