|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Nov 2006
Messaggi: 5
|
programma in c(aiuto)!!
ciao a tutti..sono nuovo in questo sito e non sono molto esperto di programmazione in c, volevo un aiutino per risolvere questo programma!!
Scrivere un programma che legge in input due stringhe T e P, di lunghezza massima 100 caratteri, e stampa, se ci sono, tutte le parole in T che sono anagrammi della parola P. Altrimenti stampa "Non ci sono anagrammi". Per parola si intende una sequenza di caratteri alfabetici di lunghezza massimale. Input: T=La porta si apre e cade una pera. Le rape e la pera P=rape Output: apre pera rape pera ho provato a scrivere il codice, a me sembra giusto ma in realta non funziona e non riesco a trovare il problema!! se qualcuno puo aiutarmi!! ho diviso il programma in 3 funzioni, la funzione lungstr ( che legge le stringhe) e la funz. anagramma funzionano bene , le ho provate separatamente, ma il programma nn mi restituisce nulla. ciao e grazie in anticipo!! #include<stdio.h> #include<ctype.h> #define max 100 int anagramma(char s1[], char s2[]); int lungstr (char str[], long maxchars); int main() { char P[max], T[max], app[max]; int i, j, r; lungstr (P, max+1); lungstr (T, max+1); for(i=0,j=0; T[i]!= '\0'; i++,j++){ if(isalpha(T[i])){ app[j]=T[i]; } else{ r=anagramma(app,P); if(r==1)printf("%s",app); j=0; } } return 0; } int lungstr(char str[], long maxchars) { long lung=0; int finito =0; while(!finito){ char c = getchar(); if(isprint(c)){ str[lung++]=c; if(lung==maxchars) finito = 1; } else finito = 1; } str[lung] = '\0'; return lung; } int anagramma(char s1[], char s2[]) { int occ[256] = {0}, i; for (i=0; s1[i] != '\0'; i++) occ[s1[i]]++; for(i=0; s2[i] != '\0'; i++) occ[s2[i]]--; for (i=0; i<256 && occ[i]==0; i++); if(i==256) return 1; else return 0; } |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Toscana
Messaggi: 1196
|
Quote:
|
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Feb 2004
Città: milano
Messaggi: 2148
|
Ma che casino....hai appena iniziato vero??
La funzione lungstring è inutile, e pure scritta male. Per leggere le stringhe usa la fgets (funzione standard di libreria stdio.h). Fa gia' lei il controllo sull'input e ti mette il null finale. Successivamente creati una funzione che scorre la stringa T fino a che trovi uno spazio e nel frattempo copia i singoli char che trovi in un altra stringa. Compari le varie stringhe che trovi (strcmp) con la stringa P e nel caso anagrammi. Questa è la via piu' semplice senza scomodare troppo altre cose del C... PS. Rifai tutto da zero, è meglio. Se posso darti un consiglio fatti prima uno schemino a blocchi su carta, e ad ogni blocco scrivi quello che vuoi fare. Solo dopo inizia a scrivere il codice. Ultima modifica di airon : 01-11-2007 alle 18:41. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Feb 2004
Città: milano
Messaggi: 2148
|
|
|
|
|
|
|
#5 |
|
Junior Member
Iscritto dal: Nov 2006
Messaggi: 5
|
ok airon seguo il tuo consiglio rinizio da 0!!!
Ultima modifica di tidus_10 : 01-11-2007 alle 18:44. |
|
|
|
|
|
#6 |
|
Junior Member
Iscritto dal: Nov 2006
Messaggi: 5
|
come si usa la funzione fgets?
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Feb 2004
Città: milano
Messaggi: 2148
|
Leggiti l'help, cerca su internet, scaricati qualche manuale gratuito, qualche lezione ecc.
Trovi una marea di cose. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:09.




















