• Jueves 2 de Mayo de 2024, 07:47

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

Páginas: [1] 2
1
C/C++ / Re: Porque Empieza Asi Un Programa ?
« en: Martes 16 de Mayo de 2006, 17:17 »
Esa es la forma en que se declaraban las funciones antes que se publicara el primer estandar de C.

Un saludo

2
C/C++ / Re: Solo Q Errores....
« en: Martes 11 de Abril de 2006, 01:06 »
Cita de: "X.Cyclop"
Yo uso el MinGW y me da error.

MinGW es el compilador incluido con Dev-C++ y me referia a que es posible utilizar la biblioteca conio despues de seguir los pasos que mencione en uno de mis mensajes anteriores.

Cita de: "X.Cyclop"
Con FORs.

Por lo visto no me explique bien. Me refiero (por ejemplo) a imprimir lo siguiente:
Código: Text
  1.       Y despues imprimimos esta linea
  2.      
  3.           Primero imprimimos esta linea
  4.  

Esto es posible utilizando la biblioteca conio, el API de MS Windows o incluso con secuencias de escape ANSI. Si es posible el primer y tercer caso depende del compilador y SO, respectivamente.

¿Como lo harias con bucles for?

Un saludo

3
C/C++ / Re: Solo Q Errores....
« en: Domingo 9 de Abril de 2006, 22:30 »
Cita de: "X.Cyclop"
conio no es una librería stándar, es de Borland y solo sirve si usas el C++ Builder.

No es que me parezca una buena idea utilizar esa biblioteca pero hay otros compiladores que la soportan como es el caso de MinGW y Lcc-win32.

Cita de: "X.Cyclop"
La única alternativa sería usar un For y eliminar conio y gotoxy().

¿Y si necesitas imprimir algo a partir de la posicion 20, 20 y (despues de esto) en la posicion 10, 10?

Un saludo

4
C/C++ / Re: Solo Q Errores....
« en: Sábado 8 de Abril de 2006, 19:19 »
Como ya te indicaron la funcion 'main' se debe definir como una funcion cuyo tipo de retorno es int:
Código: Text
  1. #include <stdio.h>
  2. #include <conio.h>
  3.  
  4. int main(void)
  5. {
  6.    gotoxy(20, 10);
  7.    printf("Hola");
  8.    
  9.    return 0;
  10. }
  11.  

Un saludo

5
C/C++ / Re: Solo Q Errores....
« en: Sábado 8 de Abril de 2006, 16:39 »
Cita de: "pabloskini"
pues como instalo la biblioteca conio.h??
Utiliza tu buscador favorito (tal vez Google) y busca el sitio que ya te indique ("C con clase"), en ese sitio buscas la biblioteca conio, la descargas y sigues las instrucciones paso a paso.

Cita de: "pabloskini"
o de donde descargo su devpack???
Revisa la documentacion de Dev-C++, en especial lo relacionado con los "devpacks".

Cita de: "JuanK"
o lo que quieras, aunque sinoestoy mal hay alguna convencion que menciona cual e esos dos que te mostre se devuelve cuando es ejecucion exitosa y cual cuando sea ejecucion fallida.
Siguiendo el estandar de C se puede utilizar EXIT_SUCCESS o 0 para una salida con exito y EXIT_FAILURE para una salida por error, estas dos macros estan definidas en stdlib.h

Por ejemplo:
Código: Text
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(void)
  5. {
  6.    puts("Hola, mundo");
  7.    
  8.    return EXIT_SUCCESS;
  9. }
  10.  

Un saludo

6
C/C++ / Re: Solo Q Errores....
« en: Sábado 8 de Abril de 2006, 13:04 »
Dev-C++ no incluye (de forma predeterminada) a la biblioteca conio, si quieres utilizarla la tienes que instalar ya sea manualmente y siguiendo las instrucciones paso a paso del sitio "C con clase" o puedes descargarla como un "devpack".

Un saludo

7
C/C++ / Re: Duda Sobre Arreglo
« en: Jueves 9 de Febrero de 2006, 15:40 »
En C es un poco mejor utilizar:
Código: Text
  1. int *numero;
  2.  
  3. /* Reservamos espacio para 10 elementos */
  4. numero = malloc(10 * sizeof *numero);
  5.  

Ya que (a diferencia de C++) en C el casting no es necesario y no se recomienda.

Un saludo

8
C/C++ / Re: Declaracion De Un Numero De Variables Desconocido
« en: Miércoles 25 de Enero de 2006, 15:04 »
Para eso tienes que reservar memoria de forma dinamica ya sea con malloc (en C) o con el operador new (en C++). Un ejemplo sencillo en C estandar es:
Código: Text
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(void)
  5. {
  6.    int *variable;
  7.    int num_vars = 10;
  8.    int i;
  9.    
  10.    /* Reservamos memoria para 'num_vars' elementos */
  11.    variable = malloc(num_vars * sizeof *variable);
  12.    
  13.    /* Verificamos que no hayan ocurrido errores */
  14.    if (variable == NULL)
  15.       return EXIT_FAILURE;
  16.    
  17.    /* Asignamos un valor seudo-aleatorio a cada uno */
  18.    for (i = 0; i < num_vars; i++)
  19.       variable[i] = rand() % 10;
  20.    
  21.    /* Imprimos el contenido de los elementos */
  22.    for (i = 0; i < num_vars; i++)
  23.       printf("variable[%d] == %d\n", i, variable[i]);
  24.    
  25.    /* Liberamos la memoria reservada y terminamos */
  26.    free(variable);
  27.    return EXIT_SUCCESS;
  28. }
  29.  

Un saludo

9
C/C++ / Re: Duda Con Punteros
« en: Viernes 6 de Enero de 2006, 12:08 »
Cita de: "bob esponja"
el problema es que al salir raiz no toma el valor que le di adentro
probe metodos con punteros a int y si los modifica, no se porque sera porque antes ya lo habia hecho ( no me acuerdo como  :D  ).
Si te entiendo correctamente estas tratando de modificar el puntero al primer elemento (la variable 'raiz') de una lista dentro de tu funcion.

Si ese es el caso tienes dos opciones:

1) Pasar la direccion en memoria de 'raiz', esto es, cambiar el tipo del parametro a 'Nodo **raiz' y realizar indireccion dentro de tu funcion ya que si no lo haces estarias modificando la variable local.

2) Modificar tu funcion para que devuelva un valor de tipo 'Nodo *' (que seria el nuevo valor de 'raiz') y asignar este a la variable 'raiz'.

Un saludo

10
C/C++ / Re: Guardar Archivo
« en: Martes 29 de Noviembre de 2005, 18:40 »
Lo mas sencillo seria que utilizaras la funcion sprintf (stdio.h) para crear tu propia version de itoa, por ejemplo una version basica de esta funcion es, en C estandar:
Código: Text
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <limits.h>
  4.  
  5. char *fn_itoa(int numero);
  6.  
  7. int main(void)
  8. {
  9.    int i;
  10.    char *cadena;
  11.    
  12.    for (i = 0; i < 10; i++)
  13.       if ((cadena = fn_itoa(i * i)) == NULL)
  14.          return EXIT_FAILURE;
  15.       else {
  16.          printf("%d * %d == %2s\n", i, i, cadena);
  17.          free(cadena);
  18.       }
  19.    
  20.    return EXIT_SUCCESS;
  21. }
  22.  
  23. char *fn_itoa(int numero)
  24. {
  25.    char *cadena;
  26.    
  27.    if ((cadena = malloc(sizeof(long) * CHAR_BIT + 1)) == NULL)
  28.       return NULL;
  29.    
  30.    if (sprintf(cadena, "%d", numero) < 1)
  31.       return NULL;
  32.    
  33.    return cadena;
  34. }
  35.  

Un saludo

11
C/C++ / Re: Cual Es El Problema De Mi Codigo?
« en: Domingo 9 de Octubre de 2005, 03:10 »
El error que emite tu compilador se debe al punto y coma de mas justo antes del parentesis derecho.

Tambien hay que tomar en cuenta que ese es un bucle infinito ya que la expresion 0 <<= 1 siempre evalua a 0.

Me imagino (y esto es solo una suposicion) que lo que se intenta con ese bucle es ejecutarlo cinco veces con la variable col tomando los valores 1, 2, 4, 8 y 16. Para esto se tendria que cambiar el bucle a:
Código: Text
  1. for (col = 1; col &#60; 32; col &#60;&#60;= 1){
  2.    /* ... */
  3. }
  4.  

Un saludo

12
C/C++ / Re: Duda Con Atoi
« en: Martes 4 de Octubre de 2005, 17:06 »
El archivo limits.h define los valores maximos y minimos que se pueden almacenar en los tipos enteros como int, long, etc.

Por ejemplo, para conocer los limites de los tipos int y long podemos utilizar:
Código: Text
  1. #include &#60;stdio.h&#62;
  2. #include &#60;stdlib.h&#62;
  3. #include &#60;limits.h&#62;
  4.  
  5. int main(void)
  6. {
  7.    printf(&#34;int  - valor maximo = % d&#092;n&#34;, INT_MAX);
  8.    printf(&#34;int  - valor minimo = % d&#092;n&#34;, INT_MIN);
  9.    
  10.    printf(&#34;long - valor maximo = % ld&#092;n&#34;, LONG_MAX);
  11.    printf(&#34;long - valor minimo = % ld&#092;n&#34;, LONG_MIN);
  12.    
  13.    return EXIT_SUCCESS;
  14. }
  15.  

Si queremos verificar que estos limites no se sobrepasen no nos sirven las funciones atoi y atol. En su lugar tenemos que utilizar la funcion strtol, un ejemplo sobre como utilizar esta funcion se encuentra en este tema: Leer Solo Números O Solo Letras

Un saludo

13
C/C++ / Re: Duda Con Atoi
« en: Lunes 3 de Octubre de 2005, 14:18 »
Eso se debe a que el valor que se introduce sobrepasa la capacidad del tipo int, una posible solucion seria que utilizaras la funcion atol (array to long).

Los valores maximos permitidos para los diferentes tipos enteros estan definidos en el archivo limits.h.

En todo caso es mejor utilizar la funcion strtol (stdlib.h) ya que esta te permite realizar una validacion mas estricta como verificar si el valor esta en el rango valido para el tipo long, si todos los caracteres de la cadena se convirtieron con exito, etc.

Y tambien te recomendaria que eliminaras la llamada a la funcion gets y la sustituyas con fgets + strchr.

Un saludo

14
C/C++ / Re: Funcion De C
« en: Viernes 30 de Septiembre de 2005, 16:55 »
Depende del sistema operativo que estes utilizando, en el caso de MS Windows puedes utilizar las funciones FindFirstFile y FindNextFile.

La documentacion de FindFirstFile se encuentra en esta pagina en MSDN, tambien hay dos ejemplos.

Un saludo

15
C/C++ / Re: Palindromo
« en: Viernes 16 de Septiembre de 2005, 02:59 »
Para verificar si una palabra es o no un palindromo tienes que comparar los caracteres de la mitad izquierda de la palabra con los caracteres de la mitad derecha: el primer caracter con el ultimo, el segundo caracter con el penultimo, etc.

Si en cualquier paso los caracteres no coinciden entonces la palabra no es un palindromo.

Seria algo asi:
Código: Text
  1. /* obtenemos la cadena y la almacenamos en el array 'palabra' */
  2.  
  3. /* calcular la longitud de la palabra */
  4. for (j = 0; palabra[j] != '&#092;0'; j++)
  5.   &#59;
  6.  
  7. /* verificar si es un palindromo */
  8. es_un_palindromo = 1; /* verdadero */
  9. for (i = 0, j--; i &#60; j; i++, j--)
  10.    if (palabra[i] != palabra[j]){
  11.       es_un_palindromo = 0; /* falso */
  12.       break;
  13.    }
  14.  

Un saludo

16
C/C++ / Re: Ayuda Con Libreria Iostream.h
« en: Viernes 16 de Septiembre de 2005, 02:39 »
Una referencia en linea (pero en ingles) que describe la biblioteca estandar de C++ la puedes encontrar a partir de esta pagina.

Un saludo

17
C/C++ / Re: Ordenamiento De Matrices
« en: Domingo 21 de Agosto de 2005, 16:53 »
Como ya te indico ragnarok solo cambia la forma en la que se accede a cada elemento, en un array de tipo int:
Código: Text
  1. if (a[i] &#62; a[j]){
  2.    /* Intercambio */
  3.    
  4.    temp = a[i];
  5.    a[i] = a[j];
  6.    a[j] = temp;
  7. }
  8.  

Con un array de arrays de tipo int tienes que descomponer los indices en filas y columnas, en lugar de utilizar a utilizas:
 a[i / COLS][i % COLS]
donde COLS es una macro que define el numero de columnas:
Código: Text
  1. #define FILAS 4 /* Numero de filas    */
  2. #define COLS  6 /* Numero de columnas */
  3.  
  4. /* mas codigo ... */
  5.  
  6. if (a[i / COLS][i % COLS] &#62; a[j / COLS][j % COLS]){
  7.    /* Intercambio */
  8.    
  9.    temp = a[i / COLS][i % COLS];
  10.    a[i / COLS][i % COLS] = a[j / COLS][j % COLS];
  11.    a[j / COLS][j % COLS] = temp;
  12. }
  13.  

Un saludo

18
C/C++ / Re: Error Con Los Punteros
« en: Miércoles 17 de Agosto de 2005, 14:59 »
Cita de: "angels"
Pero no me deja hacer:
Código: Text
  1.  
  2. tCuc *CreaCuc(void) {
  3.  
  4.      tCuc *cuc;
  5.      cuc-&#62;CabezaCuc = NULL;
  6.      cuc-&#62;ColaCuc = NULL;
  7.      return (cuc);
  8.      
  9. }
  10.  
  11.  
Esto se debe a que cuc no apunta a una direccion valida de memoria. Antes de utilizar este puntero debes reservar memoria suficiente para un objeto de tipo tCuc:
Código: Text
  1. tCuc *CreaCuc(void)
  2. {
  3.    tCuc *cuc;
  4.    
  5.    if ((cuc = malloc(sizeof(*cuc))) != NULL){
  6.       cuc-&#62;CabezaCuc = NULL;
  7.       cuc-&#62;ColaCuc = NULL;
  8.    }
  9.    
  10.    return cuc;
  11. }
  12.  

Un saludo

19
C/C++ / Re: Ayuda Con Quick Hull
« en: Martes 19 de Julio de 2005, 17:58 »
Código: Text
  1. void main (void)
  2.  
Tomando en consideracion que no indicas el compilador y plataforma que utilizas seria mejor la definicion int main(void) o int main(), no hace daño, es mas portable y evita modificar el codigo cuando este se compila en compiladores en el modo mas estricto posible.

Código: Text
  1. int izq[1][1],der[1][1],sup[1][1],inf[1][1];
  2.  
Aqui defines cuatro arrays cuyo unico elemento es array[0][0], seria mejor que utilizaras la instruccion typedef en esta forma:
Código: Text
  1. typedef struct punto {
  2.    int x;
  3.    int y;
  4. } Punto;
  5.  
  6. /* mas codigo ... */
  7.  
  8. Punto izq, der, sup, inf;
  9.  

Código: Text
  1. inicio();
  2. cleardevice();
  3. mtest();
  4. mver();
  5.  
Y en esta parte llamas a un bloque de funciones pero la operacion de estas no tiene impacto en la funcion main ya que:
1) No defines variables globales que las funciones puedan modificar y
2) No les pasas argumentos que pudieran modificar.

Código: Text
  1. inf[0][1] = P[0][1];
  2. der[0][0] = P[0][0];
  3. izq[0][0] = P[0][0];
  4. sup[0][1] = P[0][1];
  5.  
En este bloque modificas el valor de los arrays inf, der, etc. en base al valor de los elementos del array P pero:
1) El valor de los elementos del array P no esta definido, en buen cristiano esto elementos pueden tener cualquier valor y
2) En C los indices de los arrays inician en 0: inf[0][1] y sup[0][1] no son indices validos.

Un saludo

20
C/C++ / Re: Validacion De Numeros Y Caracteres
« en: Miércoles 15 de Junio de 2005, 14:59 »
Si estas desarrollando una aplicacion de consola una posible solucion es que leas una linea completa de texto utilizando una funcion propia o fgets (stdio.h) y despues de esto trates de convertir la cadena a un valor de tipo int mediante la funcion strtol (stdlib.h).

Un saludo

21
C/C++ / Re: Algoritmo De Mezcla Natural Con Ficheros Para C
« en: Domingo 12 de Junio de 2005, 10:37 »
Tal vez se refiera al algoritmo de ordenacion 'MergeSort'.

Un saludo

22
C/C++ / Re: Borland C++ - Ver. 5.5 Ya Lo Baje, Instale
« en: Viernes 3 de Junio de 2005, 16:27 »
Significa que para compilar, vincular, etc. necesitas utilizar el interprete de comandos de tu sistema operativo, este es command.com en MS Windows 95/98/ME y cmd.exe en MS Windows NT/2000/XP.

Si nunca has utilizado un interprete de comandos entonces seria mejor que primero mejoraras tu manejo del sistema operativo que utilizas y sus aplicaciones de soporte antes de que empezaras a estudiar programacion.

Esto porque cuando empieces a aprender C (o C++ o Java) las primeras aplicaciones que desarrolles van a ser aplicaciones de consola.

Un saludo

23
C/C++ / Re: Leer Numeros, No Scanf
« en: Lunes 2 de Mayo de 2005, 15:27 »
Una discusion en este foro sobre el tema es Leer Solo Números O Solo Letras

Un saludo

24
C/C++ / Re: Truncar Un Archivo
« en: Miércoles 27 de Abril de 2005, 00:06 »
Utilizando solo C estandard no se puede ya que EOF no es un caracter que se lea de un stream sino el estado del stream.

Para realizar la operacion necesitas revisar la documentacion sobre el API de tu sistema operativo para averiguar si esta (el API) expone una funcion que realize la operacion que requieres.

Un saludo

25
C/C++ / Re: Ayuda Con Estructuras
« en: Sábado 23 de Abril de 2005, 13:46 »
Si quieres que en este foro te den una respuesta que te sea de utilidad debes de indicar el lenguaje, compilador y plataforma que utilizas.

Un saludo

Páginas: [1] 2