PDA

Visualizza la versione completa : [C]Concatenazione frasi


21Edoardo96
20-02-2013, 18:06
Ciao,
devo fare un programma che date 2 frasi, le concateni insieme in un unica frase.
esempio
Frase 1:Ciao
Frase 2:come va?
Concatenazione: Ciao come va?


#include<stdio.h>
int main()
{
int i, k=0;
char f1[100], f2[100];
printf("Inserisci la prima frase\n");
gets(f1);

printf("Inserisci la seconda frase\n");
gets(f2);

printf("La concatenazione delle 2 frasi e\': %c\n", con(f1,f2));
system("pause");
return 0;
}
//Implementazione della funzione per la concatenaszione delle 2 frasi
char con(char c1[], char c2[])
{ //qu dove mi da l'errore
char f3 [200];
int i, k=0;
for(i=0; i<strle(c1); i++)
{
f3[k]=c1[i];
k++;
}
k++;//Per non far sovrappore 2 lettere
for(i=0; i<strle(c2); i++)
{
f3[k]=c2[i];
k++;
}
return f3;
}


Problema: Il compilatore mi dice che vi un conflitto di tipo con la funzione con
Ciao e grazie

LeleFT
20-02-2013, 18:09
Non ho guardato tutto il codice, ma la tua funzione dichiarata per restituire un char (un carattere), mentre restituisce un array di caratteri.

Ripeto, non ho guardato la bont dell'algoritmo.

Ciao. :ciauz:

21Edoardo96
20-02-2013, 18:28
Scusami,
come dovrei fare per far restituire un array di caratteri?

21Edoardo96
20-02-2013, 18:31
l' ho modificato in qusto modo giusto?


#include<stdio.h>
int main()
{
int i, k=0;
char f1[100], f2[100];
printf("Inserisci la prima frase\n");
gets(f1);

printf("Inserisci la seconda frase\n");
gets(f2);

printf("La concatenazione delle 2 frasi e\': %c\n", con(f1,f2));
system("pause");
return 0;
}
//Implementazione della funzione per la concatenaszione delle 2 frasi
char con [](char c1[], char c2[])
{
char f3 [200];
int i, k=0;
for(i=0; i<strle(c1); i++)
{
f3[k]=c1[i];
k++;
}
k++;//Per non far sovrappore 2 lettere
for(i=0; i<strle(c2); i++)
{
f3[k]=c2[i];
k++;
}
return f3;
}


Ciao e grazie

signoredeltempo
20-02-2013, 18:50
Originariamente inviato da 21Edoardo96
l' ho modificato in qusto modo giusto?


#include<stdio.h>
int main()
{
int i, k=0;
char f1[100], f2[100];
printf("Inserisci la prima frase\n");
gets(f1);

printf("Inserisci la seconda frase\n");
gets(f2);

printf("La concatenazione delle 2 frasi e\': %\n", con(f1,f2));
system("pause");
return 0;
}
//Implementazione della funzione per la concatenaszione delle 2 frasi
char *con(char c1[], char c2[])
{
char f3 [200];
int i, k=0;
for(i=0; i<strle(c1); i++)
{
f3[k]=c1[i];
k++;
}
k++;//Per non far sovrappore 2 lettere
for(i=0; i<strle(c2); i++)
{
f3[k]=c2[i];
k++;
}
return f3;
}


Ciao e grazie
Ci sono comunque altri errori:
-Devi inserire l'header string.h per la funzione strlen() non strle
-Per stampare una stringa devi usare %s. %c per caratteri singoli.

21Edoardo96
20-02-2013, 18:54
Anche modificato in questo modo continua a darmi sempre lo stesso tipo di errore.


#include<stdio.h>
int main()
{
int i, k=0;
char f1[100], f2[100];
printf("Inserisci la prima frase\n");
gets(f1);

printf("Inserisci la seconda frase\n");
gets(f2);

printf("La concatenazione delle 2 frasi e': %s \n", con(f1,f2));
system("pause");
return 0;
}
//Implementazione della funzione per la concatenaszione delle 2 frasi
char * con(char c1[], char c2[])
{
char f3 [200];
int i, k=0;
for(i=0; i<strle(c1); i++)
{
f3[k]=c1[i];
k++;
}
k++;//Per non far sovrappore 2 lettere
for(i=0; i<strle(c2); i++)
{
f3[k]=c2[i];
k++;
}
return f3;
}


Ciao e grazie

21Edoardo96
20-02-2013, 19:03
Ho aggiunto anche il prototipo della funzione, solo che adesso il compilatore mi segnala p errori rispetto a prima


#include<stdio.h>
char *con(char, char);
int main()
{
int i, k=0;
char f1[100], f2[100];
printf("Inserisci la prima frase\n");
gets(f1);
printf("Inserisci la seconda frase\n");
gets(f2);
printf("La concatenazione delle 2 frasi e': %s\n", con(f1,f2));
system("pause");
return 0;
}
//Implementazione della funzione per la concatenaszione delle 2 frasi
char *con(char c1[], char c2[])
{
char f3 [200];
int i, k=0;
for(i=0; i<strle(c1); i++)
{
f3[k]=c1[i];
k++;
}
k++;//Per non far sovrappore 2 lettere
for(i=0; i<strle(c2); i++)
{
f3[k]=c2[i];
k++;
}
return f3;
}

21Edoardo96
20-02-2013, 19:08
ciao,
mi sono accorto di avere sbagliato a scrivere il prototipo, adesso il compilatore mi da errore solo nel return della f3.


#include<stdio.h>
char *con(char [], char[]);
int main()
{
int i, k=0;
char f1[100], f2[100];
printf("Inserisci la prima frase\n");
gets(f1);
printf("Inserisci la seconda frase\n");
gets(f2);
printf("La concatenazione delle 2 frasi e': %s\n", con(f1,f2));
system("pause");
return 0;
}
//Implementazione della funzione per la concatenaszione delle 2 frasi
char *con(char c1[], char c2[])
{
char f3 [200];
int i, k=0;
for(i=0; i<strle(c1); i++)
{
f3[k]=c1[i];
k++;
}
k++;//Per non far sovrappore 2 lettere
for(i=0; i<strle(c2); i++)
{
f3[k]=c2[i];
k++;
}
return f3;
}

Ciao e grazie

signoredeltempo
20-02-2013, 19:16
Come condizione di iterazione nei for, la funzione per ottenere la lunghezza si chiama strlen e non strle.
Correggi, ed eventualmente riporta errori di compilazione/logici.

21Edoardo96
20-02-2013, 19:17
Il compilatore mi da l'errore sul return f3:
[Linker error] undefined reference to `strle'

cosa vuole dire?

Loading