Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
Aiuto in c++
Nuovo argomento   Rispondi    Indice del forum -> Programmazione
Precedente :: Successivo  
Autore Messaggio
Claudia
Comune mortale
Comune mortale


Registrato: 15/02/14 10:52
Messaggi: 2

MessaggioInviato: 15 Feb 2014 11:00    Oggetto: Aiuto in c++ Rispondi citando

Per favore potete darmi una mano con questo programma in c++??

Il programma chiede di inserire un certo numero di stringhe, più il carattere separatore e allocare dinamicamente memoria per una nuova stringa contenente la concatenazione delle stringhe immesse separate dal carattere separatore immesso.
Finora sono arrivata a questo punto. Ma per come ho impostato il mio programma, la stringa risultante risulta sempre essere pari alla prima inserita, e non riesco a capire cosa abbia sbagliato.

#include <iostream>
#include <string.h>

using namespace std;

int main ()
{
int n;
char sep [1];

cout << "Inserisci il numero di stringhe" << endl;
cin >> n;

//Allocato memoria dinamicamente per ogni stringa
char *p [n];

for (int i=0; i< n; i++)
{
p[i]= new char [100];
}

for (int i=0; i<n; i++)
{
cout << "Inserisci la stringa " << i+1 << endl;
cin >> p[i];
}

cout << endl << "Inserisci il carattere separatore" << endl;
cin >> sep;

//ricavo la lunghezza di ogni stringa
//tutti i separatori delle stringhe sono n-1
int len= n-1;

for (int i=0; i<n; i++)
{
len += strlen (p[i]);
}

//alloco spazio per la mia stringa risultante
char* stringa = new char [len +1];

//inizializzo la mia stringa risultante con la prima stringa inserita
strcpy (stringa, p[0]);

for (int i=1; i<n; i++)
{
strcat (stringa, sep);
strcat (stringa, p[i]);

}
cout << stringa;
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 10219
Residenza: Tokelau

MessaggioInviato: 15 Feb 2014 18:31    Oggetto: Rispondi citando

onestamente l'unica cosa che vedo di sbagliata è la definizione di sep:
Codice:
char sep [1];

questo crea un array di un solo elemento di tipo carattere, ma le strighe in C/C++ occupano un carattere in più, quindi un array di questo tipo può solo contenere stringhe di lunghezza 0 e tu ci metti dentro una stringa di lunghezza 1...
Non so dirti se questo risolve il malfunzionamento, ma in ogni caso di certo devi cambiare quella riga in
Codice:
char sep [2];
Top
Profilo Invia messaggio privato HomePage
Claudia
Comune mortale
Comune mortale


Registrato: 15/02/14 10:52
Messaggi: 2

MessaggioInviato: 16 Feb 2014 16:47    Oggetto: Rispondi

Ti ringrazio per l'aiuto Very Happy Modificando la dimensione dell'array si è risolto il problema, e adesso il programma funziona Very Happy
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Programmazione Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi