• Viernes 8 de Noviembre de 2024, 23:02

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - rock_neurotiko

Páginas: [1]
1
Python / Re: PYTHONG
« en: Jueves 23 de Septiembre de 2010, 23:05 »
El problema es que al crearlo desde un nuevo documento debes "crear el lienzo" y decirle cuales van a ser las coordenadas:
Código: Python
  1.  
  2. window_size(1000,1000) # (x,y)
  3. window_coordinates(o,o,1000,1000) #(los puntos de arriba-izquierda, abajo-derecha)
  4. create_line(100,100,900,900)
  5.  
  6.  

Espero haber sido de ayuda ;)

2
C/C++ / Re: Menú en C++
« en: Jueves 27 de Mayo de 2010, 22:57 »
La mejor funcion para el menú es switch, incluida en iostream

Funciona asi:

switch(variable){

   case 1:
       funciones;
       break;
   case 2:
      funciones;
      break;
   case n:
      funciones;
      break;
}

La variable es la que usaste en el menu para que elija y en case 1, case 2 ... case n, los numeros (1,2,...n) son los numeros enteros que se han escogido.

ej:

Código: C++
  1.  
  2. #include <iostream>
  3.  
  4. main()
  5. {
  6.  
  7.  int menu;
  8.  
  9.  cout<<"nIngresa una opciont";
  10.  cout<<"n1.- Holat";
  11.  cout<<"n2.- Que talt";
  12.  cin >> menu;
  13.  
  14.  switch(menu){
  15.  
  16.    case 1:  //Fijate en los dos puntos, no en el punto y coma
  17.    cout<<"nHola";
  18.    break;  //Para que termine el case 1.
  19.  
  20.    case 2:
  21.    cout<<"nQue tal";
  22.    break;
  23.   }
  24.  
  25.  return 0;
  26.  
  27. }
  28.  
  29.  

3
C/C++ / Re: ejercicio no entendible!!
« en: Lunes 24 de Mayo de 2010, 00:07 »
Tienes que hacer un programa que imprima en pantalla una tabla con dos columnas, que en un lado esten los farenheitt y en el otro los celsius, de 20 en 20.
Te tendria que quedar asi:

Farenheit:________Celsius:

___0_____________-17.778

___20____________-6.6667

___40____________4.4445


... (Asi hasta 300 ºFarenheit)


Eso es lo que pide ;)

4
C/C++ / Re: el poco Recomendable scanf !!
« en: Jueves 20 de Mayo de 2010, 22:58 »
Para liberar el buffer y que no ocurran estos errores (que suelen ocurrir con los char) es tan simple como lo siguiente:


Código: C
  1.  
  2. /*Código erróneo*/
  3. #include <stdio.h>
  4.  
  5. int main()
  6. {
  7.  
  8.   char c,d,e;
  9.  
  10. printf("Introduzca primer carácter:");
  11. scanf("%c", &c);
  12.  
  13. printf("Introduzca el segundo carácter:");
  14. scanf("%c", &d);
  15.  
  16. printf("Introduzca el tercer carácter:");
  17. scanf("%c", &e);
  18.  
  19. printf("Los carácteres son: %c, %c, %c.", c, d, e);
  20.  
  21. return 0;
  22. }
  23.  
  24.  


Dará un error, no al compilar, sino al trabajar con el, ya que al introducir el primer carácter hay que presionar Enter, y guarda el enter (n) en el buffer, y al hacer el otro scanf lo mete como si lo hubiese introducido el usuario.

Para solucionar esto, existe una función para liberar el buffer. La función es fflush(stdin); stdin es para limpiar el Standar Input que para este caso es el correcto.

El código sin error sería el siguiente:

Código: C
  1.  
  2. /*Código válido*/
  3. #include <stdio.h>
  4.  
  5. int main()
  6. {
  7.  
  8.   char c,d,e;
  9.  
  10. printf("Introduzca primer carácter:");
  11. scanf("%c", &c);
  12.  
  13. fflush(stdin); /*Liberamos el buffer*/
  14. printf("Introduzca el segundo carácter:");
  15. scanf("%c", &d);
  16.  
  17. fflush(stdin); */Volvemos a liberar el buffer*/
  18. printf("Introduzca el tercer carácter:");
  19. scanf("%c", &e);
  20.  
  21. printf("Los carácteres son: %c, %c, %c.", c, d, e);
  22.  
  23. return 0;
  24. }
  25.  
  26.  


Solo se necesita poner en los dos últimos ya que en el primero el buffer ya está liberado, pero si se quisiese meter en un bucle habría que ponerlo asi:


Código: C
  1.  
  2. for(;;){
  3. printf("Introduzca primer carácter:");
  4. scanf("%c", &c);
  5.  
  6. fflush(stdin); /*Liberamos el buffer*/
  7. printf("Introduzca el segundo carácter:");
  8. scanf("%c", &d);
  9.  
  10. fflush(stdin); */Volvemos a liberar el buffer*/
  11. printf("Introduzca el tercer carácter:");
  12. scanf("%c", &e);
  13.  
  14. printf("Los carácteres son: %c, %c, %c.", c, d, e);
  15.  
  16. fflush(stdin); /*Liberación antes de que empiece el bucle de nuevo*/
  17.  
  18. if (c='e') brake; /*Para poder salir del bucle de algun modo*/
  19. }
  20.  
  21.  


Si estoy equivocado en algo estaré encantado en que me corrijais =D

5
C/C++ / Re: Truncar teclas C Linux
« en: Domingo 16 de Mayo de 2010, 19:57 »
Ahhhhh, ya se lo que quieres.

Si, con el bucle y getch puedes hacerlo.

6
C/C++ / Re: Truncar teclas C Linux
« en: Domingo 16 de Mayo de 2010, 16:42 »
También, si no quieres hacer un bucle, lo que puedes hacer en linux es usar la libreria ncurses.h (la que sustituye a conio.h de Turbo C).

Un ejemplo sería:

Código: C
  1.  
  2. #include <stdio.h>
  3. #include <ncurses.h>
  4.  
  5. int main()
  6. {
  7.  
  8. char cadena[60];
  9.  
  10. initscr(); /*Empezamos el modo ncurses*/
  11.  
  12. printw("Escriba la cadena:"); /*Observese como se ha usado printw en vez de printf, eso es porque estamos dentro de una ventana de ncurses, por lo tanto hay que usar printw (ncurses trabaja con "ventanas")*/
  13.  
  14. refresh(); /*Para  refrescar la ventana, no es obligatorio, pero si recomendable*/
  15.  
  16. noecho(); /*Con esta función dices que NO se imprima en pantalla todo lo que sigue*/
  17.  
  18. scanw("%s", &cadena); /*Se usa también scanw en vez de scanf*/
  19.  
  20. echo(); /* Para que se vuelva a visualizar lo siguiente*/
  21.  
  22. printw("Muy bien, ahora, para comprobar que ha funcionado... la cadena es la siguiente: %s", cadena); /*En realidad esto es para que veas que funciona perfectamente, pero seria una tonteria esconderlo y luego enseñarlo xD*/
  23.  
  24. getch(); /*Para salir cuando se pulse una tecla*/
  25.  
  26. endwin(); /*Se termina el modo ncurses*/
  27.  
  28. return 0;
  29.  
  30. }
  31.  

Espero que te haya servido ;)

Ah, y recuerda, para compilar con gcc el codigo seria algo asi:  gcc -lncurses prueba.c -o prueba

7
C/C++ / Re: Problemilla C
« en: Miércoles 12 de Mayo de 2010, 17:42 »
¡Ya lo tengo! Muchas gracias ^^

Lo cierto es que me ha servido de mucha ayuda y, aunque no sirva para nada el programa (a no ser que se lo implemente a otro),  me ha servido para aprender de mis errores =D

Este es el código, por si alguien lo quiere, o tengo algunos errores todavia. He corregido el return y las llamadas a funciones.

Código: C
  1.  
  2. #include <stdio.h>
  3. #include <ncurses.h>
  4. #include <string.h>
  5.  
  6. #define CORRECTO 1
  7. #define FALSO 0
  8.  
  9. int main()
  10. {
  11.  
  12.   int valor;
  13.   initscr();
  14.   do{
  15.     valor=funcion();
  16.   } while(valor!=CORRECTO);
  17.  
  18.   printw("¡Adios! Vuelva pronto.n");
  19.   getch();
  20.   endwin();
  21.   return 0;
  22. }
  23.  
  24. int funcion()
  25. {
  26.   char nombre[50];
  27.   char pass[50];
  28.   char si='a';
  29.   int valor = FALSO;
  30.  
  31.   printw("Usuario:n");
  32.   scanw("%s", &nombre);
  33.  
  34.   printw("nContraseña:");
  35.   noecho();
  36.   scanw("%s", &pass);
  37.   echo();
  38.  
  39.   if(!strcmp(nombre, "Rock") && !strcmp(pass, "1234")){
  40.     do{
  41.       printw("¿Quiere cerrar el programa? (S/N)n");
  42.       scanw("%c", &si);
  43.       if (si!='S' && si!='N'){
  44.     printw("nInserte S para salir N para reiniciarlon");
  45.       }
  46.     }while (si!= 'S' && si!='N');
  47.  
  48.     if (si == 'S'){
  49.       valor = CORRECTO;
  50.     }
  51.     if (si == 'N'){
  52.       valor == FALSO;
  53.     }
  54.   }
  55.   else {
  56.     valor = FALSO;
  57.     printw("Error!n");
  58.   }
  59.  
  60.   return valor;
  61. }
  62.  
  63.  

8
C/C++ / Re: Como creo un cronometro
« en: Miércoles 12 de Mayo de 2010, 17:08 »
Buscando por google mientras intentaba crearlo porque tenía un error, ya que lo tenia todo bien, salvo que me pedia pulsar una tecla todo el rato, cuando yo lo unico que quería era que si yo alguna vez lo pulsase se parase.

Este es mi código, por si algun maste puede decirme que podría sustituir al while((a=getch) != 'P')  ya que, yo funciono en Linux y no tengo la libreria conio, y por tanto la funcion getchar ni ninguna asi.

Código: C
  1.  
  2. #include <stdio.h>
  3. #include <ncurses.h>
  4. #include <unistd.h>
  5.  
  6. int d=0;
  7.  
  8. int main()
  9. {
  10.   char a;
  11.   initscr();
  12.   echo();
  13.   printw("Cronometro en segundos, pulse P  para parar:n");
  14.  
  15.   do{
  16.     cronometro();
  17.     refresh();
  18.   }while ((a=getch()) != 'P');
  19.  
  20.   printw("nPulse un tecla para salir.");
  21.   getch();
  22.   endwin();
  23.  
  24.   return 0;
  25. }
  26.  
  27. int cronometro()
  28. {
  29.   int e=d;
  30.  
  31.   for (d; d < e+1 ; ++d){
  32.   printw("%dn", d);
  33.   sleep(1);
  34.   refresh();
  35.   }
  36.   return 0;
  37.   }
  38.  
  39.  
  40.  




Y este es el código que deberia funcionarte (con la libreria windows.h):

Código: C
  1.  
  2. #include <stdio.h>
  3. #include <windows.h>
  4. #define LIMIT 36000 /*10 horas*/
  5. #define DXG(a) ((a) / 60)
  6.  
  7. int main()
  8. {
  9. unsigned it, b = 0;
  10.    
  11.     for(it = 0; it < LIMIT; )
  12.     {
  13.       Sleep(1000);
  14.      
  15.       b += GetAsyncKeyState(VK_LSHIFT);
  16.       if(b == 1) continue;        
  17.      
  18.       printf("%02d:%02d:%02dn", DXG(it)/60, DXG(it)%60, it % 60 );
  19.      
  20.       it++;
  21.       b = 0;
  22.     }
  23.  
  24. return 0;
  25. }
  26.  
  27.  

P.D: Este código no es mío, lo encontre un Google, un tal cheroky.

9
C/C++ / Re: Problemilla C
« en: Miércoles 12 de Mayo de 2010, 13:05 »
Muchas gracias :D

Tanto por los consejos(errores mios, mejor dicho) como por la corrección del código, muy bueno el ejemplo del jefe, y ya me he fijado que cuando haces una llamada a una función lo haces con una llamada algo asi:

Código: C
  1.  
  2. int d=FALSO
  3.  
  4. while (d=!CORRECTO){
  5. d=funcion();
  6. }
  7.  
  8. funcion()
  9. {          
  10.  /*Y en esta función lo que haces es que haya un return con CORRECTO o FALSO para que vuelva a repetirse la función o termine ¿no?.*/
  11. }
  12.  
  13.  
  14.  


En resumen, que si voy a hacer llamadas a funciones jamás devolver una llamada a la función main ¿no?  ¿y la función main se puede llamar así misma?

10
C/C++ / Re: Como creo un cronometro
« en: Miércoles 12 de Mayo de 2010, 00:52 »
¿Has probado con un bucle con un sleep de un segundo, que si se pulsa una tecla para y te muestra el numero?

Código: C
  1.  
  2. int segundos;
  3. for(segundos=0, segundos <=10000, segundos++){
  4. Sleep(1);
  5. printf("%dn", segundos);
  6. /* Aqui tendría que ir algun modo de pulsar una tecla y la recibiese el bucle para parar, y eso que sin pulsar ninguna siga, eso se lo dejo a los gurús, ya que a mi también me acaba de entrar la duda*/
  7.  
  8.  
  9.  



Seguramente no sirva, o haya un metodo más facil, pero sabiendo lo que se es lo unico que se me ocurre y queria intentar ayudar ;)

11
C/C++ / Problemilla C
« en: Martes 11 de Mayo de 2010, 22:47 »
Hola de nuevo amigos, ya hice una pregunta aqui, y me respondisteis bastante bien (aunque no la puse en practica, ya que busque otra solucion[el problema era que no podia tener una variable que fuese muy larga (4815162342) asi que simplemente puse 4 8 15 16 23 42 con 6 variables int]) asi que vengo a ver si me podeis ayudar de nuevo =D

Lo cierto es que es un problema muy tonto,  es que tengo un simple programa que te pide nombre de usuario y contraseña, y luego pregunta si quieres salir o no, pues la cuestion es que si la primera vez dices que no, te vuelve al princio, y si luego le digo que si no sale. A ver si me podeis ayudar :D

Por cierto, es de linux (es decir, tiene la libreria ncurses.h y no conio.h)

Gracias por adelantado!

Código: C
  1.  
  2. #include <stdio.h>
  3. #include <ncurses.h>
  4. #include <string.h>
  5.  
  6. int main() {
  7.         char cadena[50];
  8.     char pass[50];
  9.         initscr();
  10.  
  11.         printw("Usuario:");
  12.         scanw("%s",cadena);
  13.  
  14.         printw("Contraseña:");
  15.         noecho();
  16.         scanw("%s", pass);
  17.     echo();
  18.  
  19.     endwin();
  20.  
  21.     if (!strcmp(cadena,"Rock")&& !strcmp(pass,"1234")){
  22.       correcto();
  23.       return 0;
  24.     }
  25.     else {
  26.       printw("Errorn");
  27.       main();
  28.     }
  29.     return 0;
  30. }
  31.  
  32. int correcto()
  33. {
  34.   char si;
  35.  
  36.   printw("Bien!, ahora, ¿Quieres cerrar el programa?(S/N):n");
  37.   scanw("%c", &si);
  38.  
  39.   while(si=='S'){
  40.     return 0;
  41.   }
  42.  
  43.   while(si=='N'){
  44.     main();
  45.   }
  46.   while(si!='N'){
  47.     printw("Error. Introduzca S o Nn");
  48.     correcto();
  49.   }
  50.   return 0;
  51. }
  52.  
  53.  


Gracias de nuevo!

12
C/C++ / Re: Problema con un programa (Novato =D)
« en: Martes 9 de Marzo de 2010, 00:04 »
He leido todo lo que has puesto y he entendido algo (es normal que no comprenda todo, soy autodidacta hasta ahora que me estais enseñando =D)

El codigo que me has enseñado es para que se pueda ingresar el numero 4815162342 directamente, pero al ponerlo en mi codigo (uno nuevo, y solamente con esta para ver el funcionamiento) despues de muchos errores por mi parte he llegado a un solo error:
"Statement missing ; in function main()

el codigo es el siguiente:

Código: C
  1. #include <stdio.h>
  2. #include <string.h>
  3. void main()
  4.  
  5. {
  6.     inicio:
  7.     char nt;
  8.     printf(":<")  ;
  9.     scanf("%d-%d-%d",&nt);
  10.  
  11.  
  12.     nt verifica(char*linea)
  13.     {
  14.      while(*linea!='')
  15.      {
  16.           if(*linea<48 || linea>57)
  17.                  return 1;
  18.           linea++;
  19.      }
  20.  return 0;
  21.     }
  22.  void normalizar(char *linea)
  23. {
  24.       while(*linea!='n')
  25.              linea++;
  26.  *linea='';
  27.  }
  28.  strcmp("4815162342",linea);
  29.  
  30. }
  31.  


El error me da en esta linea:

Código: C
  1.     nt verifica(char*linea)
  2.  


Lo cierto es que no se que es... :S



De todas formas, seguire aprendiendo haber si consigo aprender todo lo que me estais enseñando :D
Y me he descargado el libro que me has dicho, muchas gracias.

13
C/C++ / Re: Problema con un programa (Novato =D)
« en: Lunes 8 de Marzo de 2010, 23:14 »
Muchas gracias por responder tan rapido.
Lo de la cuenta atras es algo que me esta sacando de quicio, lo he intentado con tm_min y muchos, pero no saco nada en claro...

y lo del numero largo... se lo que es un vector, pero nose como podre usarlo aqui, quizas cuando lea mas lo entendere gracias ^^

y el goto por dowhile... lo cierto es que ese goto creo que esta bien, porque he encandenado una cadena de whiles que si en alguna se produce salta el error y vuelve al principio, y si no, sigue sin saltar el error y vuelve al principio... nose, esa parte me gusta como la tenga, hasta que consiga saber si puedo poner un solo numero (4815162342) para hacer una sola sentencia while.

Gracias :D

14
C/C++ / Problema con un programa (Novato =D)
« en: Lunes 8 de Marzo de 2010, 22:13 »
Hola compañeros, sé que soy nuevo, pero he leido ya algunos posts, y he de advertir que estoy empezando  ^_^  asi que lo siento si mis preguntas parecen de niño (es mas, no tengo mas de 17 años xD)

----------

Para empezar, estoy haciendo un programa que simule un programa de una serie (perdidos), que, en el fondo no sirve para nada mas que para ocio, pero me viene muy bien para empezar a programar.
El programa consiste en que tu introduces un codigo, si lo introduces bien te sale una cuenta atras de 108 minutos (que para el programa lo pondria de segundos) y si lo introduces mal te respondería "error del sistema" para volver al principio.

Bien, como el numero ha introducir es muy largo (4815162342) y nisiquiera con unsigned long sirve, tuve que buscar una solucion, y esa es que hay que ir introduciendo los numeros uno a uno (4-8-15-16-23-42) con la consiguiente equivocacion en cada una.
Aqui hago alguna pregunta,¿ hay algun tipo de variable, que se me haya escapado por ahi, que pueda tener el numero entero?

He conseguido lo de los numeros uno a uno(tras unos cuarenta y cinco minutos de intento y error y pensar) y despues he conseguido que el "error del sistema" se repita unas cuantas veces para que parezca mas real.

Aquí es donde he conseguido mi programa "beta" ya que, por desgracia, todavia no tengo conocimientos para la cuenta atras. Solo quiero que me ayuden a saber qué tengo que estudiar, o qué puedo usar para poder hacer la cuenta atrás.

Aquí os dejo el código que tengo :D
Código: C
  1.  
  2. #include <stdio.h>
  3.  
  4. void main()
  5.  
  6. {
  7.     inicio:
  8.     int bucle;
  9.     int numero4;
  10.     int numero8;
  11.     int numero15;
  12.     int numero16;
  13.     int numero23;
  14.     int numero42;
  15.     printf("**************************************************************n");
  16.     printf("***********************INICIATIVA DHARMA**********************n");
  17.     printf("**********************NUMERO DE SEGURIDAD:********************n");
  18.     printf("************************4-8-15-16-23-42***********************n");
  19.     printf("*Introducir los numeros de seguridad uno a uno pulsando Enter*n");
  20.     printf("**************************************************************n");
  21.     printf("nn");
  22.     printf(":<")  ;
  23.     scanf("%d", &numero4);
  24.  
  25.     while(numero4!=4)
  26.     {   for (bucle=1;bucle<=500;bucle++)
  27.     printf("22/09/2004-15:16-Error del sisteman");
  28.     goto inicio;
  29.     }
  30.     printf(":<a")  ;
  31.     scanf("%d", &numero8);
  32.     while (numero8!=8)
  33.     {for (bucle=1;bucle<=500;bucle++)
  34.     printf("22/09/2004-15:16-Error del sisteman");
  35.     goto inicio;
  36.     }
  37.     printf(":<")  ;
  38.     scanf("%d", &numero15);
  39.     while (numero15!=15)
  40.     {   for (bucle=1;bucle<=500;bucle++)
  41.     printf("22/09/2004-15:16-Error del sisteman");
  42.     goto inicio;
  43.     }
  44.     printf(":<")  ;
  45.     scanf("%d", &numero16);
  46.     while (numero16!=16)
  47.     {   for (bucle=1;bucle<=500;bucle++)
  48.     printf("22/09/2004-15:16-Error del sisteman");
  49.     goto inicio;
  50.     }
  51.     printf(":<")  ;
  52.     scanf("%d", &numero23);
  53.     while (numero23!=23)
  54.     {   for (bucle=1;bucle<=500;bucle++)
  55.     printf("22/09/2004-15:16-Error del sisteman");
  56.     goto inicio;
  57.     }
  58.         printf(":<")  ;
  59.     scanf("%d", &numero42);
  60.     while (numero42!=42)
  61.     {   for (bucle=1;bucle<=500;bucle++)
  62.     printf("22/09/2004-15:16-Error del sisteman");
  63.     goto inicio;
  64.     }
  65.     printf("nnEspere 108 minutosnnn");
  66.     goto inicio;
  67. }
  68.  
  69.  

Páginas: [1]