/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

AYUDA CON UNA CADENA

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
herbst



Registrado: 14 May 2011
Mensajes: 3

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

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

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

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

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

MensajePublicado: 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
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com