Home   Artículos   Recursos   Foros   
Artíclos recientes publicados en Latindevelopers:

Visual C++: NSDoubleEdit: Un control para el manejo de números decimales en Visual C++.
Visual C++: Implementando una Calculadora en Visual C++
Visual C++: CCommandLine: Una clase para el uso de la linea de comando
Visual C++: Una clase para el manejo del Registro


determinar si array es palindromo

Aqui programadores en la plataforma Win32 con Visual C++ de Microsoft...

Moderador: latindeveloper

determinar si array es palindromo

Notapor mapassja el Mar Nov 28, 2006 9:42 am

Hola, tengo un problema con mi funcion de palindromo pero la verdad es que no sabria como arreglarla (en algun lugar de las condiciones del while tengo un error)







Código: Seleccionar todo
// palindroom.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#define MAX 40

int lees(int tabel[])
{
int i=1,get,res=1;
printf ("Geef reeks getalen:");
scanf ("%d", &get);
while (get>=0 && i<MAX)
{
    tabel[i]=get;
    i++;
    if (i<MAX)
       scanf ("%d", &get);
}
return (i-1);
}


int palindroom( int tabel[], int eindgrens) //si se lee igual de adelante hacia atras y viceversa, debe regresar valor TRUE
{
   int i=0, res=1,end=eindgrens/2;
   while (i<=end && res)
   {
      if (tabel[i]!=tabel[eindgrens-1])
         res=0;
      i++;
   }
return res;}





void main()
{
   
int tabel[MAX],eindgrens,p;
  eindgrens=lees(tabel);
  printf ("%d", eindgrens);
  p=palindroom (tabel, eindgrens);
  printf ("%d\n",p);
  if (p!=0)
     printf ("palindroom\n"); //verdadero
  else
     printf ("geen palindroom\n"); //falso

}









Gracias de antemano :roll:
You are one of God's mistakes :(
mapassja
Novato
Novato
 
Mensajes: 10
Registrado: Jue Oct 19, 2006 1:57 pm
Ubicación: Aqui ando

if (tabel[i]!=tabel[eindgrens-1-i])

Notapor atp el Mar Nov 28, 2006 11:12 am

No me he podido fijar muy bien, la verdad. Pero creo que tienes un error en la líena que pone

"if (tabel[i]!=tabel[eindgrens-1]) "

creo que deberia poner algo como

"if (tabel[i]!=tabel[eindgrens-1-i])"

ya que tú siempre comparas con el último elemento de la cadena, y no debería ser así. Debes comparar con el último, luego con el penúltimo, por eso debes reastarle al índice la "i".

Pruebalo a ver si te sirve.
atp
Usuario Muy Activo
Usuario Muy Activo
 
Mensajes: 132
Registrado: Mar Ene 03, 2006 3:52 pm

:'(

Notapor mapassja el Vie Dic 01, 2006 6:22 am

Nadie????


Código: Seleccionar todo

// palindroom.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#define MAX 40

int lees(int tabel[])
{
int i=1,get,res=1;
printf ("Geef reeks getalen:");
scanf ("%d", &get);
while (get>=0 && i<MAX)
{
    tabel[i]=get;
    i++;
    if (i<MAX)
       scanf ("%d", &get);
}
return (i-1);
}


int palindroom( int tabel[], int eindgrens) //si se lee igual de adelante hacia atras y viceversa, debe regresar valor TRUE
{
   int i=0, res=1,end=eindgrens/2;
   while (i<=end && res!=0)
   {
      if (tabel[i]!=tabel[eindgrens-1-i]);
         res=0;
      i++;
   }
return res;}





void main()
{
   
int tabel[MAX],eindgrens,p;
  eindgrens=lees(tabel);
  printf ("%d", eindgrens);
  p=palindroom (tabel, eindgrens);
  printf ("%d\n",p);
  if (p!=0)
     printf ("palindroom\n"); //verdadero
  else
     printf ("geen palindroom\n"); //falso

}

[quote]



creo que el error esta aqui

[/quote]int palindroom( int tabel[], int eindgrens) //si se lee igual de adelante hacia atras y viceversa, debe regresar valor TRUE
{
   int i=0, res=1,end=eindgrens/2;
   while (i<=end && res!=0)
   {
      if (tabel[i]!=tabel[eindgrens-1-i]);
         res=0;
      i++;
   }
return res;}


siempre da 0 /FALSE :cry:
You are one of God's mistakes :(
mapassja
Novato
Novato
 
Mensajes: 10
Registrado: Jue Oct 19, 2006 1:57 pm
Ubicación: Aqui ando

Re: determinar si array es palindromo

Notapor latindeveloper el Vie Dic 01, 2006 5:23 pm

intenta con esta otra funcion

Código: Seleccionar todo
int palindroom( int *table, int nSize)
{
   int i = 0;

   while (i < nSize/2 )
   {
      if (table[i] != table[nSize - 1 - i])
     {
         return 0;
     }
      i++;
   }
   return 1;
}



Uso:

Código: Seleccionar todo
   int array[] = {1,2,3,4,5,6,5,4,3,2,1};
   palindroom(array,11); // 1
Imagen
Avatar de Usuario
latindeveloper
Administrador
Administrador
 
Mensajes: 1061
Registrado: Lun Jun 02, 2003 8:30 pm
Ubicación: Peru


Volver a Visual C++

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 0 invitados