ayuda por favor error

Iniciado por stevengvr, 26 Junio 2015, 16:36 PM

0 Miembros y 1 Visitante están viendo este tema.

stevengvr

tengo que se supone hacer un programa que lea dos palabras y muestre por pantalla si son iguales no se por que me da error soy muy novato eso si


Citar#include <stdlib.h>
#include <stdio.h>

int main()
{
         char pal1[20], pal2[20];
         printf("escriba una palabra:");
         gets(pal1);
         printf("\n escriba otra palabra:");
         gets(pal2);
         
         if(pal1 = pal2)
         {
                    printf("\n las palabras son iguales");
                    }
                    else {
                         printf("\n las palabras no son iguales");
                         }
system ("PAUSE");
return 0;
}

engel lex

#1
hola!

los titulos de los temas deben ser descriptivos al problema

por otro lado, lo que haces tiene por lo minimo 2 errores...


primera aclaratoria: pal1 y pal2 son punteros a las direcciones de memoria donde están alojados sus 20 elementos

segundo if(pal1 = pal2) es un error ya que lo que haces es asignarle a pal1 el contenido de pal2, nunca fue comparado, para comparar debería ser
Código (cpp) [Seleccionar]
if(pal1==pal2)

y ccomo ya indiqué ellos son punteros a memoria, es decir, ellos contienen un numero donde está alojado eso, por lo tanto siempre será diferente, aquí vamos a el siguiente error


tercero, para comparar arreglos en c, existe la gran diferencia que no puedes intentar compararlos directamente, tienes varios metodos, el mas "rustico" sería comparar sus elementos directamente

Código (cpp) [Seleccionar]

int posicion;
for(posicion = 0;posicion<20; posicion++){
   if(pal1[posicion]!=pal1[posicion]){
       break;
   }

}
if(posicion<20){
   print("las palabras no son iguales");
}else{
   printf("las palabras son iguales")
}

que hace este codigo?
en un ciclo (for) intenta recorrer los arreglos hasta el final (<20), sin embargo, si hay una diferencia ( != )en alguno de sus elementos el ciclo se rompe (break), luego revisamos hasta donde avanzó el ciclo, si avanzó hasta menos de donde debia, quiere decir que fue roto

otra solución más simple es usar la librería string.h y la función strcmp (string compare)

#include <string.h>
// todo el codigo... hasta el gets

if( strcmp (pal1,pal2) == 0){
   printf("las palabras son iguales");
}else{
   printf("las palabras no son iguales");
}



espero te sirva

te recomiendo intentar leer tutoriales de progrmación en c antes de intentar crear algo, ya que C no es el más simple de los lenguajes, aunque es muy versatil y potente
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.