• Jueves 2 de Mayo de 2024, 14:43

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 - gmantil

Páginas: 1 ... 3 4 [5]
101
C/C++ / Re: Alguien puede echar un ojo a este programa y ver donde t
« en: Jueves 20 de Febrero de 2003, 14:33 »
Hola Radarman:
Encuentro varios errores en tu programa:

En la primera apertura de tu Archivo Origen, tu lo abres con "a+" y sacas un mensaje cuando se supone que el archivo no es encontrado. Si realmente lo que quieres es detectar la existencia de un archivo lo debes hacer con "r+", pues con "a+" al no encontrarlo lo crea y no te devuelve un error. Ahora, supongamos con tu apertura que no lo encuentra.... Saca un mensaje pero el programa continua pidiendo el Texto de 80 para llenar ese archivo que no lo pudo abrir. Bueno, arregla esto. Ocurre lo mismo en la apertura del segundo archivo.

Para pedir el texto que el usuario quiera dar para llenar el archivo utilizas una función:

scanf("%s",Texto1);

El problema con esta lectura es que el scanf solo lee hasta el primer espacio introducido, luego si el usuario escribe una frase, tu programa captura solo la primera palabra y deja el buffer cargado con el resto de la frase, por eso se salta cuando quieres leer el Nombre Final. Mejor utiliza:  gets(Texto1);

No entiendo para que utilizas dos archivos. Quieres copiar de un archivo en otro? La lógica que utilizas de leer una cadena por teclado y luego pretender leer sobre la misma variable desde un archivo, no tiene sentido.

Bueno, por ahora te dejo estas inquietudes... Arreglalas y si quieres sigue en el foro con tu modificación y podremos ayudarte mas.

Suerte,

gmantil

102
C/C++ / Re: hoja de calculo
« en: Martes 18 de Febrero de 2003, 19:14 »
El Turboc 2.01, el cual se encuentra disponible en el museo en la página de Borland, tiene en los ejemplos una hoja de cálculo hecha en C, la cual te puede servir de base para hacer la tuya en C++.

Debes hacer login en la sección de desarrolladores, si no estás afiliado puedes hacerlo y consultas el Museum.

Suerte,

gmantil

103
C/C++ / Re: iostream.h --> ¿cómo se añade a la carpeta include?
« en: Sábado 15 de Febrero de 2003, 14:52 »
Hola,
iostream.h es un archivo de cabecera (un archivo plano de texto), que se encuentra en la carpeta INCLUDE si el compilador que utilizas tiene capacidad para la programación C++. Se copia a INCLUDE como copiar un archivo normal. Cuando tú utilizas <iostream.h> el compilador busca en el directorio por defecto de los INCLUDE, pero si tu escribes "iostream.h" el buscará en tu directorio de trabajo. Prueba de esta última forma tenideno el iostream.h en tu carpeta de trabajo. Es claro por lo que describes de tu problema, que el compilador no ve este archivo. También es claro que sí trabajas con un compilador de C++. También puedes probar dando la ruta donde se encuentra el archivo entre comillas, "c:carpetaiostream.h". Intenta cualquiera de estas formas, si no trabaja te recomendaría que intentes reinstalar (y eso incluye intentar conseguir de nuevo) tu compilador.

Ojala puedas resolver tu problema para que nos sigas acompañando en la comunidad del C++. Suerte.

gmantil

104
C/C++ / Re: FILAS Y COLUMNAS EN C
« en: Jueves 13 de Febrero de 2003, 14:06 »
Si entendí bien lo que quieres hacer es un interprete que ejecute tu programa y vaya mostrando por que línea de código va pasando?

gmantil

105
C/C++ / Re: ARRAYS EN MEMORIA
« en: Miércoles 12 de Febrero de 2003, 14:06 »
Para colocar una cadena permanente, que siempre que arranque el programa esté disponible, puedes hacer la asignación en el momento de la definición de la variable:

char cadena[80]="Esta es una prueba";

Ahora, a esta variable le puedes adicionar texto en tiempo de ejecución concatenando o reemplazando su contenido.

Otra solución, podría ser que guardes en un pequeño archivo las cadenas que quieres cargar y puedes así incrementar los textos en tiempo de ejecución.

Para manejo de textos, puedes usar strcat, strcmp, strcpy, strlen, etc. Puedes buscar en la ayuda de tu compilador y obtendrás mas.

Para archivos puedes usar fopen, fread, fwrite, feof, fseek, entre otras.

Espero esto te aporte algo para lo que necesitas.

gmantil

106
C/C++ / convertir CString en double
« en: Martes 11 de Febrero de 2003, 13:56 »
No veo en el código que colocas que hagas una asignación al double.

double a;

a=atof(cadena);

Ahora, si este no es el problema, intenta hacer el atof con una cadena pura:

a=atof("123.457");

Si esto te funciona, es posible que la función no interprete el tipo CString.

Suerte,

gmantil

107
C/C++ / Re: inicializar el modo 13h
« en: Martes 11 de Febrero de 2003, 13:46 »
También puede pasar que tu compilador no esté direccionando bien al lugar donde se encuentran los encabezados (.h).

Suerte,

gmantil

108
C/C++ / Re: inicializar el modo 13h
« en: Martes 11 de Febrero de 2003, 13:34 »
En otro compilador no produce ningún error tu código. Verifica que tengas declarado en el encabezado dos.h la union REGS. Puede ser que por alguna razón falte esta declaración en ese encabezado. Normalmente siempre se encuentra en este lugar esta declaración, pero puede pasar que tu archivo dos.h este corrupto. Es lo único que se me ocurre.

Suerte,

gmantil

109
C/C++ / Problema al leer desde un archivo a un registro
« en: Martes 11 de Febrero de 2003, 13:28 »
Veo que abres el archivo para solo lectura. Cuando abres un archivo con

fp=fopen("nombre.txt","r");

estas abriendo el archivo para solo leer en el. Lo debes abrir

fp=fopen("nombre.txt","r+");

para poder accederlo lectura y escritura. No planteas en tu problema como lees el registro, pero si utilizas la función fopen para abrir el archivo, debes utilizar fread para leerlo y así para todas la opereciones de I/O debes utilizar funciones f...

Espero haber entendido bien tu problema y que esto te ayude a aclarar lo que te pasa.

Saludos,

gmantil

110
C/C++ / Re: Ahorcado para 2 jugadores...
« en: Jueves 6 de Febrero de 2003, 13:25 »
Error ===> respuesta=NULL;

gmantil

111
C/C++ / Re: Ahorcado para 2 jugadores...
« en: Jueves 6 de Febrero de 2003, 13:23 »
Hola Jonathan:
Yo también encontré este error, pero asumí que fue dejado a propósito, pues la variable respuesta es una cadena de caracteres, luego para poder asignar NULL a sus elementos se hace necesario subdindicar la variable.

Debes colocar ==> respuesta=NULL;

Sinembargo, de todas maneras esta operación debe ser revisada para ver su necesidad, pues date cuenta que inicializan solo 10 elementos de respuesta en NULL y la variable tiene 80 elementos.

gmantil

112
C/C++ / Re: Punteros a funciones
« en: Martes 4 de Febrero de 2003, 20:13 »
Aquí podrá encontrar una explicación completa sobre los apuntadores a funciones y su implementación:

http://pjsml.50megs.com/pc/puntfunc.html

Suerte,

gmantil

113
C/C++ / Re: Una ayudita en linux, please!!
« en: Martes 4 de Febrero de 2003, 13:39 »
Cuando subo el pdf se corrompe. Deme su Email para enviarselo. Para entender el manejo de interrupciones en Linux, es bueno que lea este documento.

gmantil

114
C/C++ / Re: Una ayudita en linux, please!!
« en: Martes 4 de Febrero de 2003, 13:35 »
Efectivamente no pasó bien. De nuevo lo coloco.

gmantil

PD:También intentaré colocarlo por correo a su email.

115
C/C++ / Re: Una ayudita en linux, please!!
« en: Lunes 3 de Febrero de 2003, 21:06 »
Adjunto te remito un documento que puedes leer.

Suerte,

gmantil

116
C/C++ / pasar de c a c++
« en: Lunes 3 de Febrero de 2003, 20:34 »
Citar
Originalmente publicado por meloncoton
 
Citar
Originalmente publicado por davidrj
Algo asi es, tambien cambia
a++ por a=a+1
 


Eso no cambia. a++ y a+=1 funcionan perfectamente en ansi C;)


Las dos sentencias si son diferentes. Mire el siguiente ejemplo:

# include <stdio.h>

main()
{
   int a=1;

   printf("n%d :",a++);
   printf("n%d :",a+=1);
}

gmantil

117
C/C++ / Re: impresora USB en c
« en: Miércoles 29 de Enero de 2003, 18:11 »
Hola Satyr:
No estoy seguro que esto que te voy a decir funcione, pero puedes probar.

Si tu logras desde una ventana de DOS hacer una salida redireccionada a la impresora, como por ejemplo un

dir >prn

es porque la impresora ya está reconocida como la salida LPT estandar.
Si la prueba que te digo funciona, puedes hacer un

fp=fopen("PRN","w");

y luego puedes usar la impresora como un archivo estandar. Insisto que no estoy seguro que esto funcione, pero lo peor es no hacer un intento.

Si te funciona publicalo para que nos ayude a todos.

Suerte,
gmantil

118
C/C++ / Re: Swapping sin variables temporales
« en: Miércoles 29 de Enero de 2003, 14:20 »
Hola Gossard:
Lo que te han enviado no es una elevación a una potencia.

La asignación
 a ^= b ^= a ^= b;

está calculando un XOR entre bit de la variables, en este caso se calcula de derecha a izquierda, luego primero hace el XOR entre a y b y el resultado lo almacena en a. Este último hace se XOR con b y el resultado se almacena en b y por último el resultado de b se hace XOR con a y el resultado se almacena en a.

a=01010     => 10
b=10100     => 20
-------------
a=11110
b=10100    XOR
-------------
b=01010    => 10
a=11110    XOR
-------------
a=10100    => 20

Tener en cuenta que a ^= b;
es equivalente a tener a = a ^ b;

Suerte
gmantil

119
C/C++ / Re: Teclas con CTRL + Z, etc..
« en: Martes 28 de Enero de 2003, 23:32 »
Adjunto te he colocado un pequeñito código que te permitirá obtener el resultado de las teclas pulsadas. Debes tener en cuenta que los caracteres especiales como F1, Fn, etc, generan dos pulsaciones. La primera pulsación es 0 (cero) y la segunda el la pulsación correspondiente al caracter especial. F1=0,59. Con el código que te adjunto podrás ver las pulsaciones que quieras, incluso las de Ctrl que quieres.

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

main()
{
   char tecla;

   do
   {
      tecla = getch();
      printf("n%d   %c :",tecla,tecla);
   }while(tecla !=13);
}

Espero te sirva de algo.

gmantil

120
C/C++ / Re: array
« en: Viernes 24 de Enero de 2003, 23:36 »
Bueno, si lo que quieres es meter arreglos en cada posición del arreglo, te adjunto este corto ejemplo que guarda 10 nombres de 30 caracteres de largo en una matriz de caracteres.

Observalo a ver si es lo quieres, sino esperamos tu pregunta reformulada.

Suerte
gmantil

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

void main(void)
{
   char arreglo[10][30];
   int i;

   clrscr();

   /* CAPTURA 10 NOMBRES DE 30 char DE LARGO */
   for(i=0; i<10; i++)
   {
      printf("nDe nombre[%d]:",i+1);
      gets(arreglo);
   }

   /* IMPRIME LOS 10 NOMBRES */

   for(i=0; i<10; i++)
   {
      printf("nNombre[%d]:%s",i+1,arreglo);
   }
}

121
C/C++ / Re: Ahorcado para 2 jugadores...
« en: Viernes 24 de Enero de 2003, 23:11 »
Le he hecho algunas modificaciones a tu programa. Entre algunas cosas, convertí todas las variables a local con paso por parámetros. Lo modularicé, sin cambiar la esencia de lo que estaba hecho y le quite los retornos innecesarios.

Mientras mas modular sea un programa es mas fácil entenderlo y corregirlo. Además, la programación estructurada mientras sea mas modular, es mas fácil de pasar a objetos, hacia donde debe tender la programación.

Aún se pueden hacer mas mejoras pero esta es un comienzo,para aquellas personas que quieren ir avanzando y mejorando su forma de programar.

Espero os sirva.

Suerte,
gmantil

Está versión fue compilada en Turbo C 2.01.

#include <stdio.h> /*LIBRERIA STANDAR*/
#include <stdlib.h> /*LIBRERIA PARA MANEJAR EL EXIT*/
#include <ctype.h> /*LIBRERIA PARA MANEJAR EL ISALPHA*/
#include <conio.h> /*LIBRERIA DE GRAFICOS*/
#include <string.h> /*LIBRERIA PARA MANEJAR EL STRLEN*/
#include <dos.h> /*LIBRERIA PARA MANEJAR EL DELAY (PAGINA DE PRESENTACIÓN
Y DESPEDIDA*/

void imprime(int longitud);
void presenta(void);
void presenta2(void);
void alfabeto(void);
void captura(char *palabra);
void compara(int longitud,char *palabra,char *respuesta,int *opor);
void ahorcado(char *palabra);

void main(void)
{
   char palabra[80],respuesta[80]; /*VARIABLE DONDE IRE ALMACENANDO LAS LETRAS*/
   char letra,opc; /*VARIABLE QUE ALMACENO LA LETRA*/

   int i,j,longitud,opor;

   presenta();
   clrscr(); /*LIMPIO PANTALLA*/
   do{

      textbackground(BLUE); /*COLOR DE FONDO AZUL*/
      textcolor(WHITE); /*COLOR DE LETRA BLANCO*/

      i=longitud=opor=0; /*INICIALIZO LAS VARIABLES CON CERO*/

      for(i=0;i<10;i++)
      {
    respuesta=NULL; /*CON ESTE FOR LIMPIO LA CADENA*/
      }

      /*-------------DESPLIEGO EL JUEGO DEL AHORCADO----------------------*/
      clrscr();
      gotoxy(32,1);
      cprintf("JUEGO DEL AHORCADO");

      /*AQUI DESPLIEGA EL ALFABETO*/
      alfabeto();

      /*AQUI CAPTURA LA PALABRA*/
      captura(palabra);

      /*---------------AQUI ES LA PANTALLA PARA ADIVINAR LA PALABRA------------*/
      clrscr();
      gotoxy(32,1);
      cprintf("JUEGO DEL AHORCADO");

      /*AQUI DESPLIEGA EL ALFABETO*/
      alfabeto();

      longitud=strlen(palabra);
      imprime(longitud);

      /* COMPARA LA PALABRA DADA CON LAS LETRAS A ADIVINAR */
      compara(longitud,palabra,respuesta,&opor);

      /* MUESTRA EL AHORCADO */
      if (opor==20)
    ahorcado(palabra);

      textcolor(RED);
      gotoxy(28,23);
      cprintf("¨DESEAS VOLVER A JUGAR? [S/N]");

      do{
         opc=toupper(getch());
      } while(opc!='S' && opc!='N');

   }while(opc!='N'); /**FIN DEL PRIMER DO**/

   presenta2();
   clrscr();
   exit(1);
}/** FIN DEL main **/

/*ESTE MODULO DESPLIEGA EL ALFABETO*/
void alfabeto(void)
{
   int i;

   for(i=0;i<26;i++)
   {
      gotoxy(i*2+18,4);
      cprintf("%c",65+i);
   }
}

/* MODULO QUE CAPTURA LA PALABRA */
void captura(char *palabra)
{
   gotoxy(25,10);
   cprintf("I N T R O D U C E U N A P A L A B R A");
   gotoxy(30,14);
   gets(palabra);
}

/* COMPARA LA PALABRA DADA CON LAS LETRAS A ADIVINAR */
void compara(int longitud,char *palabra,char *respuesta,int *opor)
{
   int i,y=0;
   char letra;

   do{
      gotoxy(25,9);
      printf("A D I V I N A L A P A L A B R A");
      gotoxy(28,12);
      printf("E L I G E L A L E T R A=>>");

      letra=getch(); /*CON ESTE DO NO ADMITO NUMEROS*/

      gotoxy(10+(*opor)*3,22);
      printf("%c",letra);

      gotoxy(25,15);
      printf("MAXIMO 20 INTENTOS. INTENTO[%d]",(*opor)+1);

      for(i=0;i<longitud;i++)
      {
    if(letra==palabra)
    {
       gotoxy(15+i*4+18,19);
       printf("%c",letra);
       respuesta=letra;
    }
      }

      y=strcmp(palabra,respuesta);

      if(y==0)
      {
    gotoxy(32,23);
    {
       textcolor(YELLOW);
       cprintf("C O R R E C T O");
    }
      }
      (*opor)++;
   } while((*opor)<20 && y!=0);
}

/* MUESTRA EL AHORCADO */
void ahorcado(char *palabra)
{
   clrscr();
   gotoxy(26,13);
   textcolor(RED);
   cprintf("­ ­ ­ A H O R C A D O ! ! !");
   {
      textcolor(YELLOW);
      gotoxy(28,16);
      cprintf("LA PALABRA CORRECTA ES: %s",palabra);
      {
    textcolor(BROWN);
    gotoxy(36,5);
    cprintf("ßßßßßßß");
    gotoxy(38,6);
    cprintf("³   ²");
    gotoxy(38,7);
    cprintf("   ²");

    gotoxy(36,8);
    cprintf("--³-- ²");
    gotoxy(38,9);
    cprintf("³   ²");
    gotoxy(38,10);
    cprintf("^   ²");
    gotoxy(37,11);
    cprintf("/   ²");
      }
   }
}

void presenta()
{
   textbackground(BLACK);
   textcolor(GREEN);
   clrscr();
   gotoxy(20,1);
   cprintf("U N I V E R S I D A D D E L E à N");
   gotoxy(25,8);
   cprintf("CARLOS ISRAEL NEGRETE ROJAS");
   gotoxy(31,9);
   cprintf("MAT. 17029");
   gotoxy(33,11);
   cprintf("PRESENTA");
   gotoxy(26,13);
   cprintf("EL JUEGO DEL AHORCADO 2K2");
   {
      textbackground(BLUE);
      textcolor(YELLOW);
      gotoxy(1,25);
      cprintf("ESPERA UN MOMENTO...");
   }
   delay(8000);
}

void presenta2()
{
   textbackground(BLACK);
   textcolor(GREEN);
   clrscr();
   gotoxy(20,1);
   cprintf("U N I V E R S I D A D D E L E à N");
   gotoxy(25,8);
   cprintf("CARLOS ISRAEL NEGRETE ROJAS");
   gotoxy(31,9);
   cprintf("MAT. 17029");
   gotoxy(33,11);
   cprintf("PRESENTà");
   gotoxy(26,13);
   cprintf("EL JUEGO DEL AHORCADO 2K2");
   {
      textbackground(BLUE);
      textcolor(YELLOW);
      gotoxy(1,25);
      cprintf("GRACIAS POR JUGAR...");
   }
   delay(8000);
}

void imprime(int longitud)
{
   int i;
   for(i=1;i<=longitud;i++)
   {
      gotoxy(15+i*4+14,20);printf("_");
   }
}

122
C/C++ / Quisiera ayuda con los Operadores de Asignacion! :(
« en: Jueves 23 de Enero de 2003, 23:39 »
Cuando usas el operador = en un incremento como:

i = 5;         /* esta linea coloca 5 en i */
i = i + 20;  /* esta linea incrementa en 20 a i */

Luego después de la segunda linea i tomará el valor de 25.

La linea :
i = i + 20;

puede ser reemplazada por :
i += 20; /*luego esto tambien da 25 */

Es importante tener en cuenta que la precencia de ioperadores puede variar con los operadores operador=, pues estos son casí los últimos de la jerarquia.

Si haces :

i = 5;
i = i  * 3 + 4; /* esto da 19 */

Pero si escribes:

i *= 3 + 4; /* esto da 35 */

pues + es de mayor jerarquia que *=

Todos estos operadores funcionan similarmente a mi ejemplo.

Espero esto te ayude un poco.

Suerte,
gmantil

Páginas: 1 ... 3 4 [5]