that_one_nigga_you_k

problema das sequencias quase resolvido

Jun 27th, 2023
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.36 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(){
  5.  
  6.     int testes; // quantidade de sequencias q vou procurar
  7.     int loop = 0;
  8.  
  9.     printf("digite a quantidade de testes: ");
  10.     scanf("%d", &testes);
  11.  
  12.     int sequencias [testes][100];
  13.     int tamanho [testes];
  14.  
  15.     while(loop<testes){
  16.  
  17.         printf("\ndigite o tamanho da sequencia %d: ", loop+1);
  18.         scanf("%d", &tamanho[loop]);
  19.  
  20.         for(int i = 0 ; i < tamanho[loop]; i++){
  21.             printf("\ndigite o valor %d do vetor %d: ", i+1 , loop+1);
  22.             scanf("%d", &sequencias[loop][i]);
  23.         }
  24.  
  25.  
  26.         loop++;
  27.     }
  28.  
  29.     loop = 0;
  30.  
  31.     printf("printando os vetores: ");
  32.  
  33.     while (loop < testes){
  34.  
  35.         printf("\nsequencia %d: ", loop+1);
  36.  
  37.         for(int i = 0 ; i < tamanho[loop] ; i++){
  38.             printf("%d, ", sequencias[loop][i]);
  39.         }
  40.  
  41.         loop++;
  42.     }
  43.    
  44.     int checagem = 0 ; //quantidade de vetores a serem analisados
  45.    
  46.     int inicio[testes];   // começo da maior sequencia
  47.     int fim[testes];     // fim da maior sequencia
  48.     int maiorcompri[testes];   // tamanho da maior sequencia
  49.  
  50.     int inicioaux[testes];  // iteração do começo da sequencia atual
  51.     int fimaux[testes];    // iteração do fim da sequencia atual
  52.     int comprimento[testes]; // tamanho da sequencia atual
  53.    
  54.     for(int j = 0 ; j < testes ; j++){
  55.         inicio[j] = 0;
  56.         fim[j] = 0;   //esse for existe apenas pra setar todos os valores dos vetores acima em 0
  57.         maiorcompri[j] = 0;
  58.         inicioaux[j] = 0;
  59.         inicioaux[j] = 0 ;  
  60.         comprimento[j] = 0;
  61.     }
  62.  
  63.     loop = 1; // pra comparar o segundo elemento com o primento, e assim em diante
  64.    
  65.     while(checagem < testes){
  66.         while(loop < tamanho[checagem]){
  67.             if(sequencias[checagem][loop] < sequencias[checagem][loop-1]){
  68.                 fimaux[checagem] = loop;
  69.                 comprimento[checagem] = fimaux[checagem]-inicioaux[checagem]+1;
  70.             }
  71.             else{ //checagem pra ver se essa é a maior sequencia até o momento
  72.                 if(comprimento[checagem] > maiorcompri[checagem]){
  73.                     inicio[checagem] = inicioaux[checagem];
  74.                     fim[checagem] = fimaux[checagem];
  75.                     maiorcompri[checagem] = comprimento[checagem];
  76.                 }
  77.                 inicioaux[checagem] = loop;
  78.                 fimaux[checagem] = loop;
  79.                 comprimento[checagem] = 1;
  80.             }
  81.         loop++;
  82.         }
  83.         if(comprimento[checagem] > maiorcompri[checagem]){
  84.             inicio[checagem] = inicioaux[checagem];
  85.             fim[checagem] = fimaux[checagem];
  86.             maiorcompri[checagem] = comprimento[checagem];
  87.     }
  88.     loop = 0;
  89.     checagem++;
  90. }
  91.  
  92.    
  93.     int showfinal = 0;
  94.     int auxtamanho = 0;
  95.    
  96.     printf("\n\n-----hora de printar as coisas----\n\n");
  97.    
  98.     for(int k = 0; k < testes ; k++){
  99.         printf("inicio %dº: %d\nfim %dº: %d\ncomprimento %dº: %d\n",k+1, inicio[k], k+1, fim[k], k+1, comprimento[k]);
  100.     }
  101.    
  102.     printf("\n\n---hora de printar mais coisas---\n\n");
  103.    
  104.     while(showfinal<testes){
  105.        
  106.        for(int i = inicio[showfinal]; i <= fim[showfinal]; i++){
  107.                 printf("%d ", sequencias[showfinal][i]);
  108.         }
  109.        
  110.         printf("\n");
  111.         showfinal++;
  112.     }
  113.    
  114.  
  115.    return(0);
  116.  
  117. }
Add Comment
Please, Sign In to add comment