PDA

Visualizza la versione completa : [C] Determinare se una stringa palindroma


francesco87
07-11-2007, 19:24
:ciauz: sto cercando di fare un programma in C che risolvi il seguente problema:

Scrivere una funzione che preso in input una stringa stampi 1 se la stringa palindroma, altrimenti 0. Un stringa palindroma (http://it.wikipedia.org/wiki/Palindromo)
se leggendola da sinistra a destra o da destra a sinistra si legge la stessa cosa. Ad
esempio la stinga ada palindroma, aerea `e una stringa palindroma.

Questo il programma che ho realizzato io ma mi da errore ma non riesco a corregerlo:

#include <stdio.h>
#include <stdlib.h>
#define N 255

char funzione (int);
int main()
{
int v[N];
printf("inserisci una parola\n");
scanf("%d", N);
funzione (N);
}

char funzione (int v)
{
int i, j;
for(i = 0; i < N - 1; i++){
for(j = N - 1; j >= 0; j--){
if (v[i] == v[j])
printf("1");
else
printf("0");
}}
system("pause");
}

MacApp
07-11-2007, 19:41
Ho provato a compilare con gcc -Wall (versione i686-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5367)
e da i seguenti errori/warning, che dovrebbero spiegarsi da soli:



main.c: In function 'main':
main.c:10: warning: format '%d' expects type 'int *', but argument 2 has type 'int'
main.c:8: warning: unused variable 'v'
main.c:12: warning: control reaches end of non-void function
main.c: In function 'funzione':
main.c:19: error: subscripted value is neither array nor pointer
main.c:19: error: subscripted value is neither array nor pointer
main.c:25: warning: control reaches end of non-void function

In italiano significa:


main.c: Nella funzione 'main':
main.c:10: attenzione: nella scanf '%d' vuole l'indirizzo di un intero, ma tu mi passi un intero.
main.c:8: attenzione: all'inizio di main definisci la variabile locale v, ma non la utilizzi mai.
main.c:12: attenzione: la funzione main dovrebbe restituire un intero, ma non restituisce nulla.
main.c: Nella funzione 'funzione':
main.c:19: errore: v non n un array n un puntatore
main.c:19: errore: v non n un array n un puntatore
main.c:25: attenzione: la funzione 'funzione' dovrebbe restituire un carattere, ma non restituisce nulla.

francesco87
07-11-2007, 19:58
Iol'ho compilato con dev c++ e mi da solamente l'errore alla riga 19 che non so come risolvere.

MacApp
07-11-2007, 20:00
io ti ho dato gli errori ed i warning del mio compilatore, il tuo che errore da?

francesco87
07-11-2007, 20:08
19 invalid types `int[int]' for array subscript

MacApp
07-11-2007, 20:21
Essenzialmente anche il tuo compilatore ti dice che stai cercando di utilizzare delle parentesi quadre dove non puoi.

Che cos' infatti 'v' nella funzione 'funzione'? E' un parametro di tipo intero!

francesco87
07-11-2007, 20:32
in poche parola io voglio dire che se l'elemento i del vettore v uguale all'elemento j del vettore v allora scrivi 1.
i e j sono numeri interi che ho dichiarato nell funzione funzione

MacApp
07-11-2007, 20:39
Originariamente inviato da francesco87
in poche parola io voglio dire che se l'elemento i del vettore v uguale all'elemento j del vettore v allora scrivi 1.
i e j sono numeri interi che ho dichiarato nell funzione funzione
Ma nella funzione 'funzione' v non un vettore: un parametro/argomento numero intero di tipo int della funzione 'funzione' (e dagli un altro nome alla funzione 'funzione'...).

francesco87
07-11-2007, 20:40
Quindi basta che gli do un'altro nome e lo vede come vettore?

MacApp
07-11-2007, 20:43
Originariamente inviato da francesco87
Quindi basta che gli do un'altro nome e lo vede come vettore?
No, ma l'errore che ti restituir il compilatore ti sar pi chiaro.

Loading