| Ver tema anterior :: Ver siguiente tema |
| Autor | Mensaje |
|---|
herbst
Registrado: 14 May 2011 Mensajes: 3
| Publicado: 14/05/2011 9:10 pm | | | Título: AYUDA CON UNA CADENA |
| HOLA TENGO UN PROBLEMA CON UNAS CADENAS TENGO ESTE PROGRAMA main() { char a[30]; int x,i,j; printf("dame la cadena"); gets (a) x=strlen(a); for(i=0;i<x;i++) { printf("\n"); for(j=0;j<=i;j++) { printf("%c",a[j]); }} getch(); }
me imprime una cadena de la sig manera e es esc escu escue escuel escuela
ahora mi problema es que nose como hacerle para que me lo imprima de la sig manera
escuela escuel escue escu esc es e
y otro
a la ela uela cuela scuela escuela |
|
| Volver arriba | |
 |
rir3760

Registrado: 01 Oct 2004 Mensajes: 6586 Ubicación: Mexico
| Publicado: 15/05/2011 7:12 am | | | Título: |
| Hola herbst
Bienvenido a los foros. Cuando tengas una duda por favor indica el lenguaje de programacion que estas utilizando junto con el codigo completo del programa. Mas informacion en la pagina reglas de los foros.
Los ejercicios tratan el proceso del array mediante indices, en el primer caso imprimes un numero de lineas igual al numero de caracteres y siempre desde el primer elemento (indice 0), la primera linea con solo un caracter, la segunda con dos ... la ultima con el total de caracteres en la cadena.
El programa que presentas tiene algunas deficiencias como el uso de gets y la biblioteca conio de Borland. Ese programa modificado para que compile como C estandar es:
| Código: | #include <stdio.h> #include <stdlib.h>
#define NUM_CHARS 30
int main(void) { char linea[NUM_CHARS]; int i; int j; int k; puts("Teclea la linea:"); if (fgets(linea, NUM_CHARS, stdin) == NULL) return EXIT_FAILURE; /* Calculamos la longitud de la cadena y eliminamos el '\n' */ for (k = 0; linea[k] != '\0' && linea[k] != '\n'; k++) ; linea[k] = '\0'; /* Proceso del array */ for (i = 0; i < k; i++){ for (j = 0; j <= i; j++) putchar(linea[j]); putchar('\n'); } return EXIT_SUCCESS; } |
En el segundo caso basta con realizar el bucle al reves imprimiendo primero todos los caracteres (siempre desde el primero) y terminando con la impresion de uno solo:
| Código: | /* Proceso del array */ for (i = k; i > 0; i--){ for (j = 0; j < i; j++) putchar(linea[j]); putchar('\n'); } |
El tercer caso es similar al primero (imprimir 1, 2, ... N caracteres) pero debes imprimirlos considerando el final de la cadena. Te conviene intentarlo primero tu solo para asi practicar el uso de indices.
Un saludo _________________ Memory never recaptures reality. Memory reconstructs. All reconstructions change the original, becoming external frames of reference that inevitably fall short. -- Mentat Handbook |
|
| Volver arriba | |
 |
herbst
Registrado: 14 May 2011 Mensajes: 3
| Publicado: 15/05/2011 1:00 pm | | | Título: |
| Gracias rir3760
y el lenguaje qe estoy utilisando es el Dev-C++ como voy empesando no le entiendo mucho a lo de los caracteres :S |
|
| Volver arriba | |
 |
|
rir3760

Registrado: 01 Oct 2004 Mensajes: 6586 Ubicación: Mexico
| Publicado: 16/05/2011 4:08 am | | | Título: |
| Por partes:
* Dev-C++ es un IDE (entorno de desarrollo integrado) que permite utilizar ambos lenguajes (C y C++). Supongo es C, ¿Correcto?
* Dev-C++ ya tiene varios años sin actualizarse y para seguir alguno de los cursos recomendados para principiantes (como el de Gorka) ya no es una buena opcion. Lo mejor aqui es utilizar el motor de busqueda para revisar las opiniones. Dos que se mencionan con cierta frecuencia en los foros son code::blocks y Microsoft Visual Studio Express.
* Si apenas inicias te conviene tener a la mano un curso/libro para apoyarte, de nuevo utiliza el motor de busqueda y revisa la seccion "Cursos" de este sitio.
* En cuanto al ultimo ejercicio solo tienes que empezar por el ultimo caracter de la cadena (indice N-1) e imprimirlo, despues pasas al penultimo (indice N-2) e imprimes dos caracteres, asi hasta imprimir la cadena completa:
| Código: | /* Proceso del array */ for (i = k-1; i >= 0; i--){ for (j = i; j < k; j++) putchar(linea[j]); putchar('\n'); } |
Un saludo _________________ Memory never recaptures reality. Memory reconstructs. All reconstructions change the original, becoming external frames of reference that inevitably fall short. -- Mentat Handbook |
|
| Volver arriba | |
 |
herbst
Registrado: 14 May 2011 Mensajes: 3
| Publicado: 18/05/2011 12:03 am | | | Título: |
| gracias rir
una duda qe libro me podrias recomendar para ayudarme devido qe voy empesando la carrera de ingenieria en computacion y apenas estoy empesando a programar |
|
| Volver arriba | |
 |
rir3760

Registrado: 01 Oct 2004 Mensajes: 6586 Ubicación: Mexico
| Publicado: 18/05/2011 4:01 am | | | Título: |
| Depende del lenguaje.
Si se trata de C++ puedes empezar con el libro (gratuito) de Bruce Eckel "Thinking in C++", un vinculo a su pagina principal se encuentra en la seccion "Cursos" de este sitio.
Si se trata de C y ya tienes experiencia con algun otro lenguaje de programacion (por ejemplo Basic) el K&R2 es una buena opcion: ---- C Programming Language, 2nd Edition Brian W. Kernighan and Dennis Ritchie Prentice Hall, Inc., 1988. ISBN: 0-13-110362-8 (paperback), 0-13-110370-9 (hardback). ---- El lenguaje de programación C, segunda edición. Brian W. Kernighan, Dennis M. Ritchie. Prentice-Hall Hispanoamericana, 1991. ISBN: 968-880-205-0 ----
Pero si C es tu primer lenguaje seria mejor empezar con otro libro, en este caso mi recomendacion es (por desgracia solo disponible en ingles): ---- Pointers on C, 1st edition Kenneth Reek Addison Wesley, July 25, 1997 ISBN: 0673999866 ----
Un saludo _________________ Memory never recaptures reality. Memory reconstructs. All reconstructions change the original, becoming external frames of reference that inevitably fall short. -- Mentat Handbook |
|
| Volver arriba | |
 |
|
|