Ranking - que contienen el ranking de estructura

título Descripción

    el examen de hoy sobre si bien existen en tiempo real rangoLista, pero sólo la parte superior clasifican de acuerdo al número de temas para ordenar completado, sin tener en cuenta la puntuación de cada pregunta, que no es la clasificación final. Dada la admisión, se escribe un programa para encontrar la puntuación final de los candidatos y su rendimiento de impresión en orden descendente.

entrada

    La entrada contiene varias pruebas prueba de campo de información. Examen primera línea de información por campo da el número de candidatos N (0 <n <1000) , número de exámenes M (0 <m <= 10 ), la línea de corte (número entero positivo) G; la segunda línea se da sorting a la primera pregunta valor positivo número entero de m cuestión; las N filas, cada fila se le da un número de ticket de candidatos (la longitud de cadena no exceda de 20), el número total m de resolución de tema, título, y número de preguntas que m (número de sujetos de 1 a M).     Cuando el número de candidatos lee como 0, el extremo de entrada de no el examen de ser procesada.  

exportación

    Para cada prueba, el número de candidatos en la primera fila de la primera línea de la salida fraccional de no menos de n, entonces n fila por la puntuación en descendente de salida sobre el número candidato línea de rayado candidatos, separadas por un espacio entre ellos. Si la misma puntuación más de los candidatos, pulse su producción candidato número ascendente

entrada de la muestra

4 5 25 
10 10 12 13 15 
CS004 3 5 1 3 
CS003 5 2 4 1 3 5 
CS002 2 1 2 
CS001 3 2 3 5 
1 2 40 
10 30 
CS001 1 2 
2 3 20 
10 10 10 
CS000000000000000001 0 
CS000000000000000002 2 1 2 
0

Ejemplo de salida

3 
CS003 60 
CS001 37 
CS004 37 
0 
1 
CS000000000000000002 20

1 #include <stdio.h>
 2 #include < malloc .h>
 3 #include <algoritmo>
 4 #include < string .h>
 5  usando  espacio de nombres std;
6  
7 typedef struct Stu {
 8      Char num_P [ 21 ];
9      int tol_slv;
10      int flag_slv [ 12 ];
11      int getScore;
12  } Stu;
13  bool cmp (STU s1, s2 Stu) {
 14      int t =strcmp (s1.num_P, s2.num_P);
 15      IF (s1.getscore == s2.getscore) volver T < 0 ; // regreso T <0 que significa que el lado ascendente Hui comparación de cadena 
16      el otro  de retorno s1.getscore > s2.getscore;
 . 17  }
 18 es  int main () {
 19.      int num_P;
 20 es      el tiempo (Scanf ( " % D " , y num_P) && num_P> 0 && num_P < 1,000 ) {
 21 se          int num_Q, num_G;
 22 es          int Pass = 0 ; / / número récord de personas mayores de la línea 
23         Scanf ( " % D% D " , y num_Q, y num_G);
 24          int * Q_ary = ( int *) el malloc (num_Q * el sizeof ( int ));
 25          para ( int I = 0 ; I <num_Q; i ++) { / / leer cada puntuación de pregunta 
26 es              Scanf ( " % D " , y Q_ary [I + 1. ]); // con flag_slv [] align 
27          }
 28          STU * Student = (STU *) el malloc ( el sizeof (STU) * num_P);
 29         para ( int I = 0 ; I <num_P; i ++) { // para cada datos de los estudiantes de inicialización 
30              Scanf ( " % S% D " , Student [I] .num_P, & Student [I] .tol_slv); // Ciencia No. y el número total de preguntas para hacer 
31 es              para ( int J = 0 ; J <Student [I] .tol_slv; J ++ ) {
 32                  int POS;
 33 es                  Scanf ( " % D " , y POS);
 34 es                  Student [I] .flag_slv [POS] = 1. ; // editar posición para hacer que el título 
35              }
 36          }
37 [          para ( int I = 0 ; I <num_P; i ++) { // cada poligonal 
38 es                 Student [I] .getscore = 0 ; // initialize 
39              para ( int J = 0 ; J <num_Q; J ++) { // cada pregunta a cheque hecho todavía, la puntuación acumulada 
40                  IF (Student [I] .flag_slv [J + 1. ]) {
 41 es                      Student [I] .getscore + = Q_ary [J + 1. ];
 42 es                  }
 43 es  
44 es              }
 45              IF (Student [I ] .getscore> = num_G) Pass ++ ;
 46 es 
47          }
 48          Si (pasa == 0 ) printf ( " 0 \ n " );
49          otra cosa {
 50              printf ( " % d \ n " , pase);
51              tipo (estudiante, estudiante + num_P, cmp);
52              para ( int i = 0 ; i <num_P; i ++ ) {
 53                  si (estudiante [i] .getscore> = num_G) {
 54                      printf ( " % s% d \ n " , estudiante [i] .num_P, estudiante [ i] .getscore);
55                  }
56              }
 57  
58          }
 59  
60  
61      }
 62  de retorno  0 ;
63 }

 

Supongo que te gusta

Origin www.cnblogs.com/debug-the-heart/p/12486957.html
Recomendado
Clasificación