Programación en C / C ++ - Semana 8 ⑥ Diseño del programa: Sistema de consulta de puntuación

Enlace de tema

Descripción del Título

El profesor de matemáticas Xiaoy quiere escribir un sistema de consulta de puntuación, que contiene las siguientes instrucciones:

  1. inserte [nombre] [puntaje], inserte un mensaje en el sistema, indicando que el puntaje de matemáticas del estudiante cuyo nombre es nombre es puntaje.
  2. buscar [nombre] significa encontrar la puntuación en matemáticas del estudiante cuyo nombre es nombre.
    Tenga en cuenta que algunos estudiantes pueden elegir cursos varias veces para obtener puntos y simplemente dar la puntuación máxima cuando preguntan. El nombre del alumno está compuesto por letras minúsculas. La calificación es un número entero de 0… 100.

El profesor te encontró y quería que lo ayudaras a completar este sistema.

Formato de
entrada Ingrese varias líneas, cada línea tiene la forma de insertar [nombre] [puntaje] o buscar [nombre], o una línea de final significa el final de la entrada. El número de líneas de entrada no es más de 1000 y la longitud del nombre de cada estudiante no es más de 20 caracteres.

Formato de salida
Para cada consulta, dé salida a la puntuación más alta del estudiante consultado Si el estudiante no existe en el sistema, salida −1.

Entrada de muestra

insert zhangsan 90
insert lisi 78
insert xiaoming 86
find xiaoming
find jack
end

Salida de muestra

86
-1

Ideas

Use la estructura para guardar la información del estudiante, compare si la cadena es "insertar" o "buscar" para decidir si insertar o consultar.

Código C ++:

#include<bits/stdc++.h>
using namespace std;
typedef struct Node
{
    
    
    char name[20];
    int score;
    struct Node *next;
}Node, *List;
int Init_L(List &L)
{
    
    
    L = (List)malloc(sizeof(Node));
    if(!L)
        return 0;
    L -> next = NULL;
    return 0;
}
bool complare(int a,int b)
{
    
    
    return a > b;
}
int main()
{
    
    
    List L;
    Init_L(L);
    string operate;
    string name;
    List r, p;   
    r = L;      
    while(cin >> operate)
	{
    
    
        if(operate == "end")
            break;
        else if(operate == "insert")
		{
    
    
            char nam[20];
            int sco;
            p = (List)malloc(sizeof(Node));
            cin >> nam >> sco;
            strcpy(p -> name ,nam);
            p -> score = sco;
            r -> next = p;   
            r = p;    
            r -> next = NULL;
        }
        else if(operate == "find")
		{
    
    
            cin >> name;
            List x;    
            x = L -> next;
            int sign = 0, array[10] = {
    
    0}, i = 0, max = 0;
            while(x)
			{
    
    
                if(name == x -> name)
				{
    
    
                    array[i] = x -> score;
                    if(max < array[i]) max = array[i];
                    i++;
                    sign = 1;
                }
                x = x -> next;
            }
            if(sign == 1) cout << max << endl;
            if(sign == 0) cout << "-1" << endl;
        }
    }
    return 0;
}

Supongo que te gusta

Origin blog.csdn.net/qq_44826711/article/details/113079946
Recomendado
Clasificación