PDA

Visualizza la versione completa : [C] Esistenza di un sottovettore palindromo


Pumpi
14-04-2012, 15:56
Scusate..ho sempre il solito problema con questi programmi. Devo scrivere un programma che legga da tastiera gli elementi di un vettore di dimensione 10 e dica se esiste un sottovettore palindromo di lunghezza maggiore di 1. Io ho tentato di scriverlo così ma non mi fa nemmeno compilare:



# include <stdio.h>
# include <stdlib.h>
# define n 10
# define m>1
int main(){
int V[n];
int i;
int A[m];
int start;
int end;
int count;
int j;
for(i=0;i<n;i++){
scanf("%d %d %d %d %d %d %d %d %d %d",&(V[0]), &(V[1]), &(V[2]), &(V[3]), &(V[4]), &(V[5]), &(V[6]), &(V[7]), &(V[8]), &(V[9]));}
for(i=0;i<n && count!=m;i++){
for(j=0;j<m;j++)
if(V[i]==A[j])
{
count++;
j++; }
else
{ count=0;
j=0;
if(V[i]==A[0])
i--; }}
int palindromo(A vettore, int start, int end)
if(start==end) return 1;
if(start+1==end) return (A[start]==A[end]);
return (A[start]==A[end] && palindromo(V,start+1,end-1)) }


la funzione ricorsiva dovrebbe essere giusta, ho provato ad applicarla e funziona, quindi il problema è nel definire il sottovettore.

Who am I
14-04-2012, 16:54
Qual'è l' errore?

Pumpi
14-04-2012, 18:28
Praticamente mi da errore esattamente qui:


for(i=0;i<n && count!=m;i++){
for(j=0;j<m;j++)
if(V[i]==A[j])
{
count++;
j++; }
else
{
count=0;
j=0;
if(V[i]==A[0])
i--;
}}

Quindi proprio nella definizione di sottovettore..però non riesco proprio a capire cosa sbaglio!

oregon
14-04-2012, 22:04
"Praticamente mi da errore esattamente qui:"

ma quale errore??

Pumpi
14-04-2012, 22:55
mi da errore a

for(j=0;j<m;j++)

oregon
14-04-2012, 22:57
Ma perché ci fai ripetere sempre la stessa domanda?

QUALE errore?

QUALE messaggio d'errore?

Caiodark
15-04-2012, 00:01
Tu scrivi:


# define m>1
...
for(j=0;j<m;j++)


Il compilatore capisce:



for(j=0;j<>1;j++)


E quindi ti spernacchia, cambia quel define...

oregon
15-04-2012, 00:05
Veramente quel define non è lecito ... dovrebbe dare un errore il compilatore a compile time.

Caiodark
15-04-2012, 00:09
Originariamente inviato da oregon
Veramente quel define non è lecito ... dovrebbe dare un errore il compilatore a compile time.

Infatti è quello che dice lui:

Originariamente inviato da Pumpi
Io ho tentato di scriverlo così ma non mi fa nemmeno compilare:

oregon
15-04-2012, 00:18
Sì, ma non nella linea della

for

come dice, ma proprio nella linea della

#include

Ovvero, la sostituzione di cui parli non dovrebbe neanche essere fatta ...

Loading