PDA

View Full Version : [C]Funzione che elimina le lettere ripetute da una parola


Metal2001
12-04-2010, 15:47
#include <stdio.h>

void main () {
char ptext;
char ctext;
int i,n,c=0;

scanf("%s",ptext);
n=strlen(ptext);
printf("Chiave:%s\nDimensione:%d",ptext,n);
for (i=1;i<n;i++)
{
for(n=i;n>=0;n--)
{


if(i!=n && ptext[i]==ptext[n]) //
break;
else
{
ctext[c]=ptext[i]; //
c++;
}
}
}
printf("\n%s",ctext);
}

Devo fare un programma per eliminare da una parola le lettere ripetute,per esempio scrivo "tizio" e mi restuisce "tizo"

ho dei problemi con 2 righe dove ho messo il commento vuoto,mi serve una funzione per confrontare e modificare un carattere di una stringa dato l'indice


Vi ringrazio anticipatamente

lupoxxx87
12-04-2010, 17:08
il problema è che tu memorizzi delle stringhe in delle variabili char, invece che char*

Kenger
12-04-2010, 18:09
E se non ricordo male dovrebbe darti errore o warning anche il primo scanf visto che non passi un puntatore a scanf ma una variabile.
Questa volta era facile ma ti posso consigliare di dire cosa succede esattamente al posto di dire "Ho dei problemi con le due righe"? Così le risposte saranno più rapide. ^^

lupoxxx87
12-04-2010, 18:25
E se non ricordo male dovrebbe darti errore o warning anche il primo scanf visto che non passi un puntatore a scanf ma una variabile.
Questa volta era facile ma ti posso consigliare di dire cosa succede esattamente al posto di dire "Ho dei problemi con le due righe"? Così le risposte saranno più rapide. ^^

ma anche perchè....il problema era a monte ;)
ah quanto amo il C....non smetterò mai di leggere il K&R ;)

DanieleC88
12-04-2010, 20:25
il problema è che tu memorizzi delle stringhe in delle variabili char, invece che char*

Già che ci siamo, ricorda di controllare che i char * siano allocati, sennò non ci fai niente.

Metal2001
13-04-2010, 18:09
nelle 2 righe indicate effettuo delle operazioni su singoli caratteri all'interno di una stringa,in una cerco di fare un confronto e in un altra un assegnazione.Mi pare di aver capito che per effettuare queste operazioni devo creare dei puntatori ed andare a fare le modifiche e i confronti con quelli e non direttamente con la stringa

Possibile che in internet non si trova un programmino in c che mi elimina le lettere ripetute da una parola?Ne ho trovato uno in c++ dove fa le operazioni con i vettori come ho fatto io,solo che in c non si può fare

Kenger
13-04-2010, 18:33
Allora... a te servono due puntatori a caratteri, uno che conterrà la parola originale e uno che conterrà la parola modificata.
L'unica cosa che devi fare col primo puntatore è passarlo a scanf, mentre col secondo devi usare la funzione chiamata malloc passandole la dimensione di cui creare la stringa. Per il tuo caso ad esempio la grandezza della stringa originale+1 sarebbe fantastica.
Infine potrai usare i due puntatori come vettori facendo ptext[i]==ctext[j] ad esempio.

A te trasformare queste informazioni in codice. ;)

PS: strlen(char*) è la funzione per la la lunghezza di una stringa.
PPS: con "scrivere cosa succede esattamente" intendevo i warning e gli errori che ti dà il compilatore e cosa succede durante l'esecuzione ^^