View Full Version : PROGRAMMAZIONE IN C
bostongeorge6969
10-06-2010, 17:24
ciao a tutti, avrei bisogno di un programma che:
dato un file di testo contenente delle parole (anche insensate) separate da spazi,
ricerchi all'interno di esso il NUMERO DI PAROLE (contatore), che:
inizino con 'ca', finiscano con 'ru' ma che non contengano NESSUNA lettera 'k'
sono quindi 3 controlli da implementare....
successivamente modifichero il programma con ricerche specifiche inserite dall'utente:
esempio: con quale due lettere vuoi ricercare? con quale due lettere vuoi che finisca la parola? quale lettera non vuoi che sia presente.
successivamente ancora, modificherò il programma per adattarlo ad una lista di IP.
fatemi sapere se riuscite ad assermi di aiuto.
mi è chiaro che bisogna scorrere tutte le parole del testo ed effettuare i 3 controlli, aumentare il contatore solo una volta che i 3 controlli siano soddisfatti.
per adesso posso solo :muro:
io posso darti una mano ma con c++ che ha la classe string
con c devi lavorare con array di char ed è piu complicato
il-pollo
10-06-2010, 18:29
bool myTest( Parola p ){
return (p inizia per "ca"?) and ...;
}
int myFunction( ListaDiParole wl ){
if ( wl è vuota? ){
return 0;
} else {
return myTest( elementoInTesta(wl) ) + myFunction( codaDellaLista(wl) );
}
}
main(){
wordList = creaListaDiParole( inputString );
return myFunction( wordList );
}
è pure una versione ricorsiva, così puoi fare anche il figo :D
bostongeorge6969
10-06-2010, 19:07
purtroppo devo usare c e non c++.
Scusate la mia ignoranza, non mi sembra difficilissimo eppure non ci arrivo.......
--------------------------------------------------------------
ad esempio con questo programma riesco a ricercare quante volte è contenuta la parola "the", dentro un file di testo
------------------------
#include <stdio.h>
#include <string.h>
#define NOME_FILE "frank.txt"
int main()
{
FILE * file_in;
char stringa[128];
int nthe = 0;
file_in = fopen(NOME_FILE, "r");
if(file_in == NULL)
{
printf( "Non trovo il file.\n" );
getchar();
}
// accedo al file frank.txt e trovo quante volte compare la parola "the"
while ( fscanf( file_in , "%s", stringa ) == 1)
{
if (!strcmp(stringa, "the"))
nthe++;
}
fflush(file_in);
fclose(file_in);
getchar();
return 0;
}
------------------------------------------------
in quello che devo fare devo solo implemetare 3 controlli in piu:
1 - che la parola inizi con ca
2 - che la parola finisca con ru
3 - non contenga nessuna k
--------------------------------
esempio, se mil mio file è composto dalle parole:
caferu cakeru fakeru cakeca
il contatore mi deve restituire 1, perchè solo la parola caferu soddisfa tutte e tre le condizioni.
grazie....:doh:
clockover
11-06-2010, 00:38
Posso darti uno spunto...
parola bruciaggine
devo verificare che cominci con bru, finisca con ine, e non contenga nessuna k
char parola[] = "bruciaggine";
char first[] = "bru";
char last[] = "ine";
int first_length = strlen(first);
int last_legnth = strlen(last);
if(strncmp(parola, first, first_len) != 0)
return 0;
int parola_len = strlen(parola);
int index = parola_len - last_len;
int y = 0;
for(index; index < parola_len; index++)
if(parola[index] != last[y++])
return 0;
index = 0;
for(index; index < parola_len; index++)
if(parola[index] == 'k')
return 0;
return 1;
questo è l'algoritmo per la ricerca di parole che iniziano per qualcosa, finiscono per altro, e non contengono k... ovviamente lo modifichi a tuo piacimento... dovrebbe fungere comunque
P.S.
Tra l'altro devo anche ringraziarti perchè avevo veramente dimenticato la funzione fscanf che proprio in questo momento mi fa proprio comodo :-)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.