Hello, OnlineGDB Q&A section lets you put your programming query to fellow community users. Asking a solution for whole assignment is strictly not allowed. You may ask for help where you are stuck. Try to add as much information as possible so that fellow users can know about your problem statement easily.

Fila do recreio (linguagem C estruturada)

+7 votes
asked Jul 8, 2021 by paulo magalhaes (1,480 points)

Na escola onde você estuda, a hora do recreio é a mais aguardada pela grande maioria dos alunos. Não só porque as vezes as aulas são cansativas, mas sim porque a merenda servida é muito boa, preparada por um chefe italiano muito caprichoso.

Quando bate o sinal para a hora do recreio, todos os alunos saem correndo da sua sala para chegar o mais cedo possível na cantina, tanta é a vontade de comer. Um de seus professores notou, porém, que havia ali uma oportunidade.

Utilizando um sistema de recompensa, seu professor de matemática disse que a ordem da fila para se servir será dada não pela ordem de chegada, mas sim pela soma das notas obtidas em sala de aula. Assim, aqueles com maior nota poderão se servir antes daqueles que tem menor nota.

Sua tarefa é simples: dada a ordem de chegada dos alunos na cantina, e as suas respectivas notas na matéria de matemática, reordene a fila de acordo com as notas de matemática, e diga quantos alunos não precisaram trocar de lugar nessa reordenação.

Entrada

A primeira linha contém um inteiro N, indicando o número de casos de teste a seguir.

Cada caso de teste inicia com um inteiro M (1 ≤ M ≤ 1000), indicando o número de alunos. Em seguida haverá M inteiros distintos Pi (1 ≤ Pi ≤ 1000), onde o i-ésimo inteiro indica a nota do i-ésimo aluno.

Os inteiros acima são dados em ordem de chegada, ou seja, o primeiro inteiro diz respeito ao primeiro aluno a chegar na fila, o segundo inteiro diz respeito ao segundo aluno, e assim sucessivamente.

Saída

Para cada caso de teste imprima uma linha, contendo um inteiro, indicando o número de alunos que não precisaram trocar de lugar mesmo após a fila ser reordenada.

Exemplo de EntradaExemplo de Saída

3
3
100 80 90
4
100 120 30 50
4
100 90 30 25

1
0
4

1 Answer

0 votes
answered Aug 29, 2022 by Aakash Reddy (180 points)
É muito simples, se você quer o aluno que obteve as notas mais altas primeiro, você pode escrever um código usando a lógica de ordem decrescente... Vou te dar um só para você usar como auxílio.
#include <stdio.h>
 
void main ()
{
 //variable declaration
 int number[30];
 int i, j, a, n;

 //asking user to enter size of array 
 printf("Enter the value of N\n");
 scanf("%d", &n); //reading array size
 
 //asking user to enter array elements
 printf("Enter the numbers \n"); 
 for (i = 0; i < n; ++i)
  scanf("%d", &number[i]); //reading array elements

 /* Logic for sorting and checking */

 for (i = 0; i < n; ++i)
 {
   for (j = i + 1; j < n; ++j)
   {
    if (number[i] < number[j])
    {
     a = number[i];
     number[i] = number[j];
     number[j] = a;
   }
  }
 }
 
 printf("The numbers arranged in descending order are given below\n");
 for (i = 0; i < n; ++i)
 {
   printf("%d\n", number[i]); //printing numbers in descending order
 }
}
Welcome to OnlineGDB Q&A, where you can ask questions related to programming and OnlineGDB IDE and and receive answers from other members of the community.
...