La Ultima Esencia
Noticias:
 
*
Bienvenido(a), Visitante. Por favor, ingresa o regístrate. Noviembre 22, 2008, 13:12:49


Ingresar con nombre de usuario, contraseña y duración de la sesión


Páginas: [1]
  Imprimir  
Autor Tema: Programa que invierte una cadena de caracteres...  (Leído 1731 veces)
0 Usuarios y 1 Visitante están viendo este tema.
pianista
Administrador

Conectado Conectado

Mensajes: 2587


« : Octubre 06, 2007, 12:07:06 »

A ver si me puedes decir androsfenix que esta mal, este es el error de compilacion:

pianista@pianista-laptop:~/C$ gcc ordena.c -o ordena
ordena.c: En la función ‘main’:
ordena.c:5: error: falta el tamaño de la matriz en ‘letritas’
ordena.c:5: error: falta el tamaño de la matriz en ‘final’
ordena.c:9: error: tipos incompatibles en la asignación
ordena.c: En la función ‘invierte’:
ordena.c:22: error: existe la declaración para el parámetro ‘j’ pero no hay tal parámetro
ordena.c:22: error: existe la declaración para el parámetro ‘i’ pero no hay tal parámetro


y aqui tienes el codigo fuente

Código
GeSHi (c):
#include <stdio.h>
 
main()
{
char letritas[], final[];
 
printf("Bienvenido a nuestro invierte cadenas\n");
printf("A continuacion introduzca su cadena a invertir\n");
letritas = getchar();
//Lee la cadena de letras,hasta que llegue el fin de lineas
 
invierte(letritas, final);
 
printf("Cadena invertida:\n");
printf(final);
 
}
 
invierte(s,a)
 
char s[],a[];
int i,j;
 
 
{
while (s[i] != '\0')
{
i++;
}
 
j = i;
 
 
for(i=0;j=0;i++)
{
a[j] = s[i];
j--;
}
 
}
 
 
 
 
 
 
 
 
 
 
 
Created by GeSHI 1.0.7.20
« Última modificación: Diciembre 21, 2007, 00:21:48 por pianista » En línea
pianista
Administrador

Conectado Conectado

Mensajes: 2587


« Respuesta #1 : Octubre 06, 2007, 13:00:38 »

Compila pero no funciona Cry Cry Cry

Código
GeSHi (c):
#include <stdio.h>
 
main()
{
char letritas[8], final[8], letra;
int c;
 
c = 0;
 
printf("Bienvenido a nuestro invierte cadenas\n");
printf("A continuacion introduzca su cadena a invertir\n");
 
while ((letra = getchar() != EOF) && (letra != '\n') && (c < 8))
{
letritas[c]= letra;
c++;
}
letritas[c] = '\0';
 
//Lee la cadena de letras,hasta que llegue el fin de lineas
 
invierte(letritas, final);
 
printf("Cadena invertida:\n");
printf(final);
 
}
 
invierte(s,a,i,j)
 
char s[],a[];
int i,j;
 
 
{
i = 0;
j = 0;
 
while (s[i] != '\0')
{
i++;
}
 
j = i;
 
 
for(i=0;j=0;i++)
{
a[j] = s[i];
j--;
}
 
}
 
 
 
 
 
 
 
 
 
 
Created by GeSHI 1.0.7.20
« Última modificación: Diciembre 21, 2007, 00:21:24 por pianista » En línea
pianista
Administrador

Conectado Conectado

Mensajes: 2587


« Respuesta #2 : Octubre 08, 2007, 20:31:30 »

Para mi que va a ser la lectura de los caracteres...
Quizas con un scanf funcione...
El que quiera probar que avise Grin Grin Grin
Saludos
En línea
mig
Moderador Global

Desconectado Desconectado

Mensajes: 627



WWW
« Respuesta #3 : Octubre 10, 2007, 19:54:35 »

A ver si sabéis qué coño le duele a este código, no para de pedir caracteres...  Sad
Código
GeSHi (c):
#include <stdio.h>
 
main()
{
       char c, origen[26], destino[26];
       int i,j;
 
       i=0;
       c=getchar();
       while ( i<26 && c != '\n' && c != EOF ) //asignar caracteres a la cadena y parar cuando se detecte intro o ^D
               {
               origen[i++]=c;
               c=getchar();
               }
       origen[i]='\0'; //poner fin a la cadena
 
       j=0;
       while ( i>=0 ) //asignacion de posiciones inversas
               if ((origen[i] != '\n') && (origen[i] != '\0'))
                       destino[j++]=origen[i--];
 
       destino[j]='\0';//poner fin a la cadena de salida
       printf("Cadena introducida:\t%s\nCadena invertida:\t%s\n", origen, destino);
}
 
Created by GeSHI 1.0.7.20
« Última modificación: Diciembre 21, 2007, 00:21:04 por pianista » En línea

El problema que tenemos los informáticos es que hay demasiadas películas de ciencia ficción
pianista
Administrador

Conectado Conectado

Mensajes: 2587


« Respuesta #4 : Octubre 10, 2007, 22:53:47 »

Prueba a meter el getchar dentro del while como hace el, quiero decir dentro de las condiciones del while...
A lo mejor es eso.. Wink
Cuando pueda pruebo, que ahora tengo que hacer lo de organizacion Grin
Saludos
En línea
pianista
Administrador

Conectado Conectado

Mensajes: 2587


« Respuesta #5 : Octubre 11, 2007, 07:51:50 »

Por cierto estaras acabando la linea con ctrol+D no???
Saludos
En línea
mig
Moderador Global

Desconectado Desconectado

Mensajes: 627



WWW
« Respuesta #6 : Octubre 14, 2007, 17:32:00 »

Lo solucioné, cuando tenga un ratico lo pongo
En línea

El problema que tenemos los informáticos es que hay demasiadas películas de ciencia ficción
pianista
Administrador

Conectado Conectado

Mensajes: 2587


« Respuesta #7 : Octubre 14, 2007, 18:15:10 »

jajaja yo ya paso de la cadena creo que empezare a hacer algun otro...
Por ejemplo los de la tabla de multiplicar parecen muy interesantes jajaj
Saludos
En línea
mig
Moderador Global

Desconectado Desconectado

Mensajes: 627



WWW
« Respuesta #8 : Octubre 16, 2007, 16:40:10 »

Código
GeSHi (c):
#include <stdio.h>
 
main()
{
       char c, origen[26], destino[26];
       int i,j;
 
       printf("Introduzca cadena: ");
       for (i=0;((origen[i]=getchar())!='\n') && (i<25);i++)
               ;
 
 
       origen[i--]='\0'; //poner fin a la cadena
       for ( j=0; i>=0; j++ ) //asignacion de posiciones inversas
               if ((origen[i] != '\n') && (origen[i] != '\0'))
                       {
                       destino[j]=origen[i];
                       i--;
                       }
 
       destino[j]='\0';//poner fin a la cadena de salida
       printf("Cadena introducida:\t%s\nCadena invertida:\t%s\n", origen, destino, i, j);
}
 
Created by GeSHI 1.0.7.20

Disfrútalo, pianista xDD
« Última modificación: Diciembre 21, 2007, 00:20:47 por pianista » En línea

El problema que tenemos los informáticos es que hay demasiadas películas de ciencia ficción
pianista
Administrador

Conectado Conectado

Mensajes: 2587


« Respuesta #9 : Octubre 16, 2007, 17:24:49 »

Gracias Wink
Yo estoy pensando probar a hacerlo con punteros, ya te dire que tal..
Saludos
En línea
pianista
Administrador

Conectado Conectado

Mensajes: 2587


« Respuesta #10 : Octubre 23, 2007, 12:21:45 »

mig a ver si sabes porque esta mierda compila pero da violacion de segmento...
Me suena a que me estoy metiendo en memoria que no es mia Grin Grin Grin
Código
GeSHi (c):
#include <stdio.h>
 
main()
{
 char cadena1[20],cadena2[20];
 printf("Introduzca la cadena a invertir (19 letras maximo)\n");
 scanf("%s",cadena1);
 invierte(cadena1,cadena2);
 printf("La cadena invertida es: %s\n",cadena2);
 
}
 
invierte(char cadena[20], char destino[20])
 
{
 int i,j;
 for(i=18,j=0;j=18;i--,j++)
 {
       destino[j] = cadena[i];
 }
destino[19]='\0';
}
 
 
 
Created by GeSHI 1.0.7.20
« Última modificación: Diciembre 21, 2007, 00:20:32 por pianista » En línea
mig
Moderador Global

Desconectado Desconectado

Mensajes: 627



WWW
« Respuesta #11 : Octubre 23, 2007, 17:38:13 »

en principio tienes que poner de condición del for de invierte como j<=18, estás poniendo una asignación

y otra cosa, no puedes hacer el for desde 18 hasta 0, porque el \0 puede estar en la posición 6, por ejemplo; tienes que buscar el final de cadena y hacerlo hasta ahí, y luego que se repita mientras j<=longmax
En línea

El problema que tenemos los informáticos es que hay demasiadas películas de ciencia ficción
pianista
Administrador

Conectado Conectado

Mensajes: 2587


« Respuesta #12 : Octubre 24, 2007, 08:04:20 »

Ya lo del '\0' lo iba pensando mientras venia a casa Wink
Volvere a probar...
En línea
pianista
Administrador

Conectado Conectado

Mensajes: 2587


« Respuesta #13 : Octubre 26, 2007, 11:14:02 »

Finalmente ni punteros ni nada, aunque hare otra con punteros que ya se hacerla Grin Grin
Código
GeSHi (c):
#include <stdio.h>
 
 
main()
{
 char cadena1[200],cadena2[200],c;
 int i,j,tam;
 
printf("Introduzca cadena a invertir:\n");
scanf("%s",cadena1);
 
while(cadena1[i]!='\0')
{
 i++;
}
 
tam=i;
j=tam-1;
 
for(i=0;i<tam;i++,j--)
{
 cadena2[j]=cadena1[i];
}
cadena2[tam]='\0';
printf("La cadena invertida:%s",cadena2);
 
 
 
 
}
 
 
Created by GeSHI 1.0.7.20
« Última modificación: Diciembre 21, 2007, 00:20:16 por pianista » En línea
Páginas: [1]
  Imprimir  
 
Ir a:  


Powered by SMF 1.1.6 | SMF © 2006-2007, Simple Machines LLC
Seo4Smf v0.2 © Webmaster's Talks


AFILIATE AQUI
Creative Commons License
Esta obra está bajo una licencia de Creative Commons.