pianista
Administrador
Desconectado
Mensajes: 2623
|
 |
« : 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 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
Desconectado
Mensajes: 2623
|
 |
« Respuesta #1 : Octubre 06, 2007, 13:00:38 » |
|
Compila pero no funciona  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
Desconectado
Mensajes: 2623
|
 |
« 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  Saludos
|
|
|
|
|
En línea
|
|
|
|
mig
Moderador Global
Desconectado
Mensajes: 633
|
 |
« 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...  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
Desconectado
Mensajes: 2623
|
 |
« 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..  Cuando pueda pruebo, que ahora tengo que hacer lo de organizacion  Saludos
|
|
|
|
|
En línea
|
|
|
|
pianista
Administrador
Desconectado
Mensajes: 2623
|
 |
« 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
Mensajes: 633
|
 |
« 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
Desconectado
Mensajes: 2623
|
 |
« 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
Mensajes: 633
|
 |
« Respuesta #8 : Octubre 16, 2007, 16:40:10 » |
|
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
Desconectado
Mensajes: 2623
|
 |
« Respuesta #9 : Octubre 16, 2007, 17:24:49 » |
|
Gracias  Yo estoy pensando probar a hacerlo con punteros, ya te dire que tal.. Saludos
|
|
|
|
|
En línea
|
|
|
|
pianista
Administrador
Desconectado
Mensajes: 2623
|
 |
« 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  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
Mensajes: 633
|
 |
« 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
Desconectado
Mensajes: 2623
|
 |
« Respuesta #12 : Octubre 24, 2007, 08:04:20 » |
|
Ya lo del '\0' lo iba pensando mientras venia a casa  Volvere a probar...
|
|
|
|
|
En línea
|
|
|
|
pianista
Administrador
Desconectado
Mensajes: 2623
|
 |
« Respuesta #13 : Octubre 26, 2007, 11:14:02 » |
|
Finalmente ni punteros ni nada, aunque hare otra con punteros que ya se hacerla  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
|
|
|
|
|