#include <stdio.h>
// Programa "ScapeRoom" que conté errors intencionats.
// L'objectiu de l'usuari és arreglar el codi per tal que funcioni bé.
// Conté les explicacions suficients perquè tothom ho pugui resoldre (Després de tot el codi)
int main() {
char nom[50]; // Variable per guardar el nom (cadena de carĂ cters)
char genere; // Variable per guardar el gènere introduït
int pass; // Variable per comprovar la contrasenya
// Missatge inicial de reptec
printf("=============================================\n");
printf(" 🚀 BENVINGUT AL PRIMER REPTE DE CODE URV 🚀\n");
printf("=============================================\n\n");
printf("Seràs capaç d'arreglar el codi?\n");
printf("👉 Has d'aconseguir que el programa et doni la benvinguda\n");
printf(" personalitzada a l'associaciĂł.\n\n");
// OpciĂł per demanar una pista
printf("Vols una pista? Escriu la contrasenya (o 0 per continuar): ");
scanf("%d", &pass);
// Comprovar que la contrasenya és correcta
if (pass == 335514) {
printf("\n🔑 PISTA: Revisa bé els formats de scanf, printf i les comparacions en el switch...\n\n");
} else if (pass != 0) {
printf("\n❌ Contrasenya incorrecta! Continua sense pista...\n\n");
}
// Demanem el nom de l'usuari
printf("Introdueix el teu nom: ");
scanf("%d", nom);
// Demanem el gènere
printf("Introdueix el teu gènere (M = masculĂ, F = femenĂ, N = no binari): ");
scanf(" %c", &genere);
// Mostrem un missatge de benvinguda personalitzat amb switch-case
switch (genere) {
case 'P':
printf("Benvingut a code URV, %s\n", nom);
break;
case 'O':
printf("Benvinguda a code URV, %s\n", nom);
break;
case 'X': //🔑 PISTA ERROR INTENCIONAL: hauria de ser 'N'
printf("Benvingud@ a code URV, %s\n", nom);
break;
default:
printf("Gènere no reconegut, %s\n", nom);
break;
}
return 0;
}
/*
EXPLICACIĂ“:
- printf("text", variables...);
-> Serveix per mostrar text per pantalla. El text pot incloure "formats" especials:
%s = imprimir una cadena de carĂ cters (string)
%c = imprimir un carĂ cter
%d = imprimir un enter (int)
- scanf("format", &variable);
-> Serveix per llegir dades que l'usuari introdueix pel teclat.
El "format" indica quin tipus de dada s’espera.
És important passar l'ADREÇA de la variable (amb &) per a que scanf hi pugui guardar el valor.
Exemple correcte per llegir un nom:
scanf("%s", nom); // perquè "nom" és un array de chars
Exemple correcte per llegir un nĂşmero:
scanf("%d", &edat); // perquè "edat" és un int
- switch (variable) { ... }
-> És una estructura de control que permet comprovar el valor d’una variable
i executar diferents blocs de codi segons coincidisca amb un cas concret.
Cada cas es defineix amb "case valor:" i s’acaba amb "break;".
Si cap cas coincideix, s’executa el bloc "default".
Exemple:
switch(opcio) {
case 1: printf("Has triat 1\n"); break;
case 2: printf("Has triat 2\n"); break;
default: printf("OpciĂł no vĂ lida\n"); break;
}
*/