Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/01/2012, 14:03
Avatar de CapacProg
CapacProg
 
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años, 1 mes
Puntos: 71
Respuesta: Calcular días que quedan hasta final de año

Hola, le comento algunas cosas acerca de su implementación.
  1. La variable transcurridos debe de inicar en cero ya que es un acumulador de sumas.
  2. En la declaración del vector dias no se requiere colocar la longitud, ya que al ser declarado de esta forma el compilador es el que se encarga calcular su longitud.
  3. No todos los meses tienen 31 días, aquí hay un punto grave de su algoritmo ya que si el año es bisiesto y lee como día 29 de febrero tendrá errores muy tontos. Para salvar esto le aconsejo leer el año, luego el mes y finalmente el día c/u con su respectiva validación.
  4. En la declaración de su for este no hace efecto a ninguna línea ya que hay un ; al final.
  5. Si esta sumando los dias de los meses trancurridos no debería tomar i<n, sino i<n-1, ya que al final suma los días del mes en curso.

Puesto de esta manera su código quedaría como se muestra abajo, faltando los puntos de lecturas de año y sus validaciones. Esto para que haga sus pruebas y tenga como avanzar lo que le falta.

Código C:
Ver original
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. int main() {
  5.  
  6.     int n, i, d, transcurridos = 0, restantes;
  7.     int dias[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  8.    
  9.     printf("Elige un dia del 1 al 31: ");
  10.     scanf("%d", &d);
  11.  
  12.     do {
  13.         printf("Elige un mes del 1 al 12: ");
  14.         scanf("%d", &n);
  15.     } while (n < 1 || n > 12);
  16.     for (i = 0; i < n-1; i++) {
  17.         transcurridos += dias[i];
  18.     }
  19.     transcurridos += d;
  20.     restantes = 365 - transcurridos;
  21.  
  22.     printf("Dias restantes: %d", restantes);
  23.     system("PAUSE");
  24.     return 0;
  25. }


Si tiene más dudas puede preguntar.
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%