elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con system("clear") [resuelto]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con system("clear") [resuelto]  (Leído 1,870 veces)
JavierScars

Desconectado Desconectado

Mensajes: 116



Ver Perfil
Problema con system("clear") [resuelto]
« en: 3 Enero 2016, 03:34 am »

Alguien me dice porque cada vez que hago
Código:
system("clear")
me pasa esto?  :-\
Sistema operativo Lubuntu y terminal LXTerminal...

Ya vi que es normal... Si la quiero limpiar como tal completamente debo usar reset, pero no hay alternativa?


« Última modificación: 3 Enero 2016, 03:58 am por JavierScars » En línea

Usa lo malo de la vida a tu favor, escala montañas de problemas para deslizarte sobre soluciones, derrumba muros de decepciones para encontrar la libertar de la felicidad,  y quema la leña del fracaso para calentarte con el éxito. Recuerda que sin la oscuridad la luz no brillaría tanto.
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Problema con system("clear") [resuelto]
« Respuesta #1 en: 3 Enero 2016, 04:14 am »

He modificado un poco tu programa y en Mint con el MATE Terminal solo me da un problema: cuándo maximizo la ventana no muestra todo el tablero y el menú hasta que se pulsa una tecla, pero eso ya es del funcionamiento del propio terminal.

Ahí va el código:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define alto 25
  6. #define ancho 25
  7.  
  8. void escribir(int pasos);
  9. void imprimir_tablero();
  10. void imprimir_datos_lapiz();
  11. void pintar_casilla();
  12.  
  13. typedef enum {
  14.    NORTE,
  15.    ESTE,
  16.    SUR,
  17.    OESTE
  18. } direccion_t;
  19.  
  20. typedef enum {
  21.    LEVANTADO,
  22.    BAJADO
  23. } estado_t;
  24.  
  25. struct {
  26.    unsigned x;
  27.    unsigned y;
  28.    direccion_t direccion;
  29.    estado_t estado;
  30. } lapiz;
  31.  
  32. int plano[alto][ancho];
  33.  
  34. int main(void) {
  35.    int op = 0;
  36.    int pasos;
  37.  
  38.    while (op != 9) {
  39.        system("clear");
  40.        imprimir_datos_lapiz();
  41.        imprimir_tablero();
  42.        puts("");
  43.        puts("Introduzca una opcion");
  44.        puts("1) Levantar lapiz");
  45.        puts("2) Bajar lapiz");
  46.        puts("3) Girar a la derecha");
  47.        puts("4) Girar a la izquierda");
  48.        puts("5) Desplazar lapiz");
  49.        puts("9) Salir");
  50.        printf("\n>>");
  51.        scanf("%d", &op);
  52.        while(getchar() != '\n');
  53.  
  54.        switch (op) {
  55.            case 1:
  56.                lapiz.estado = LEVANTADO;
  57.                pintar_casilla();
  58.                break;
  59.            case 2:
  60.                lapiz.estado = BAJADO;
  61.                pintar_casilla();
  62.                break;
  63.            case 3:
  64.                if(lapiz.direccion == OESTE)
  65.                    lapiz.direccion = NORTE;
  66.                else
  67.                    lapiz.direccion++;
  68.                break;
  69.            case 4:
  70.                if(lapiz.direccion == NORTE)
  71.                    lapiz.direccion = OESTE;
  72.                else
  73.                    lapiz.direccion--;
  74.                break;
  75.            case 5:
  76.                printf("Introduzca la cantidad de pasos que desea dar: ");
  77.                scanf("%d", &pasos);
  78.                while(getchar() != '\n');
  79.                escribir(pasos);
  80.                break;
  81.            case 9:
  82.                printf("Gracias por usar el programa! \n");
  83.                break;
  84.        }
  85.    }
  86.    return 0;
  87. }
  88.  
  89. void pintar_casilla() {
  90.    plano[lapiz.y][lapiz.x] = lapiz.estado;
  91. }
  92.  
  93. void escribir(int pasos) {
  94.    switch(lapiz.direccion) {
  95.        case NORTE:
  96.            for(; pasos > 0; pasos--) {
  97.                if(lapiz.y > 0) {
  98.                    lapiz.y--;
  99.                    pintar_casilla();
  100.                }
  101.            }
  102.            break;
  103.        case ESTE:
  104.            for(; pasos > 0; pasos--) {
  105.                if(lapiz.x < (ancho - 1)) {
  106.                    lapiz.x++;
  107.                    pintar_casilla();
  108.                }
  109.            }
  110.            break;
  111.        case SUR:
  112.            for(; pasos > 0; pasos--) {
  113.                if(lapiz.y < (alto-1)) {
  114.                    lapiz.y++;
  115.                    pintar_casilla();
  116.                }
  117.            }
  118.            break;
  119.        case OESTE:
  120.            for(; pasos > 0; pasos--) {
  121.                if (lapiz.x > 0) {
  122.                    lapiz.x--;
  123.                    pintar_casilla();
  124.                }
  125.            }
  126.            break;
  127.    }
  128. }
  129.  
  130. void imprimir_datos_lapiz() {
  131.    char direcc[6];
  132.    char est[10];
  133.  
  134.    switch(lapiz.direccion) {
  135.        case 0:
  136.            strcpy(direcc, "NORTE");
  137.            break;
  138.        case 1:
  139.            strcpy(direcc, "ESTE");
  140.            break;
  141.        case 2:
  142.            strcpy(direcc, "SUR");
  143.            break;
  144.        case 3:
  145.            strcpy(direcc, "OESTE");
  146.            break;
  147.    }
  148.  
  149.    if(!lapiz.estado)
  150.        strcpy(est, "LEVANTADO");
  151.    else
  152.        strcpy(est, "BAJADO");
  153.  
  154.    printf("Lapiz: %9s | %5s | x = %i | y = %i\n", est, direcc, lapiz.x, lapiz.y);
  155. }
  156.  
  157. void imprimir_tablero() {
  158.    int i, j;
  159.  
  160.    for (i = 0; i < alto; i++) {
  161.        for (j = 0; j < ancho; j++) {
  162.            if(lapiz.y == i && lapiz.x == j )
  163.                printf("I");
  164.            else if(plano[i][j] == 0)
  165.                printf(" ");
  166.            else
  167.                printf("x");
  168.        }
  169.        puts("");
  170.    }
  171. }


En línea

JavierScars

Desconectado Desconectado

Mensajes: 116



Ver Perfil
Re: Problema con system("clear") [resuelto]
« Respuesta #2 en: 3 Enero 2016, 06:19 am »

Genial! Aunque no consoco un par de cosas de ese código en esencia es el mismo creó, aunque mas intuitivo que el mio ;-)

el mío ya funciona bien o al menos se quitó el límite de 15... No se porque un libro mandaría a programar un array de 50x50 si no cabe en una terminal... :¬¬
En línea

Usa lo malo de la vida a tu favor, escala montañas de problemas para deslizarte sobre soluciones, derrumba muros de decepciones para encontrar la libertar de la felicidad,  y quema la leña del fracaso para calentarte con el éxito. Recuerda que sin la oscuridad la luz no brillaría tanto.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines