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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ayuda con una funcion en c
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda con una funcion en c  (Leído 3,053 veces)
swagger14

Desconectado Desconectado

Mensajes: 17


Ver Perfil
ayuda con una funcion en c
« en: 19 Octubre 2011, 18:03 pm »

lo tengo q hacer es una funcion (pero es posible una forma d hacerlo sin la función strcmp) que compare 2 cadena enteras y devuelva -1 si cad1 <cad2 0, si son iguale ,
y 1 si  es mayor  hasta a hora esto es lo que tengo
Código:
#include<stdio.h>
#include<stdlib.h>

const int lim=20;

 int comparacadena( char cad1[lim],char cad2[lim]);


 int comparacadena( char cad1[lim],char cad2[lim]){
     
      char cad1[lim],cad2[lim];
     
  printf("digite cadena 1 ");
     
  gets(cad1);
  printf("digite cadena 2");
  gets (cad2);
  fflush(stdin); 
     
      if (cad1[lim]< cad2[lim]){
         printf ("cadena 1 es menor");
         return -1;
         }
               
          if (cad1[lim]=cad2[lim]){
               printf("cadenas son iguales");
            return 0;}
             if  (cad1>cad2){
                  printf ("cadena1 es mayor que cadena 2");   
                   return 1; 
             }
             }
     
    int main(){
               
        comparacadena( char cad1[lim], char cad2[lim]));
     
        system ("pause");
        return 0;
                     
               
               
               
 
                }


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: ayuda con una funcion en c
« Respuesta #1 en: 19 Octubre 2011, 19:29 pm »

Lo digo sin mala intención: ese programa esta muy mal y si apenas empiezas con el lenguaje C deberías conseguir un buen libro, para ello revisa los temas fijos de este foro.

Casi todo el proceso que haces en la función de comparación como pedir las cadenas e indicar el resultado lo debes pasar a la función principal con ciertas correcciones como evitar el uso de "gets" y "fflush(stdin)".

En cuanto a la implementación de la función para comparar, a esta se le pasa la dirección base de dos cadenas y debe retornar el resultado indicado. Un solución utilizando punteros:
Código
  1. int fn_cmp(char const *s, char const *t)
  2. {
  3.   while (*s == *t && *s != '\0'){
  4.      s++;
  5.      t++;
  6.   }
  7.  
  8.   return (*s > *t) - (*s < *t);
  9. }

El resto te toca a ti.

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
swagger14

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: ayuda con una funcion en c
« Respuesta #2 en: 21 Octubre 2011, 07:36 am »

 ok muchas grasiaas

En línea

darkvidhack

Desconectado Desconectado

Mensajes: 159


Be Linux my friend...


Ver Perfil WWW
Re: ayuda con una funcion en c
« Respuesta #3 en: 21 Octubre 2011, 19:27 pm »

Hola!! te doy un par de consejillos jeje:

1. Implementa directamente la función 'comparacadena', no hagas la declaración y luego la implementación aparte, eso sería si la implementaras debajo del 'main'.

2. Procura que la función 'comparacadena' solo se encargue de comparar las cadenas que le pasas, hay que tener un cierto de nivel de abstracción, es muy importante en la programación, es decir, que si tienes una función que te compara dos cadenas, asegurate que sólo hace eso, la lectura de las cadenas puedes hacerla en el main o en otra función aparte.

3. En la declaración de 'comparacadena' pones que devuelve un dato de tipo entero, y luego en el main llamas a la función como si devolviera un void, no te salta el compilador?

4. En este caso, la variable globar 'im' no está mal del todo, aunque las variables globales siempre se deben escribir en mayúscula, LIM, por supuesto, no acostumbres a poner muchas variables globales, ya que puede inducir a errores si hay un cierto grado de dependencia de las funciones con esta variable.

Y... creo que nada más, si tienes alguna duda postea ;)
En línea

live and let die

la duda es la base de todo conocimiento
swagger14

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: ayuda con una funcion en c
« Respuesta #4 en: 22 Octubre 2011, 08:18 am »

qu
En línea

swagger14

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: ayuda con una funcion en c
« Respuesta #5 en: 22 Octubre 2011, 08:29 am »

que tal a horaa el copilador no decteta error pero no corre!
Código:
#include<stdio.h>
#include<stdlib.h>

const int lim=20;

 int comparacadena( char *cad1[lim],char *cad2[lim]);
 
 int main(){
     char *cad1[lim],*cad2[lim];
     
      printf("digite cadena 1 ");     
      gets(*cad1);
      printf("digite cadena 2");
      gets (*cad2);
      fflush(stdin); 
      system ("pause");
      return 0;
     
      }
     
     
     
     
  int comparacadena( char *cad1[lim],char *cad2[lim]){
     
      {
   while (*cad1[lim] == *cad2[lim] && *cad1[lim] != '\0'){
      *cad1[lim]++;
      *cad2[lim]++;
   }
   if (*cad1[lim]< *cad2[lim]){
         printf ("cadena 1 es menor");
         return -1;
         }
               
          if (*cad1[lim]==*cad2[lim]){
               printf("cadenas son iguales");
            return 0;}
             if  (*cad1[lim]>*cad2[lim]){
                  printf ("cadena1 es mayor que cadena 2");   
                   return 1; 
             }
             
     
     
      }
      }
     
     
En línea

darkvidhack

Desconectado Desconectado

Mensajes: 159


Be Linux my friend...


Ver Perfil WWW
Re: ayuda con una funcion en c
« Respuesta #6 en: 22 Octubre 2011, 10:14 am »

hola de nuevo!! no corre el programa entero o la comparación? has pensado que quizás no estés llamando a la función 'comparacadena'? Porque en el main no veo ninguna llamada a la función, otra cosa, porque no pones 'comparacadena' que devuelva un bool?, así podrías poner

if (comparacadena(cadena1,cadena2) == true) {    mostrar que son iguales;    }  else  {

       mostrar que son distintas;
}


Saludos
En línea

live and let die

la duda es la base de todo conocimiento
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: ayuda con una funcion en c
« Respuesta #7 en: 22 Octubre 2011, 15:51 pm »

El programa sigue con errores: utilizas gets (no se recomienda), "fflush(stdin)" (tampoco), no llamas a la función (esto ya lo comento darkvidhack) y tratas de utilizar un array de punteros cuando debes utilizar un array.

En la función principal debes utilizar:
Código
  1. int main(void)
  2. {
  3.    char cad1[lim];
  4.    char cad2[lim];
  5.  
  6.    printf("digite cadena 1 ");      
  7.    gets(*cad1);
  8.  
  9.    printf("digite cadena 2");
  10.    gets (*cad2);
  11.  
  12.    /* llamada a la funcion */
  13.  
  14.    return 0;
  15. }

En cuanto a tu función de comparación lo mejor que se puede decir es que tiene varios errores que ya te comentamos mas algunos mas. Si no tienes material de referencia de calidad por favor revisa los temas fijos de estos foros, ahí encontraras a montones.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda en una función
Programación Visual Basic
karmany 0 1,222 Último mensaje 6 Febrero 2006, 00:14 am
por karmany
ayuda con la funcion Do Until
Programación Visual Basic
kakinets 5 2,401 Último mensaje 24 Marzo 2006, 15:11 pm
por karmany
Funcion en PHP ..ayuda..!
PHP
SoFtDrAkE 0 1,425 Último mensaje 21 Abril 2007, 23:40 pm
por SoFtDrAkE
[Ayuda] Función IF
Programación Visual Basic
Servia 6 1,916 Último mensaje 15 Diciembre 2007, 18:22 pm
por Spider-Net
ayuda con la funcion rnd
Programación Visual Basic
pana88 2 1,230 Último mensaje 7 Enero 2008, 03:18 am
por pana88
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines