Ver Mensaje Individual
  #3 (permalink)  
Antiguo 21/10/2010, 17:16
Avatar de saudakar
saudakar
 
Fecha de Ingreso: octubre-2010
Ubicación: Donde pueda beber Cafe
Mensajes: 11
Antigüedad: 13 años, 6 meses
Puntos: 5
Respuesta: Editor de texto

Hola compañero, gracias por tu respuesta, bueno si logre corregir el problema comparando si char[N] esta vacio, ...

Si, tienes razon en cuanto coloco como primer caracter el punto, ya no se puede salir del programa, pero lo arregle con un bucle while, en lugar de un do while,...

Bueno ahora no finaliza la edicion del texto cuando presiono el punto, solo si presiono el punto despues de una linea vacia, Intente tambien comparando la variable char texto si era igual a . pero alli si surge el problema de nuevo que cuando coloco . como primer caracter ya no se sale del programa, ¿Es posible corregirlo?, de serlo ¿Como podria?



Saludos!

PD
Adjunto codigo:

Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <iostream.h>
  4. #include <fstream.h>
  5. #include <string.h>
  6. #define AL 10  
  7.  
  8. int main()
  9. {
  10.     ofstream doc;
  11.     int c;
  12.     char texto[1000];
  13.     doc.open("datos.txt");
  14.  
  15.     cout <<"/Introduzca el texto/" <<endl;
  16.     cout <<"Para Finalizar la edicion, introducir un punto " << endl;
  17.     while (c != '.')
  18.     {
  19.       cin.getline (texto, 1000);
  20.       if (strlen(texto) == 0)
  21.       {
  22.        putchar(AL);
  23.        c = _getch();
  24.        }
  25.       doc << texto <<endl;
  26.     }
  27.     cout << "Fin de la edicion de Texto" <<endl;
  28.     return 0;
  29. }




Nuevos Datos Agregados:

Esto es lo que tengo hasta ahora;
Dejo el codigo, para que pueda servir a cualquiera que como yo este en fase Alfa XD (ni al primer nivel en C++ llego)

PD. Creo que me gusta bien como esta, asi que tenga que escribir el punto despues de una linea en blanco, asi es mas delimitante cuando ya no se quiere escribir mas,...
Pero siempre sigo con la duda del porque, agradezco me puedan explicar...
Saludos

Otra Post Data:
El codigo que escribo quiza no cumpla estandares, pero es lo que se me ocurre, ¿Hay alguna forma mas "Estandar" o Tecnica de escribirlo?

Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <iostream.h>
  4. #include <stdlib.h>
  5. #include <fstream.h>
  6. #define SALTO_LINEA 10
  7. char *Opciones[]={" [1] Sobreescribir      ",
  8.          " [2] Agregar Texto  ",
  9.          " [3] Leer Archivo  ",
  10.          " [4] Salir      "};
  11.  
  12. //****************************************************************************
  13. //****************************************************************************
  14.  
  15. void Sobreescribir()
  16. {
  17.     ofstream doc;
  18.     int c;
  19.     char texto[1000];
  20.     doc.open("datos.txt");
  21.  
  22.     gotoxy (1,16); cout <<"Se va a editar el archivo ""datos.txt" << endl;
  23.     cout <<"Para Finalizar la edicion, introducir un punto despues de una linea vacia" << endl<<endl;
  24.     gotoxy (28,18);cout <<"////Introduzca el texto////" <<endl;
  25.     //while (strlen(texto) != '.')
  26.     while (c != '.')
  27.     {
  28.       cin.getline (texto, 1000);
  29.       if (strlen(texto) == 0)
  30.       {
  31.        c = _getch();
  32.        putchar(SALTO_LINEA);
  33.       }
  34.       doc << texto <<endl;
  35.     }
  36.     cout << "Fin de la edicion de Texto" <<endl;
  37.  
  38. }
  39.  
  40. //****************************************************************************
  41. //****************************************************************************
  42.  
  43. void AgregarTexto()
  44. {
  45.     ofstream doc("datos.txt", ios::app);
  46.     int c;
  47.     char texto[1000];
  48.     gotoxy (1,16); cout <<"Se va a agregar texto al archivo datos.txt" << endl;
  49.     cout <<"/Introduzca el texto/" <<endl;
  50.     cout <<"Para Finalizar la edicion, introducir un punto despues de una linea vacia" << endl;
  51.     //while (strlen(texto) != '.')
  52.     while (c != '.')
  53.     {
  54.       cin.getline (texto, 1000);
  55.       if (strlen(texto) == 0)
  56.       {
  57.        c = _getch();
  58.        putchar(SALTO_LINEA);
  59.       }
  60.       doc << texto <<endl;
  61.     }
  62.     cout << "Fin de la edicion de Texto" <<endl;
  63. }
  64.  
  65. //****************************************************************************
  66. //****************************************************************************
  67.  
  68. void LeerTexto()
  69. {
  70.     ifstream doc("datos.txt", ios::noreplace);
  71.     char linea[128];
  72.     long contador = 0L;
  73.  
  74.     gotoxy (1,16); cout <<"Mostrando el archivo datos.txt " << endl << "Para una lectura mas comoda se muestran de 24 en 24 lineas" << endl;
  75.     if(doc.fail())
  76.     cerr << "Error al abrir el archivo Pruebas.txt" << endl;
  77.     else
  78.     while(!doc.eof())
  79.     {
  80.         doc.getline(linea, sizeof(linea));
  81.         cout << linea << endl;
  82.         if((++contador &#37; 24)==0)
  83.         {
  84.             cout << "CONTINUA...";
  85.             cin.get();
  86.         }
  87.     }
  88.     cout << endl << endl << endl <<"-------------------------------" << endl;
  89.     cout << "Fin del contenido" << endl;
  90.     cout << "Precione cualquier tecla para continuar..." << endl;
  91.     getch();
  92.     doc.close();
  93.  
  94. }
  95.  
  96. //****************************************************************************
  97. //****************************************************************************
  98.  
  99. void Resalta(int Y)
  100. {
  101.     textcolor(RED);
  102.     textbackground(7);
  103.     gotoxy(30,7+Y); cprintf("%s",Opciones[Y-1]);
  104.     textcolor(BLUE);
  105.     textbackground(BLACK);
  106. }
  107.  
  108. //****************************************************************************
  109. //****************************************************************************
  110.  
  111. void RealizarOperacion(int Opc)
  112. {
  113.     switch(Opc)
  114.     {
  115.         case 1: Sobreescribir();   break;
  116.         case 2: AgregarTexto(); break;
  117.         case 3: LeerTexto();  break;
  118.         case 4: exit(0);
  119.     }
  120.     getch();
  121. }
  122.  
  123. //****************************************************************************
  124. //****************************************************************************
  125. int main()
  126. {
  127.     char Opc;
  128.     int Y=1;
  129.    int i;
  130.     textmode(C80);//Sirve para que la consoloa cambie a modo texto con medida 80 x 25
  131.  
  132.     do
  133.       {
  134.           textcolor(GREEN);
  135.          textbackground(BLACK);
  136.           clrscr();
  137.  
  138.           gotoxy(30,5); cprintf("*** OPCIONES ***");
  139.           for(i=0; i<4; i++)
  140.               {
  141.                gotoxy(30,8+i);  cout << Opciones[i];
  142.           }
  143.  
  144.          Resalta(Y);
  145.           Opc=getch();
  146.           switch(Opc)  //claves: 72=>flecha arriba 80=>flecha abajo 13=>Enter.
  147.              {
  148.                case 72: if(Y==1) Y=4; else Y--; break;
  149.                case 80: if(Y==4) Y=1; else Y++; break;
  150.                case 13: RealizarOperacion(Y);
  151.              }
  152.     }while(1);
  153. }

Última edición por saudakar; 21/10/2010 a las 20:14 Razón: Agregados nuevos Datos