Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Mensajes - rir3760

#111
Cita de: DanielC# en 22 Febrero 2015, 20:10 PM
Es relativamente fácil, todas las variables a utilizar deben ser sin signo y la operación para empaquetar los caracteres es:
unsigned char a = ALGO;
unsigned char b = ALGO;
unsigned int r = a << CHAR_BIT | b;

/* Impresion bit por bit de la variable r */


Como imprimir una variable bit por bit es algo que ya se trato en uno de tus otros temas.

Un saludo
#112
Programación C/C++ / Re: Segundos en C++
23 Febrero 2015, 02:45 AM
Descripción de la función sleep.

Un saludo
#113
Es posible si se compila según (y el compilador soporta) el estándar C99 (en C11 el soporte es opcional). En este caso debes obtener primero el numero de días y solo entonces declarar el array. Mas o menos así:
int num_dias;

/* Obtenemos de alguna forma el numero de dias */

double temp[num_dias];


Otra opción que no depende del estándar utilizado es reservar memoria mediante las funciones malloc, calloc o realloc. Poco mas o menos así:
int num_dias;

/* Obtenemos de alguna forma el numero de dias */

double *temp = malloc(num_dias * sizeof *temp);


Pero si apenas empiezas es mejor dejar ambas formas para después (por el momento utiliza arrays indicando su numero de elementos mediante una constante).

Un saludo
#114
El error principal en el programa es la declaración del array para almacenar las temperaturas:
int dias=0;
/* ... */
float grados[dias],acum=0,mayor=0, menor=100, temp_prom=0,nuevatemp=0,viejatemp=0;

Indicar el numero de elementos en un array mediante una variable solo esta garantizado en el estándar C99 y aun cuando sea posible el valor de la variable "dias" es cero.

En su lugar utiliza una constante que considere el numero máximo de elementos y que en tu caso son los días del mes (máximo 31). Mas o menos así:
#define MAX_DIAS  31

/* ... */

float grados[MAX_DIAS];

/* ... */


Otra recomendación es evitar el uso de la función system y fflush(stdin), el porque de ello en el tema |Lo que no hay que hacer en C/C++. Nivel basico|.

Un saludo
#115
Cita de: droken26 en 22 Febrero 2015, 13:21 PMHe realizado el código y funciona, pero le indico que me pregunte si desea realizar otra operación, si le pongo que si, entra en bucle pero si le pongo que no, se cierra el programa que es lo que debe de hacer, el problema que tengo es como quitar ese bucle, que cuando le pongo que si, pues me pregunte nuevamente que numero desea operar nuevamente.
Lo que debes hacer es utilizar un bucle do ... while donde primero verifiques que el valor no sea cero para así realizar la verificación si es primo o no, a continuación pides confirmación al usuario si desea repetir el proceso. La condición para que el bucle se repita es que el numero no sea cero y la respuesta del usuario sea s.

De esta forma:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
   int n,i,c=0;
   char resp;
   
   do {
      puts("Introduce un numero entero positivo (0 para terminar)");
      scanf("%d", &n);
      if (n != 0){
         
         /* Verificar si es primo */
         
         printf("Desea repetir la operacion s/n: \n");
         scanf(" %c", &resp);
      }
   }while (n != 0 && (resp == 's' || resp == 'S'));
   
   return 0;
}


Sin embargo (siendo diplomatico) no gusta ya que tienes dos formas de salida cuando la primera (introducir el valor cero) basta para terminar el programa. Por ultimo si apenas empiezas deberías evitar el uso de la biblioteca conio de Borland, mas información en la pagina |Lo que no hay que hacer en C/C++. Nivel basico|.

Un saludo
#116
Programación C/C++ / Re: Texto a binario
22 Febrero 2015, 04:36 AM
Cita de: sabeeee en 22 Febrero 2015, 00:27 AMAlgo para manipular un gran archivo y pasarlo por completo a 01010010 de a 8 por cada carácter.
No es necesario ya que cada carácter en un archivo se almacena de esa forma: como un patrón de bits, que se maneje en decimal es otra historia.

En cuanto a la conversión de una base a otra lo mejor es utilizar el motor de búsqueda, dos temas relacionados son:
De decimal a binario sumando sólo los bits encendidos [C].
pasar de decimal a cualquier base menor de 10

Un saludo
#117
Otros errores en el programa son:

* Falta indicar el tipo de la función main.
* En todas las llamadas a scanf falta el operador "dirección de" (el '&').
* El programa tiene una incursiona infinita (no valida a partir de C99) ya que el valor de retorno de la función main es:
Código (cpp) [Seleccionar]
return main();

Otro detalle preocupante es que indicas que estas aprendiendo C++ pero el programa no tiene nada de ese lenguaje (una vez solucionados los errores debe compilar como C sin problemas).

Un saludo
#118
Puedes utilizar la función rename previa inclusión del encabezado <cstdio>.

Un saludo
#119
Cita de: sora_ori en 16 Febrero 2015, 19:54 PMCreo que será que tengo que recoger de otra forma la cadena porque con un SCANF puedo pero no me permite coger frases con espacios y no es el objetivo que estoy buscando.
Con la información que muestras no es posible ayudarte, por favor publica el código fuente completo.

Un saludo
#120
Cita de: DanielC# en 15 Febrero 2015, 14:04 PM
CitarNo es necesario comparar el valor leído contra INT_MAX ya que no hay forma de que sea mayor que este, esa comparación la debes eliminar.

Esta línea no me cierra, si yo no efectuó esa comprobación el resultado es incorrecto.
Si te da un resultado incorrecto sera por alguna otra razón.

Cuando llamas a scanf esta consume los caracteres de la entrada estándar y en base a ellos almacena un valor de tipo signed int en la variable en cuestion, ese valor siempre estará en el rango [INT_MIN, INT_MAX].

En todo caso si actualizaste el programa publica su código fuente de nuevo.

Un saludo