elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ayuda por favor error
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda por favor error  (Leído 959 veces)
stevengvr

Desconectado Desconectado

Mensajes: 3


Ver Perfil
ayuda por favor error
« en: 26 Junio 2015, 16:36 pm »

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;
}
         


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: ayuda por favor error
« Respuesta #1 en: 26 Junio 2015, 17:35 pm »

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
  1. 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
  1. int posicion;
  2. for(posicion = 0;posicion<20; posicion++){
  3.    if(pal1[posicion]!=pal1[posicion]){
  4.        break;
  5.    }
  6.  
  7. }
  8. if(posicion<20){
  9.    print("las palabras no son iguales");
  10. }else{
  11.    printf("las palabras son iguales")
  12. }
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)

Código
  1. #include <string.h>
  2. // todo el codigo... hasta el gets
  3.  
  4. if( strcmp (pal1,pal2) == 0){
  5.    printf("las palabras son iguales");
  6. }else{
  7.    printf("las palabras no son iguales");
  8. }
  9.  
  10.  

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


« Última modificación: 26 Junio 2015, 17:49 pm por engel lex » En línea

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.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
error de video ayuda por favor
Multimedia
AKUARIUS23 1 1,365 Último mensaje 25 Noviembre 2004, 06:30 am
por Songoku
ERROR con el Foro POr favor Ayuda « 1 2 »
Sugerencias y dudas sobre el Foro
Filibustero de bolsillo 11 3,659 Último mensaje 5 Marzo 2007, 21:28 pm
por
Ayuda por favor un error
Programación C/C++
MellaSystems 0 847 Último mensaje 19 Mayo 2015, 03:22 am
por MellaSystems
android/meterpreter/reverse_tcp error por favor ayuda
GNU/Linux
log015 0 1,685 Último mensaje 24 Agosto 2017, 02:08 am
por log015
Error con el comando wash -i ¿Alguna ayuda? Por favor
Wireless en Linux
dellted 3 1,829 Último mensaje 11 Abril 2018, 02:17 am
por BloodSharp
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines