[Problema Lenguaje C] Calcular años bisiextos :S

Este es le problema, y si os digo la verdad no tengo ni idea por donde cogerlo....do while?

Escribir un programa que saque por pantalla todos los años bisiestos hasta el año 2000. Son años bisiestos los múltiplos de cuatro que no lo son de cien, salvo que lo sean de cuatrocientos, en cuyo caso si son bisiestos.

un saludo y gracias por adelantado
El algoritmo no parece complicado
Usa el MOD, si al dividir por 400 no te da 0 es que no es divisible, y assí con todos

P.ej.
año MOD 400 = 0 then printf "Si es bisiesto" ELSE
año MOD 4 = 0 and año MOD 100 <> 0 then printf "Si es bisiesto" ELSE
printf "No es Bisiesto"

Mas o Menos
do while, while o for, mientras vayas pasando uno a uno con un indice "i" y haciendo "i" modulo de 4, 400 y 100 con if's y tirando.
ostia....es verdad voy a probar con el modulo...en pseudocodgio si q sabia programarlo (y quien no) pero ahora con C ando algo perdidito
int []bisiestos;
int i=0; int j=0;

while(i<=2000)
{
if(((i%4) == 0) && (i%100 != 0)) || (i%400 == 0))
{
bisiestos[j] = i;
j++;
}
i++;
}


Algo así. [bye]

P.D.: el '%' simboliza lo mismo que MOD, que devuelve el resto de la división, que no recuerdo si se ponía así o de otro modo.
Zhul escribió:int []bisiestos;

P.D.: el '%' simboliza lo mismo que MOD, que devuelve el resto de la división, que no recuerdo si se ponía así o de otro modo.


Sí, en C es %.
Mejor en PC no...?

Un saludo!
ayer hice una funcion como tu quieres pero solo son bisiestos los multiplos de 4, pero no hay problema en adaptarla

si la quieres, avisa

lo unico que esta en c++


salu2;


pd: la declaracion es asi: int comprobar_fecha (string fecha)
Teniente Dan escribió:pero solo son bisiestos los multiplos de 4...


Cuidadín.... que no SÓLO son bisiestos los múltiplos de 4, o sea, los divisibles por 4, sino como han dicho:
NiLbReTh escribió:los múltiplos de cuatro que no lo son de cien, salvo que lo sean de cuatrocientos, en cuyo caso si son bisiestos


Saludos [bye]

PD: Iba a poner la codificación de uan rutina parecida en COBOL pero al final he decidido no ponerla, pa no marear más la perdíz..... :)
bueno gente me estoy volviendo tarumba para otro ejercicio....

3. Escribir un programa que muestre la tabla de multiplicar del 1 al 10. Nota: no sirve poner toda la tabla en el programa.

y el codigo escrito es este:

int main (void)
int i, j, res;

for (i=1, j=1; j=10; j++)
{
res=i*j;
printf (res)
}
for (i=1, j=1; i=10; i++)
{
res=i*j;
printf (res)
}
dudas, hay que inicializar siempre el main de esa manera??

otra, el compilador me da error de sintaxis antes del primer for :O, y no tenog ni zorra xq puede ser

y la ultima, se q lo expuesto solo mostraria la tabla del 1 (con el primer for) mientras que el el segundo for mostraria el 1 multiplicado por el 1,2,3..10...por lo que como podria ser

un saludo y gracias por adelantado de nuevo
int main (void)
int i, j, res;

for (i=1, j=1; j<=10; j++)
{
res=i*j;
printf (res)
}
for (i=1, j=1; i<=10; i++)
{
res=i*j;
printf (res)
}


Para empezar
ese j=10 hace que nunca entre en el bucle
seria j<=10 (idem para i)

Supongo que querras escribirl en horizontal (o te has olvidado los \n)
pero es más facil en vertical y con dos bucles anidados
for (j=1;j<=10;j++){
printf ("Tabla del %d\n",j);
for (i=1;i<=10;i++){
printf ("%d x %d = %d\n",i,j,j*i);
}
}

Para hacerlo más bonito metele tabuladores en los printf
y todo eso
ahmmm asi que se pueden anidar y asi que se haga un barrido simultaneo del i=1 al 10 y del j=1 al 10 multiplicandose...jejej

lo q pasa q el compilador devcpp me sigue dando error de sintexis en el priemr for y no tengo ni zorra xq puede ser
puede que sea por la declaracion del main que haces.

Que tenga entendido puede ser de dos formas:

void main (void)
int main (int argc, char argv[])

No se me ocurre otra cosa.

Saludosss...
12 respuestas