Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    207

    [C] Trova e sostituisci tramite puntatori

    Ciao a tutti! Devo fare un programma che trova una parola all'interno di una stringa (questo l'ho fatto) e sostituisca la parola cercata con un'altra, restituendo una nuova frase con la parola sostituita. Cioè:
    Inserisci una frase: "La bicicletta di Mario è nuova"
    Inserisci la parola da cercare e sostituire: "Mario"
    Inserisci la nuova parola: "Gianni"

    Output: "La bicicletta di Gianni è nuova"

    Devo fare l'operazione di sostituzione tramite putatori, ma non ci riesco.

    Ecco cosa ho fatto:

    void sostituisci(char *parola_vecchia, char *parola_nuova, char *frase_vecchia, char *frase_nuova){
    char *puntatore;
    puntatore = sottostringa(vecchia, sorg); //funzione che trova la parola cercata e restituisce il puntatore ad essa

    if (puntatore!=NULL){
    printf("\nStringa trovata!\n");
    }
    else{
    printf("\nStringa NON trovata!\n");
    }

    punt = nuova;
    strcpy(frase_nuova, frase_vecchia);
    printf("\Nuova stringa: %s\n", frase_nuova);
    }

    "strcpy" è la funzione per copiare una stringa, ma la copia identica a quella di partenza, non modifica la parola.
    Cosa devo usare? Come devo fare?
    AIUTO!!!
    Grazie!

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    207
    Scusate, ho commesso un errore:

    void sostituisci(char *parola_vecchia, char *parola_nuova, char *frase_vecchia, char *frase_nuova){
    char *puntatore;
    puntatore = sottostringa(parola_vecchia, frase_vecchia); //funzione che trova la parola cercata e restituisce il puntatore ad essa

    if (puntatore!=NULL){
    printf("\nStringa trovata!\n");
    }
    else{
    printf("\nStringa NON trovata!\n");
    }

    punt = nuova;
    strcpy(frase_nuova, frase_vecchia);
    printf("\Nuova stringa: %s\n", frase_nuova);
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    207
    punt = nuova; sarebbe in realtà
    puntatore = parola_nuova;

    AIUTO!!!

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    52
    nn mi sembra cosi difficile, nn ho letto il tuo programma ma basta che una volta trovata la parola copi in una stringa la prima parte di frase, concateni la parola nuova e a questo attacchi la seconda parte di frase.
    x contcatenare 2 stringhe: strcat(stringa1, stringa2)://attacca a stringa1 stringa2 senza spazzi.
    cmq forse ho capito male e lo devi risolvere i qualche maniera particolare.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    207
    Devo farlo tramite puntatori... ti scrivo il testo del problema:

    Cerca e sostituisci

    Usando esclusivamente puntatori e l'aritmetica dei puntatori realizzare le seguenti funzioni:

    char* sottostringa (char* p, char* s)

    cerca da sinistra la prima occorrenza della stringa puntata da p nella stringa puntata da s; nel caso in cui la trovi restituisce il puntatore all'inizio della sua prima occorrenza in s; restituisce NULL se p non occorre in s.

    bool SostPrimaOcc (char* vecchia, char* nuova, char* sorg, char* dest)

    effettua una copia di sorg (la sorgente) in dest (destinazione) rimpiazzando l'eventuale prima occorrenza di vecchia con un'occorrenza di nuova; in caso non vi siano occorrenze di vecchia in sorg, dest deve essere una copia di sorg. Es. se vecchia è "automobile", nuova è "bicicletta", sorg è "la nuova automobile di Carlo" allora, dopo l'esecuzione, dest sarà "la nuova bicicletta di Carlo". La funzione restituisce TRUE o FALSE a seconda che abbia effettuato la sostituzione o no.

    Il programma deve contenere un main che consenta di provare le funzioni con stringhe inserite da tastiera. Le stringhe su cui opererano le funzioni devono essere lette in vettori statici dichiarati nel main. Non e’ consentito utilizzare funzioni della libreria string.h, eccetto la funzione strlen (che restituisce la lunghezza di una stringa)

    NOTA: le funzioni da realizzare non devono contenere espressioni con indici interi del tipo s[i] o *(s+i) per accedere agli elementi delle stringhe


    la funzione "char* sottostringa (char* p, char* s)" l'ho già fatta e funziona.. non so come risolvere la seconda parte dell'esercizio....
    HELP!!!

  6. #6
    Questa dovrebbe essere la prima

    char*sottostringa(char*p,char*s){
    char*_=s,*__=p,*ret=NULL;
    while(*_!=NULL)
    if (*_==*__){if(!ret)ret=_;
    _++;__++;
    if(!*__)return(ret);
    }
    else {ret=NULL;
    _++;__=p;
    }
    return(ret);
    }
    Quell'altra ci penso domani, bye.

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