quinta-feira, 29 de novembro de 2012

Convertendo uma matriz bidimensional em vetor unidimensional II



Talvez você já precisou imprimir em ordem uma Matriz Bidimensional do tipo float e
encontrou muitas dificuldades, más usando este método que aprendi
a utilizar torna se muito fácil a ordenação. Primeiro a Matriz Bidimensional é transformada em um vetor simples,
veja que ele foi declarado previamente com 24 posições. Dois laços for, sendo um para linhas e outro para colunas,
fazem a varredura em loop, e então atribuimos a mat_triz [] [], ao vetor vet[]; e incrementamos a variável h,
onde junto com o vetor receberão os valores transformados. Agora printf imprime o nosso vetor postiço do tipo float
que recebeu a matriz: mat_triz [] [];
A ordenação mesmo é pelo método QuickSort que atualmente é um dos métodos mais rápidos e eficientes dito pelos programadores
e este foi o usado para ordenação dos elementos do vetor. Essa funcao qsort();faz parte da biblioteca stdlib.h. e
Temos também a função compare do tipo int que permite comparar os valores no período de ordenação.
Veja acima a saída deste programa no cmd.

Copie, cole e compile:

#include <stdio.h>
#include<conio2.h>
#include <stdlib.h>
float vet [24];
float mat_riz [8] [3] = {{10.2, 14.8, 11.4},
          {9.5, 15.3, 8.9},
          {8.6, 14.3, 21.6},
          {9.7, 16.5, 19.2},
          {6.1, 17.4, 27.5},
          {7.7, 16.1, 3.4},
          {8.3, 17.1, 7.8},
          {7.3, 15.9, 33.8}};
int comparare(const void *a, const void *b){
    return(*(int*)a - *(int*)b);
}
int main(){
    system ("title CONVERTENDO UMA MATRIZ BIDIMENSIONAL EM VETOR UNIDIMENSIONAL");
    int i, tam = 24;
    float vet [24];
    int g = 0, h = 0, f;
    for(f = 0; f < 8; f++){
        for(g = 0; g < 3; g++){
            vet[h] = mat_riz[f][g];
            h++;
        }
    }
    textcolor(LIGHTRED);gotoxy(12,3);printf("CONVERTENDO UMA MATRIZ BIDIMENSIONAL EM VETOR UNIDIMENSIONAL");
    textcolor(LIGHTBLUE);gotoxy(25,5);printf("MATRIZ CONVERTIDA EM VETOR SIMPLES");
    textcolor(YELLOW);printf("\n\n");
    printf("\n");
    for(int h = 0; h < 24; h++){
        printf("\t\t\t\tposicao:  %i  %.1f\n", h, vet [h]); Sleep(800);// Agora temos um vetor do tipo float
    }
    Sleep(800);
    qsort(vet, tam, sizeof(int), comparare);
    system("cls");
    textcolor(LIGHTRED);gotoxy(12,3);printf("CONVERTENDO UMA MATRIZ BIDIMENSIONAL EM VETOR UNIDIMENSIONAL");
    textcolor(LIGHTGREEN);gotoxy(30,5);printf("ESTA E A MATRIZ ORIGINAL");textcolor(LIGHTBLUE);
    printf("\n");
    for(i = 0; i < 8; i++){  // Faz a leitura das linhas
        printf("\n");printf("\n");gotoxy(33,i + 7);
        for(h = 0; h < 3; h++){  // Faz a leitura das colunas
            printf(" %.1f ", mat_riz [i] [h]); // Imprime linhas e colunas
        }
    }
    textcolor(LIGHTGREEN);gotoxy(25,17);printf("IMPRIMINDO AGORA A MATRIZ ORDENADA");
    printf("\n");textcolor(YELLOW);
     for(i = 0; i < 18; i++){
         gotoxy(5,i + 19);
         for(i = 0; i < 24; i++)
             printf("  %.1f  ", vet [i]);
     }
    textcolor(LIGHTRED);gotoxy(35,23);printf("\aO ROCCO AGRADECE");
    getche();
}

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.