Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

118
Vistas
Intentando dónde colocar mi declaración de error dentro de mi declaración de caso

Estoy tratando de escribir una declaración de caso en C. Actualmente funciona completamente, excepto que no estoy seguro de dónde colocar mi declaración de error. Si la camiseta seleccionada no está dentro de la matriz guardada, debe enviarla al usuario con un printf como "Jugador no en la lista".

Cuando intento colocarlo antes de mi bucle for, reconoce que el elemento no está en la matriz pero no genera la declaración de error. Si coloco el error dentro, se repetirá para ver cuántos jugadores hay y dirá que "Jugador no está en la lista". Actualmente, a continuación, está mi caso de trabajo que elimina y agrega un nuevo jugador en la lista.

EDITAR: El siguiente código es la revisión basada en los comentarios y he agregado en la declaración de error. Ojalá se vea mejor. Lo he probado y es completamente funcional. Sin embargo, aún veo que la declaración de error reiterará cuántos hay en la matriz jerseyNumber.

 //case r allows for a player to be replaced case 'r': printf("Enter a jersey number:\n"); int replace; scanf("%d", &replace); for (int i = 0; i < numPlayers; ++i) { //if the user input matches a jersey in the array the user will input a new jersey number and rating if (replace == jerseyNumber[i]) { printf("Enter a new jersey number:\n"); scanf("%d", &jerseyNumber[i]); printf("Enter a rating for the player:\n"); scanf("%d", &playerRating[i]); } //else the error statement will tell the user that the player is not in the array else { printf("Player not in roster\n"); } }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

En mi opinión, el enfoque más sencillo aquí es usar una bandera con su ciclo for . Se ha recomendado una tabla hash en los comentarios, creo que, o cualquier otra estructura de datos "mejor", es una exageración, ya que tendría que implementarla usted mismo (si usa C++, claro, use std::map ). Si bien ciertamente es más eficiente, incluso un equipo con una lista grande como la del fútbol solo tendrá entre 50 y 60 jugadores. A menos que necesite una velocidad extrema, un bucle for será suficiente. Tratar con miles de registros diferentes me haría cambiar de opinión.

 #include <stdbool.h> ... case 'r': bool playerFound = false; printf("Enter a jersey number:\n"); int replace; // you should check the return value of all your scanf calls, but // omitting that here for clarity scanf("%d", &replace); // as mentioned in the comments, this should be replace for (int i = 0; i < numPlayers; ++i) { if (replace == jerseyNumber[i]) { printf("Enter a new jersey number:\n"); scanf("%d", &jerseyNumber[i]); printf("Enter a rating for the player:\n"); scanf("%d", &playerRating[i]); playerFound = true; break; // jersey numbers are unique for each player, // so this is the one and only match, we're done searching } } // check if the player was found here after the loop if (playerFound == false) { // print your error message here puts("Player not in roster."); } break;
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda