Foros del Web » Programación para mayores de 30 ;) » C/C++ »

C Crear un libro

Estas en el tema de C Crear un libro en el foro de C/C++ en Foros del Web. Hola, estoy haciendo un ejercicio, he estado unas tres horas, pero ahora llevo buscando un buen rato la solución pero no puedo. Este es el ...
  #1 (permalink)  
Antiguo 24/04/2010, 14:08
 
Fecha de Ingreso: abril-2010
Mensajes: 13
Antigüedad: 14 años
Puntos: 0
C Crear un libro

Hola, estoy haciendo un ejercicio, he estado unas tres horas, pero ahora llevo buscando un buen rato la solución pero no puedo. Este es el enunciado y este es el codigo:

Ejercicio 21: (Trabajar en casa) Diseña un programa que permita a un usuario almacenar texto simulando un libro. Supón que el libro contiene como máximo 5 páginas, que cada página puede contener hasta 15 renglones y que cada renglón solo puede contener 10 caracteres. El usuario podrá añadir renglones a una página cuyo número indicará. El programa detectará el primer renglón libre de la página en la que se van a añadir renglones. El salto de un renglón será indicado por el usuario pulsando Intro (ASCII=13). El final de introducción de renglones de texto se producirá cuando se llene la página o cuando el usuario teclee $. El usuario podrá consultar el texto contenido en un renglón determinado del libro o en una página determinada.


#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

void main()
{
char libro[10][15][5];
char letra;
int i, j, k, paginas, opcion, pagina, fila;

printf("¿Cuantas paginas vas a utilizar?\n");
scanf ("%d", &paginas);

printf ("Pulsa una tecla para comenzar\n");
getch();
system ("cls");

i=0;
j=0;
k=0;

while (k<=paginas-1)
{
while (i<=9)
{
while (j<=14)
{
letra=getche();

if (j==14)
{
printf("\n");
}

if (letra==13)
{
i=0;
j=0;
printf ("\n");
}

if (letra=='$')
{
i=100;
j=100;
k=100;
}

j++;
}
i++;
}
k++;
}

opcion=0;

while (opcion!=2)
{
printf ("\n\n¿Que quieres hacer ahora:?\n");
printf ("\tPulse 1 para ver lo que has introducido en un reglon de una pagina\n");
printf ("\tPulse 2 para salir\n");

scanf("%d", &opcion);

system("cls");

if (opcion==1)
{
printf ("Digame el reglon (fila)de la pagina que quiera mirar\n");
printf ("\tFila: ");
scanf ("%d", &fila);
printf ("\n\tPagina: ");
scanf ("%d", &pagina);

i=fila;
k=pagina;

for (j=0; j<=14; j++)
{
printf ("%c", libro[i][j][k]);
}
}
}

getch();
}


Me estan saliendo raices con el ejercicio este, no me funciona exactamente porque cuando introduzco 10 caracteres ya no puedo intnroducir mas.

Y cuando quiero ver la linea que he introducido me pone caracteres raros.

Eso es todo. Gracias por vuestro tiempo.
  #2 (permalink)  
Antiguo 25/04/2010, 19:22
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: C Crear un libro

Una aclaración importante:

Cita:
Supón que el libro contiene como máximo 5 páginas, que cada página puede contener hasta 15 renglones y que cada renglón solo puede contener 10 caracteres.
Esto según mi lógica debería ser:
Código:
char libro[5][15][10+1];
  #3 (permalink)  
Antiguo 28/04/2010, 12:13
 
Fecha de Ingreso: abril-2010
Mensajes: 13
Antigüedad: 14 años
Puntos: 0
Respuesta: C Crear un libro

He avanzado el codigo, y no tiene errores, pero el caso es que no hace lo que yo quiero y es que cuando introduce 10 caracteres se acaba y yo simplemente quiero que haga un salto de linea.

El código es el siguiente:
Código c:
Ver original
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5.  
  6. void main()
  7. {
  8.     char libro[5][15][10];
  9.     char letra;
  10.     int i, j, k, paginas, opcion, pagina, fila;
  11.  
  12.     printf("¿Cuantas paginas vas a utilizar?\n");
  13.     scanf ("%d", &paginas);
  14.  
  15.     printf ("Pulsa una tecla para comenzar\n");
  16.     getch();
  17.     system ("cls");
  18.  
  19.     k=0;
  20.     i=0;
  21.     j=0;
  22.  
  23.     while (k<=paginas-1)
  24.     {
  25.         while (i<=14)
  26.         {
  27.            
  28.             while (j<=9)
  29.             {
  30.                 letra=getche();
  31.                 libro[k][i][j]=letra;
  32.                 fflush(stdin);
  33.  
  34.                 if (j==9)
  35.                 {
  36.                     printf("\n");
  37.                 }
  38.  
  39.                 if (libro[k][i][j]=='\0')
  40.                 {
  41.                     printf ("\n");
  42.                     j=9;
  43.                 }
  44.  
  45.                 if (libro[k][i][j]=='$')
  46.                 {
  47.                     i=100;
  48.                     j=100;
  49.                     k=100;
  50.                 }
  51.  
  52.                 j++;
  53.             }
  54.             i++;
  55.         }
  56.         k++;
  57.     }
  58.  
  59.     opcion=0;
  60.  
  61.     while (opcion!=2)
  62.     {
  63.         printf ("\n\n¿Que quieres hacer ahora:?\n");
  64.         printf ("\tPulse 1 para ver lo que has introducido en un reglon de una pagina\n");
  65.         printf ("\tPulse 2 para salir\n");
  66.    
  67.         scanf("%d", &opcion);
  68.  
  69.         system("cls");
  70.  
  71.         if (opcion==1)
  72.         {
  73.             printf ("Digame el reglon (fila)de la pagina que quiera mirar\n");
  74.             printf ("\tFila: ");
  75.             scanf ("%d", &fila);
  76.             printf ("\n\tPagina: ");
  77.             scanf ("%d", &pagina);
  78.  
  79.             i=fila;
  80.             k=pagina;
  81.  
  82.             for (j=0; j<=14; j++)
  83.             {
  84.                 printf ("%c", libro[k][j][j]);
  85.             }
  86.         }
  87.     }
  88.  
  89.     getch();
  90. }





















































Si alguien puediera compilarllo y ver cual es el problema me seria de gran ayuda.
  #4 (permalink)  
Antiguo 28/04/2010, 19:54
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: C Crear un libro

Pasas que nunca vuelves el J ni el I a 0. Entonces en todos los while la condicion es falsa una vez que ingresas los 10 caracteres

Etiquetas: libro
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:28.