Advertisement
FoxTuGa

Alturas dos Predios

May 8th, 2011
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.18 KB | None | 0 0
  1. // Trabalho realizado por Leandro Soares.
  2. // Exercicio criado por Eng. Jorge Carvalho.
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6.  
  7. #define TRUE 1
  8.  
  9. int main()
  10. {
  11.     // Declaracao e Ini. de var's.
  12.     int npred,i, A, B, maior, qt, alturas[100], maiores[100], idx;
  13.     npred=A=B=maior=qt=0;
  14.  
  15.     // Input Quant. de Predios.
  16.     printf("Introduza o n de predios: ");
  17.     scanf("%d", &npred);
  18.     for(i=0;i < npred; i++) // Ciclo de input das alturas dos predios consuante o num de predios.
  19.     {
  20.         printf("\n Altura %d:", i+1);
  21.         scanf("%d",&alturas[i]);
  22.     }
  23.     printf("\n Intervalos: ");  // Intervalos dos numeros dos predios.
  24.     scanf("%d-%d", &A, &B);
  25.  
  26.     // Inicio  da contagem do maior predio e a respectiva entrada na array.
  27.     if( A >= 1 && A <= B && B <= 100 && A <= npred)
  28.     {
  29.         for(i=A, idx=0; i < B ; i++)    // Ciclo normal de array, mudanca apenas em B (ultimo predio).
  30.         {
  31.             if( alturas[i-1] >= maior ) // Se uma altura na array for maior ou igual ao maior numero actual, continuar.
  32.             {
  33.                 if( maior != alturas[i-1] && alturas[i-1] > maior ) // Se a altura for maior que o anterior numero maior, continuar.
  34.                 {
  35.                     // Este ciclo serve para reiniciar a array maiores[idx] quando o numero maior muda.
  36.                     for(idx=0;idx < qt;idx++)   // Ciclo normal de array, para quando chegar a quantidade de numeros maiores anteriormente existentes.
  37.                         maiores[idx] = 0;
  38.                     qt=0;   //
  39.                     idx=0;  // Reiniciar var's, pois, o numero maior foi alterado logo as contagens comecam denovo.
  40.                 }
  41.                 maior = alturas[i-1];   // O numero maior e igual a altura do predio cuja altura e maior.*
  42.                 qt++;   // Contagem da quantidade de numeros iguais (maiores).
  43.                 maiores[idx++] = i; // Anotacao dos numeros maiores.
  44.             }
  45.             // * E alturas[<i-1>], porque o indice começa em 0 e os predios em 1.
  46.         }
  47.         system("cls");  // Limpeza do ecra.
  48.         printf("Altura: %d\n Quantidade: %d\n", maior, qt); // Output do numero maior e a respectiva quantidade.
  49.         for(i=0; i < qt ; i++)  // Ciclo normal de array, acaba quando atinge a quantidade max de numeros maiores.
  50.         {
  51.             printf("\n \tPredio %d: %d",i+1 ,maiores[i]);   // Output do(s) numero(s) do(s) predio(s) cuja(s) altura(s) e(sao) a(s) maior(es).
  52.         }
  53.     }
  54.     printf("\n\n\n");
  55.     return 0;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement