gcc reporta la línea 10, pero el punto y coma falta al final de la 8. El compilador se da cuenta cuando ya es tarde.
Reto 3
Encuentra el errorCiencias sociales★8 min
Compila sin un solo aviso. Y aun así, se equivoca.
encuesta.c
#include<stdio.h>
int main(void)
{
float h1, h2, h3;
scanf("%f %f %f", &h1, &h2, &h3);
float promedio = h1 + h2 + h3 / 3;
printf("Promedio de sueno: %.1f h\n", promedio);
return 0;
}
lo que imprime con 5 7 9
$ gcc -Wall -Wextra encuesta.c && ./a.out
5 7 9Promedio de sueno: 15.0 h
Tres personas durmieron 5, 7 y 9 horas. ¿Por qué sale 15?
esperado · caso 1
$ ./a.out
5 7 9
Promedio de sueno: 7.0 h
esperado · caso 2
$ ./a.out
8 8 8
Promedio de sueno: 8.0 h
esperado · caso 3
$ ./a.out
4 5 9
Promedio de sueno: 6.0 h
Respuesta · Reto 3
Encuentra el errorCiencias sociales★8 min
Faltaban los paréntesis.
encuesta.c
#include<stdio.h>
int main(void)
{
float h1, h2, h3;
scanf("%f %f %f", &h1, &h2, &h3);
float promedio = (h1 + h2 + h3) / 3;
printf("Promedio de sueno: %.1f h\n", promedio);
return 0;
}
gcc -Wall -Wextra encuesta.c
$ echo "5 7 9" | ./a.out
Promedio de sueno: 7.0 h
$ echo "8 8 8" | ./a.out
Promedio de sueno: 8.0 h
$ echo "4 5 9" | ./a.out
Promedio de sueno: 6.0 h
1
h3 / 3 se calcula primero9 / 3 = 3
2
Después se suma5 + 7 + 3 = 15
3
Con paréntesis(5 + 7 + 9) / 3 = 7
Reto 4
Sin computadoraLenguaje y arte★10 min
Dibújalo sin mirar.
A · mira la figura
solo palabras
B · dibuja sin ver
1
Parejas.A ve la figura. B no.
2
A dicta instrucciones precisas.Prohibido decir qué es o señalar.
3
B dibuja.Comparan y cambian de rol.
Respuesta · Reto 4
Sin computadoraLenguaje y arte★10 min
Precisión: eso es un algoritmo.
Ambigua
Un cuadrado grande y, arriba, un triángulo.
Precisa
1. Cuadrado de 6 cm, con la base en la mitad de abajo de la hoja. 2. Sobre el lado de arriba, un triángulo con la punta 3 cm más arriba. 3. Círculo de 1 cm de radio, en el centro del cuadrado.
Pasos ordenados, sin ambigüedad, que terminan.
Reto 5
Programa en CMúsica★★10 min
Cuatro pulsos por compás: ¿cuántos compases?
Problema
Una canción trae pulsos sueltos y cada compás se llena con 4.
Qué debes lograr
Lee el total de pulsos. Muestra cuántos compases completos hay y cuántos pulsos sobran.
Entregable
Programa en C
desde cero · solo variables, scanf, printf, / y %
caso 1 · típico
$ ./a.out
10
2 compases y 2 pulsos
caso 2 · exactos
$ ./a.out
16
4 compases y 0 pulsos
caso 3 · < 1 compás
$ ./a.out
3
0 compases y 3 pulsos
Respuesta · Reto 5
Programa en CMúsica★★10 min
/ cuenta los compases, % cuenta lo que sobra.
compases.c
#include<stdio.h>
int main(void)
{
int pulsos;
scanf("%d", &pulsos);
int compases = pulsos / 4;
int sobran = pulsos % 4;
printf("%d compases y %d pulsos\n", compases, sobran);
return 0;
}
gcc -Wall -Wextra compases.c
$ echo "10" | ./a.out
2 compases y 2 pulsos
$ echo "16" | ./a.out
4 compases y 0 pulsos
$ echo "3" | ./a.out
0 compases y 3 pulsos
10 / 4 = 2 compases · 10 % 4 = 2 pulsos sueltos. Con 16, el residuo es 0.
Reto 6
Programa en CQuímica★★12 min
11.7 g de sal en 0.5 L: ¿qué tan concentrada?
Problema
En el laboratorio disuelves sal en agua y quieres su molaridad: cuántos moles de sal hay en cada litro. La masa molar te dice cuántos gramos pesa un mol.
Qué debes lograr
Lee la masa (g), la masa molar (g/mol) y los litros. Muestra la molaridad con 2 decimales.
Entregable
Programa en C
desde cero · variables con decimales, scanf y printf
Sueltas una piedra desde un puente y cuentas cuánto tarda en llegar al agua.
Qué debes lograr
Lee t (s) y luego m (kg). Usa 9.8 m/s² como gravedad. Muestra la altura de la caída y la energía cinética con la que llega, con 1 decimal.
Entregable
Programa en C
desde cero · variables con decimales, scanf y printf
caso 1 · típico
$ ./a.out
3 2
h = 44.1 m
Ec = 864.4 J
caso 2 · otra masa
$ ./a.out
1 10
h = 4.9 m
Ec = 480.2 J
caso 3 · límite: t = 0
$ ./a.out
0 5
h = 0.0 m
Ec = 0.0 J
Respuesta · Reto 7
Programa en CFísica★★12 min
Dos fórmulas, cero magia.
caida.c
#include<stdio.h>
int main(void)
{
float t, m;
scanf("%f %f", &t, &m);
float g = 9.8f;
float h = 0.5f * g * t * t;
float v = g * t;
float ec = 0.5f * m * v * v;
printf("h = %.1f m\n", h);
printf("Ec = %.1f J\n", ec);
return 0;
}
gcc -Wall -Wextra caida.c
$ echo "3 2" | ./a.out
h = 44.1 m
Ec = 864.4 J
$ echo "1 10" | ./a.out
h = 4.9 m
Ec = 480.2 J
$ echo "0 5" | ./a.out
h = 0.0 m
Ec = 0.0 J
En C, 1 / 2 vale 0: por eso 0.5f, no ½.
Reto 8
Diagrama de flujoGeografía★★10 min
¿Hemisferio norte o sur?
Problema
Un GPS recibe la latitud del lugar donde estás: positiva al norte del ecuador, negativa al sur.
Qué debes lograr
Lee la latitud (en grados). Decide si estás en el hemisferio norte, en el sur o justo en el ecuador.
Entregable
Diagrama de flujo
óvalo · paralelogramo · rectángulo · rombo
caso 1 · Querétaro
entrada:20.6salida: Hemisferio norte
caso 2 · Ushuaia
entrada:-54.8salida: Hemisferio sur
caso 3 · el ecuador
entrada:0salida: En el ecuador
Respuesta · Reto 8
Diagrama de flujoGeografía★★10 min
Dos rombos encadenados, tres finales.
Inicio
LEER latitud
¿latitud > 0?
no
¿latitud < 0?
no
En el ecuador
sí
Hemisferio norte
sí
Hemisferio sur
Fin
20.6 → Hemisferio norte · -54.8 → Hemisferio sur · 0 → En el ecuador
Verificado con un programa equivalente en C (gcc -Wall -Wextra -std=c11) y con un espejo en Python: coinciden en los 3 casos.
Reto 9
Diagrama de flujoCocina★★12 min
Receta para 4. Vienen 10.
Problema
250 g de harina alcanzan para 4 personas y la receta crece en proporción, pero llegaron 10 invitados.
Qué debes lograr
Lee cuántas personas son y calcula la harina. Si pasa de 1000 g (1000 exactos aún caben), avisa «Usa dos tazones»; si no, muestra los gramos.
Entregable
Diagrama de flujo
óvalo · paralelogramo · rectángulo · rombo
caso 1 · vienen 10
entrada:10salida: 625 g
caso 2 · se pasa
entrada:20salida: Usa dos tazones
caso 3 · receta base
entrada:4salida: 250 g
Respuesta · Reto 9
Diagrama de flujoCocina★★12 min
Un rombo, dos caminos.
Inicio
LEER personas
harina ← 250 × personas ÷ 4
¿harina > 1000?
no
harina, " g"
sí
Usa dos tazones
Fin
10 → 625 g · 20 → Usa dos tazones · 4 → 250 g
Verificado con un programa equivalente en C (gcc -Wall -Wextra -std=c11) y con un espejo en Python: coinciden en los 3 casos.
Reto 10
Programa en CDeportes★★★15 min
¿A qué ritmo corre?
Problema
Terminas una carrera y quieres saber cuánto tardaste por cada kilómetro.
Qué debes lograr
Lee km, minutos y segundos totales. Muestra el ritmo como minutos y segundos por km.
Entregable
Programa en C
desde cero · sin if ni for: solo / y %
caso 1 · 10 km
$ ./a.out
10 52 0
Ritmo: 5 min 12 s por km
caso 2 · con segundos
$ ./a.out
5 22 30
Ritmo: 4 min 30 s por km
caso 3 · < 1 min
$ ./a.out
1 0 59
Ritmo: 0 min 59 s por km
Respuesta · Reto 10
Programa en CDeportes★★★15 min
Segundos por kilómetro, y luego a min : s.
ritmo.c
#include<stdio.h>
int main(void)
{
int km, min, seg;
scanf("%d %d %d", &km, &min, &seg);
int total = min * 60 + seg;
int ritmo = total / km;
printf("Ritmo: %d min %d s por km\n", ritmo / 60, ritmo % 60);
return 0;
}
gcc -Wall -Wextra ritmo.c
$ echo "10 52 0" | ./a.out
Ritmo: 5 min 12 s por km
$ echo "5 22 30" | ./a.out
Ritmo: 4 min 30 s por km
$ echo "1 0 59" | ./a.out
Ritmo: 0 min 59 s por km
52 min = 3120 s · 3120 / 10 = 312 s por km 312 / 60 = 5 min · 312 % 60 = 12 s
Reto 11
PseudocódigoFinanzas★★★20 min
Ahorras cada mes. El banco también suma.
Problema
Depositas una cantidad fija cada mes y el banco paga interés sobre todo lo acumulado.
Qué debes lograr
Lee depósito, tasa mensual (%) y meses. Cada mes: primero depositas y luego el banco suma, sobre todo lo que ya tienes, ese porcentaje de interés. Muestra el saldo final con 2 decimales.
Entregable
Pseudocódigo
con ciclo y acumulador · desde cero
caso 1 · 3 meses
entrada:100 10 3salida: Saldo final: 364.10
caso 2 · otra tasa
entrada:500 2 6salida: Saldo final: 3217.14
caso 3 · límite: 0 meses
entrada:800 4 0salida: Saldo final: 0.00
Respuesta · Reto 11
PseudocódigoFinanzas★★★20 min
El saldo se acumula mes a mes.
LEER deposito, tasa, meses
saldo ← 0
PARA mes DESDE 1 HASTA meses HACER
saldo ← saldo + deposito
saldo ← saldo + saldo * tasa / 100
FIN PARAESCRIBIR "Saldo final: ", saldo
Verificado con un programa equivalente en C (gcc -Wall -Wextra -std=c11) y con un espejo en Python: coinciden en los 3 casos.
Verificado con un programa equivalente en C (gcc -Wall -Wextra -std=c11) y con un espejo en Python: coinciden en los 3 casos.
Reto 13
PseudocódigoLenguaje y texto★★★20 min
Cada letra, k lugares más allá.
textoABCDEFGHIJKLMNOPQRSTUVWXYZ
clave 3DEFGHIJKLMNOPQRSTUVWXYZABC
Problema
Un mensaje secreto: cada letra se corre k lugares en el abecedario.
Qué debes lograr
Lee un mensaje en MAYÚSCULAS y la clave k; tras la Z vuelves a la A. Muestra el mensaje cifrado. Ayudas: posicion(letra) va de 0 (A) a 25 (Z), letra(n) y longitud(texto).
Entregable
Pseudocódigo
con ciclo sobre las letras · desde cero
caso 1 · típico
entrada:HOLA 3salida: KROD
caso 2 · trampa: la Z
entrada:XYZ 3salida: ABC
caso 3 · clave 26
entrada:ABC 26salida: ABC
Respuesta · Reto 13
PseudocódigoLenguaje y texto★★★20 min
El MOD 26 es la vuelta al abecedario.
LEER mensaje, clave
resultado ← ""
PARA i DESDE 0 HASTA longitud(mensaje) - 1 HACER
pos ← posicion(mensaje[i])
nueva ← (pos + clave) MOD 26
resultado ← resultado + letra(nueva)
FIN PARAESCRIBIR resultado
A = 0 · B = 1 · … · Z = 25. posicion(letra) da el número; letra(n) devuelve la letra.
Verificado con un programa equivalente en C (gcc -Wall -Wextra -std=c11) y con un espejo en Python: coinciden en los 3 casos.