|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
[C] Non compila
Ciao!
Mi sapreste dire cosa c'è che non va in questo listato? #include <stdio.h> #include <stdlib.h> #include <string.h> int palindroma(char *); main(){ char a[]="abba"; int result; result=palindroma(a); printf("Risultato = %d\n", result); return 0; } int palindroma (char *a){ char *i, *j; *i=a; *j=strlen(a)-1; if(*i++==*j--) return 1; else return 0; } Non me lo compila mi dice che l'assegnazione *i=a; mi tirerebbe fuori un int senza fare preventivamente un cast. Perché? |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Dicci di preciso che errore ti da. In ogni caso, non vedo il bisogno di dichiarare quella 'i' come puntatore, se poi usi sempre il dereferencing... dichiarala semplicemente come int e tutto andrà bene.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: May 2005
Città: Genova
Messaggi: 33
|
spero che sia solo una cosa di prova perchè non ha senso...
confronti solo la seconda e la penultima lettera.... |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Praticamente confronto la prima e l'ultima lettera in modo tale da controllare se sono uguali. Devo vedere se una stringa è palindroma. Il messaggio era in inglese non mi ricordo come diceva , però dalla traduzione che avevo fatto mi sembrava che dicesse proprio che dovevo fare un cast.
|
![]() |
![]() |
![]() |
#5 | |
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Quote:
Dato che anche a è un puntatore a char, non puoi assegnare a *i il valore di a senza fare un cast.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" ![]() Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
|
l'errore qui è corretto, non puoi piazzare un puntatore su un valore
se vuoi mettere sul serio il valore di i = all'indirizzo di a allora lo devi fare esplicitamente Codice:
#include <stdio.h> #include <stdlib.h> #include <string.h> int palindroma(char *); main(){ char a[]="abba"; int result; result=palindroma(a); printf("Risultato = %d\n", result); return 0; } int palindroma (char *a){ char *i, *j; *i=*a; *j=strlen(a)-1; if(*i++==*j--) return 1; else return 0; } confornti j[0]-1 con i[0]??? non so che voglia dire palindorma, ma non ne capisco il senso. ciao |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
|
Quote:
a[0] == a[strlen(a)-1] ciao |
|
![]() |
![]() |
![]() |
#8 |
Member
Iscritto dal: May 2005
Città: Genova
Messaggi: 33
|
cmq con questo codice non vedi mica se è palinidroma...fai solo un controllo...e non della prima e l'ultima lettera ma della seconda e penultima...poi se mi sbaglio qualcuno mi dica....
|
![]() |
![]() |
![]() |
#9 |
Member
Iscritto dal: May 2005
Città: Genova
Messaggi: 33
|
e ho qualche dubbio sull'assegnamento del puntatore j....ma magari sto male
![]() |
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
|
Quote:
![]() Codice:
int palindroma (char *a) { int i, len; i=0; len= strlen(a)-1; while (a[i++] == a[len--] && i<=len); if (i<=len) return 0; else return 1; } |
|
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
L'ho scritto così perché lo volevo fare tramite puntatori a vettore però mi sa che ho combinato un mezzo casotto
![]() Grazie comunque a tutti ![]() |
![]() |
![]() |
![]() |
#12 | |
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Quote:
Codice:
int palindroma (char *s) { int i,j; for (i=0,j=strlen(s)-1; i<j && s[i]==s[j]; i++,j--) ; return i>=j; }
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" ![]() Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:58.