PDA

View Full Version : [c/c++] aiuto programmino


RikyToro
03-01-2009, 12:44
chiedo un aiuto su un programmino..in fase di compilazione mi segnala un errore dove ho sottolineato..questo è il testo e il codice che ho scritto..se riuscite a capire dove ho sbagliato mi fate un piacere..grazie

2) (a) Sia S il tipo di una struttura dati struct costituita da un campo c1 di tipo stringa (dim.
max. 1000) ed un campo c2 di tipo intero contenente la lunghezza della stringa in c1. Scrivere
una funzione void di nome aggiorna che, presi come suoi parametri, una struttura A di tipo
S ed una stringa s, modifica la struttura A concatenando la stringa s alla stringa contenuta nel
campo c1 di A, ed aggiorna il campo c2 di A sommandovi la lunghezza della stringa s.
(b) Realizzare anche un programma principale di prova che legge da standard input due
stringhe, di lunghezza massima 80, terminate da "a capo", memorizza la prima stringa insieme
alla sua lunghezza in una struttura di tipo S, e quindi richiama la funzione aggiorna
passandole la struttura creata e la seconda stringa letta. Il programma termina stampando su
standard output i valori dei campi c1 e c2 della struttura passata alla aggiorna.
N.B. Utilizzare soltanto stringhe tipo C ( = array di caratteri …).

#include <iostream>
#include <cstring>
using namespace std;
struct S{char C1[1000];
int C2;//lunghezza della stringa in C1
};
void aggiorna(S &A,char s[])
{int x;
x=strlen(s);
A.C1=strcat(A.C1,s);
A.C2=A.C2+x;
return;
}
int main()
{S B;
char c[80];
char d[80];
int x,y;
cout<<"inserisci la prima stringa terminata da a capo"<<endl;
cin.getline(c,80);
x=strlen(c);
strcpy(B.C1,c);
B.C2=x;
cout<<"inserisci la seconda stringa terminata da a capo"<<endl;
cin.getline(d,80);
y=strlen(d);
aggiorna(B,d);
cout<<B.C1<<endl;
cout<<B.C2;
return 0;
}

darkito85
03-01-2009, 14:57
Sostituisci la linea con questa

A->C1=strcat(A->C1,s);

Dato che hai passato al programma la struttura S per riferimento ,cioè tramite indirizzo, non puoi utilizzare la dicitura puntata bensì devi usare la freccia