Clasificación de números C ++

             1012 clasificación numérica (20 puntos)

 

 

 

 

 

 

 

Formato de entrada:

Cada entrada contiene 1 caso de prueba. Cada caso de prueba primero da un entero positivo N que no excede 1000 , y luego da N enteros positivos  que  no exceden 1000 para ser clasificados. Los números están separados por espacios.

Formato de salida:

Para un determinado  números enteros N positivos, se calcula por el sujeto de la solicitud  A . 1 ~ A . 5 y el orden de salida en una fila. Los números están separados por espacios, pero no se permiten espacios adicionales al final de la línea.

Si uno de los números no existe, se emite en la posición correspondiente  N.

Ejemplo de entrada 1:

13 1 2 3 4 5 6 7 8 9 10 20 16 18
 

Salida de muestra 1:

30 11 2 9.7 9
 

Ejemplo de entrada 2:

8 1 2 4 5 6 7 9 16
 

Salida de muestra 2:

N 11 2 N 9

 

Idea de algoritmo:

Como solo hay una salida de 5 dígitos, no hay necesidad de una matriz, y puede procesarse directamente al recibir datos. Hice otro viejo problema de no leer la pregunta. Tomé los primeros 13 como un número y el promedio fue diferente. Me tomó mucho tiempo descubrir qué salió mal.

Una cosa a tener en cuenta es: cuando el resto = 1, el valor inicial establecido al principio es 0, pero la suma de entrelazado puede ser igual a 0, por lo que configuro un valor de tipo bool, si no hay número del resto = 1 , El valor de la bandera no cambiará.

También hay dos funciones:

1.cout << fijo << setprecision (1) << average4 << ""; La salida es precisa con algunos decimales #include <iomanip>

2.sum2 + = pow (-1.0, time2) * num; -1 a la potencia de n #include <cmath>

El código completo es el siguiente:

1 #include <iostream>
 2 #include <iomanip>
 3 #include <cmath>
 4  
5  usando el  espacio de nombres std;
6  int main ()
 7  {
 8      // 输入 个数
9      int recuentos, tiempo = 0 ;
10      cin >> cuentas;
11  
12      int num;
13      int sum1 = 0 ; // A1 
14  
15      int time2 = 1 , sum2 = 0 ; // A2
16      BOOL FLAG2 = false ; // determina si el número es un número de más de 1 
. 17  
18 es      int count3 = 0 ; // A3 
. 19  
20 es      doble count4 = 0 , SUM4 = 0 , Average4 = 0 ; // A4 
21 es  
22 se      int MAX_NUM = 0 ; // A5 
23      while (tiempo <cuenta && cin >> num)
 24      {
 25          int resto = num% 5 ;
 26          interruptor (resto)
27          {
 28          caso  0 :
 29              if (num% 2 == 0 ) sum1 + = num;
 30              break ;
 31          caso  1 :
 32              time2 ++ ;
 33              sum2 + = pow ( -1.0 , time2) * num;
 34              flag2 = verdadero ; / / Si el valor de flag2 cambia, significa que hay un valor con un resto de 
35              break ;
 36          case  2 :
 37              count3 ++ ;
 38              break;
39          caso  3 :
 40              sum4 + = num;
41              cuenta4 ++ ;
42              promedio4 = suma4 / cuenta4;
43              descanso ;
44          caso  4 :
 45              max_num = num> max_num? num: max_num;
46              descanso ;
47          }
 48          veces ++ ;
49      }
 50  
51      if (sum1 == 0 ) cout << " N " ;
52      máscout << sum1 << "  " ;
53  
54      if (! Flag2) cout << " N " ;
55      más cout << sum2 << "  " ;
56  
57      if (cuenta3 == 0 ) cout << " N " ;
58      más cout << cuenta3 << "  " ;
59  
60      if (promedio4 == 0 ) cout << " N " ;
61      más cout <<1 ) << promedio4 << "  " ;
62  
63      if (max_num == 0 ) cout << " N " ;
64      más cout << max_num;
65  
66  
67  
68      retorno  0 ;
69 }

 

Supongo que te gusta

Origin www.cnblogs.com/apprendre-10-28/p/12748981.html
Recomendado
Clasificación