c problema (al revés)

  • arminho1
  • Newbie
  • Newbie
  • No Avatar
  • Registrado: Oct 04, 2003
  • Mensajes: 6
  • Status: Offline

Nota Octubre 7th, 2003, 2:35 pm

hola,
im aprendiendo el lenguaje C, y tengo algunos problemas con él.
por lo que quiero escribir una función que invierte me i palabra digitada pulg
mi código se ve tan lejos como este:

Código: [ Select ]
#include <stdio.h>
#include <stdlib.h>

rev(char * s),j,i; 
char inbuf[20],conv[20],n;

int main()
{
    printf("enter a word with max 20 characters : ");
    fgets(inbuf, 20, stdin);
    rev(inbuf);
    printf("the reverse word is %s",inbuf);  
}

rev(char * s)
{
    j=0;
    for (i=21;i>0;i--)
    {
        conv[j]=inbuf[i];
        j++;
    }
    return conv;
}    
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. rev(char * s),j,i; 
  4. char inbuf[20],conv[20],n;
  5. int main()
  6. {
  7.     printf("enter a word with max 20 characters : ");
  8.     fgets(inbuf, 20, stdin);
  9.     rev(inbuf);
  10.     printf("the reverse word is %s",inbuf);  
  11. }
  12. rev(char * s)
  13. {
  14.     j=0;
  15.     for (i=21;i>0;i--)
  16.     {
  17.         conv[j]=inbuf[i];
  18.         j++;
  19.     }
  20.     return conv;
  21. }    


pero que no funciona. Espero que alguien me puede ayudar.
thanx
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Octubre 7th, 2003, 2:35 pm

  • arminho1
  • Newbie
  • Newbie
  • No Avatar
  • Registrado: Oct 04, 2003
  • Mensajes: 6
  • Status: Offline

Nota Octubre 7th, 2003, 2:40 pm

me olvidé de escribir un ejemplo:
i cuando escribe "inusual" mi resultado debe ser "lausunu"
Gracias
  • RichB
  • Guru
  • Guru
  • Avatar de Usuario
  • Registrado: May 17, 2003
  • Mensajes: 1121
  • Loc: Boston
  • Status: Offline

Nota Octubre 7th, 2003, 5:14 pm

Tengo que comenzar con mi disclaimer estándar que no he trabajado mucho con C desde la escuela. Con esto en mente:

No se han declarado iyj correctamente. Tienen que ser declaradas con un tipo de datos (int i, j;). Declaración de variables a nivel mundial está desaconsejado en la mayoría de los casos, por lo que deben ser declaradas dentro de la función de revoluciones y inbuff deben ser declaradas dentro de principal. Usted no necesita una matriz de caracteres segundo para guardar el resultado, porque para invertir la cadena que se intercambio de los caracteres externos e internos dentro de la matriz de caracteres. Usted no necesita un valor de retorno debido a que el nombre de la matriz es un tipo de puntero y cuando se pasa a una función que está pasando su dirección, por lo que la funtion operará en él directamente.

Para cambiar los caracteres internos y externos, tendrá que utilizar el strlen () la función de conocer la personalidad cuántos son en la cadena, y tendrá que incluir el encabezado del archivo string.h . strlen () devuelve el número de caracteres en la cadena para la cadena de inusual tendrá una longitud de 7. Dado que la matriz de caracteres que contiene la cadena está indexado a cero, el último carácter es generalmente strlen (buff) - 1 o inbuf [6] en este caso. Sin embargo, un problema adicional es la fgets () contará con el carácter de nueva línea al final de la cadena como un carácter válido, así que el último carácter que queremos invertir será el segundo para el final o strlen (buff) -2

Su función debería ser algo así, o al menos así es como yo lo hice hace un momento (he usado en vez de i interior, y exterior en lugar de j para los nombres de variable, porque pensé que sería más descriptivo).
Código: [ Select ]
void rev(char* s)
{
    int inner, outer= strlen(s)-2;
    char temp;

    for (inner=0; inner < outer; inner++, outer--)
    {    
        temp = s[inner];
        s[inner] = s[outer];
        s[outer] = temp;
    }
}
  1. void rev(char* s)
  2. {
  3.     int inner, outer= strlen(s)-2;
  4.     char temp;
  5.     for (inner=0; inner < outer; inner++, outer--)
  6.     {    
  7.         temp = s[inner];
  8.         s[inner] = s[outer];
  9.         s[outer] = temp;
  10.     }
  11. }
Free Programming Resources

Publicar Información

  • Total de mensajes en este tema: 3 mensajes
  • Usuarios navegando por este Foro: Zealous y 124 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC