elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 23:27  


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)
| | |-+  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 627 veces)
swagger14

Desconectado Desconectado

Mensajes: 13


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

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: 382


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

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
int fn_cmp(char const *s, char const *t)
{
  while (*s == *t && *s != '\0'){
     s++;
     t++;
  }
 
  return (*s > *t) - (*s < *t);
}

El resto te toca a ti.

Un saludo


En línea

The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
swagger14

Desconectado Desconectado

Mensajes: 13


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

 ok muchas grasiaas

En línea
darkvidhack

Desconectado Desconectado

Mensajes: 119


Obsesionado!!


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

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: 13


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

qu
En línea
swagger14

Desconectado Desconectado

Mensajes: 13


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

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: 119


Obsesionado!!


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

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: 382


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

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
int main(void)
{
   char cad1[lim];
   char cad2[lim];
 
   printf("digite cadena 1 ");      
   gets(*cad1);
 
   printf("digite cadena 2");
   gets (*cad2);
 
   /* llamada a la funcion */
 
   return 0;
}

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

The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Nuevo en el Sitio <Cadena de caracteres> <funcion strcmp> <funcion toupper>
Programación C/C++
magnavox 6 1,620 Último mensaje 15 Febrero 2006, 01:27
por Kanny
Funcion en PHP ..ayuda..!
PHP
SoFtDrAkE 0 362 Último mensaje 21 Abril 2007, 23:40
por SoFtDrAkE
[Ayuda] Función IF
Programación Visual Basic
Servia 6 660 Último mensaje 15 Diciembre 2007, 18:22
por Spider-Net
ayuda con la funcion rnd
Programación Visual Basic
pana88 2 446 Último mensaje 7 Enero 2008, 03:18
por pana88
Skype bloquea función de intercambio de vídeo en función de chat
Noticias
wolfbcn 0 202 Último mensaje 24 Enero 2008, 20:31
por wolfbcn
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines