Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1

    [C]Concatenazione frasi

    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?
    codice:
    #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
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    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.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Scusami,
    come dovrei fare per far restituire un array di caratteri?
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  4. #4
    l' ho modificato in qusto modo è giusto?
    codice:
    #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
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  5. #5
    Originariamente inviato da 21Edoardo96
    l' ho modificato in qusto modo è giusto?
    codice:
    #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.

  6. #6
    Anche modificato in questo modo continua a darmi sempre lo stesso tipo di errore.
    codice:
    #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
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  7. #7
    Ho aggiunto anche il prototipo della funzione, solo che adesso il compilatore mi segnala pù errori rispetto a prima
    codice:
    #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;
    }
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  8. #8
    ciao,
    mi sono accorto di avere sbagliato a scrivere il prototipo, adesso il compilatore mi da errore solo nel return della f3.
    codice:
    #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
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

  9. #9
    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.

  10. #10
    Il compilatore mi da l'errore sul return f3:
    [Linker error] undefined reference to `strle'

    cosa vuole dire?
    Your time is limited, so don't waste it living someone else's life. Stay hungry, stay foolish. (Steve Jobs)

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