Advertisement
Guest User

deslizamento_ec.c

a guest
Dec 13th, 2019
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.06 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdbool.h>
  3.  
  4. bool right_verification(int heights[], int position, int n) { // verifica se existe deslizamento a direita
  5.     int i = position;
  6.     for(i = position; i < n - 1; i++) {
  7.         if(heights[i + 1] >= heights[i]) return false; // existe um maior ou igual a direita
  8.     }
  9.     return true;
  10. }
  11.  
  12. bool left_verification(int heights[], int position) { // verifica se existe deslizamento a esquerda
  13.     int i;
  14.     for(i = position; i > 0; i--) {
  15.         if(heights[i - 1] >= heights[i]) return false; // existe um maior ou igual a esquerda
  16.     }
  17.     return true;
  18. }
  19.  
  20. int main() {
  21.     int n, i, left_size = 0, right_size = 0;
  22.     scanf("%d", &n);
  23.     int heights[n], left[n], right[n];
  24.  
  25.     for(i = 0; i < n; ++i) {
  26.         scanf("%d", &heights[i]);
  27.     }
  28.  
  29.     for(i = 0; i < n; ++i) {
  30.         if(i > 0 && i < n - 1) { // nao pode ser a primeira nem a ultima posicao
  31.             if(left_verification(heights, i)) { // faz a verificacao a esquerda
  32.                 left[left_size] = i; // coloca a posicao no array da esquerda
  33.                 left_size++; // aumenta o contador da esquerda
  34.             }
  35.             if(right_verification(heights, i, n)) { // faz a verificacao a direita
  36.                 right[right_size] = i; // coloca a posicao no array da direita
  37.                 right_size++; // aumenta o contador da direta
  38.             }
  39.         }
  40.     }
  41.     if(left_size > 0) { // existe um ou mais pontos que tem deslizamento a esquerda
  42.         printf("Desabamento a esquerda: ");
  43.         for(i = 0; i < left_size; ++i) {
  44.             printf("%d ", left[i]);
  45.         }
  46.         printf("\n");
  47.     }
  48.     else {
  49.         printf("Nao ocorreu nenhum desabamento a esquerda\n");
  50.     }
  51.     if(right_size > 0) { // existe um ou mais pontos que tem deslizamento a direita
  52.         printf("Desabamento a direita: ");
  53.         for(i = 0; i < right_size; ++i) {
  54.             printf("%d ", right[i]);
  55.         }
  56.         printf("\n");
  57.     }
  58.     else {
  59.         printf("Nao ocorreu nenhum desabamento a direita\n");
  60.     }
  61.    
  62.     return 0;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement