Jump to content
paulopoxoreo1234@gmail.com

Como fazer a matriz transposta

Recommended Posts

Fiz  a multiplicação da 2 matrizes mas não consigo fazer a transposta dela. Peço ajuda para solucionar este problema.

#include <stdio.h>
#include <stdlib.h>

#define T_BUFFER 512

int main(void)
{
    int *numeros, q_linhas = 0, q_colunas = 0, linhas, colunas;
    char buffer[T_BUFFER];
    /* Pega a quantidade de linhas da matriz */
    do {
        printf("Digite a quantidade de linhas da matriz\n");
        if (fgets(buffer, T_BUFFER, stdin) != NULL) {
            if (buffer[0] != '\n') {
                if (sscanf(buffer, "%i", &q_linhas) != 1) {
                    printf("Digite um numero\n");
                }
            } else {
                printf("Digite uma entrada valida!\n");
            }
        }
    } while (q_linhas <= 0);

    /* Pega a quantidade de colunas da matriz */
    do {
        printf("Digite a quantidade de colunas da matriz\n");
        if (fgets(buffer, T_BUFFER, stdin) != NULL) {
            if (buffer[0] != '\n') {
                if (sscanf(buffer, "%i", &q_colunas) != 1) {
                    printf("Digite um numero\n");
                }
            } else {
                printf("Digite uma entrada valida!\n");
            }
        }
    } while (q_colunas <= 0);

    /* Reserva memoria para a matriz */
    numeros = malloc(sizeof(*numeros)*q_linhas*q_colunas);
    if (numeros == NULL) {
        perror("Erro ao reservar memoria!");
        exit(EXIT_FAILURE);
    }

    /* Lê a matriz do úsuario */
    for (linhas = 0; linhas < q_linhas; linhas++) {
        for (colunas = 0; colunas < q_colunas; colunas++) {
            int pega_novamente = 1;
            /* Pega um numero */
            do {
                printf("[%i][%i]\n", linhas, colunas);
                if (fgets(buffer, T_BUFFER, stdin) != NULL) {
                    if (buffer[0] != '\n') {
                        if (sscanf(buffer, "%i", &numeros[(linhas*q_colunas)+colunas]) == 1) {
                            pega_novamente = 0;     /* Sai do "do {} while()" */
                        }
                    } else {
                        printf("Digite uma entrada valida!\n");
                    }
                }
            } while (pega_novamente);
        }
    }

    /* Mostra a matriz */
    printf("Matriz digitada\n");
    for (linhas = 0; linhas < q_linhas; linhas++) {
        for (colunas = 0; colunas < q_colunas; colunas++) {
            printf("%i,", numeros[(linhas*q_colunas)+colunas]);
        }
        putchar('\n');
    }

    getchar();      /* Espera o enter */
  	/* Libera a memoria */
    free(numeros);
    return(0);
}

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By dayvidham
      Olá, atualmente faço parte de uma comunidade brasileira que está imersa em um projeto DeFi de um Token que roda na rede BSC.
      Temos um Token chamado SkyRocketSR criado a 31 dias e ja somos mais de 5000 pessoas interessadas no seu sucesso.
      Estamos em busca de programadores, designers e todos que poderem somar à comunidade de alguma forma.
      Alguém gostaria de saber mais do projeto e quem sabe compor a equipe da linha de frente já que somos uma comunidade?
      Obrigado e contamos com você.

      https://skyrocketsr.com/en/

      Aqui há mais sobre nós!
    • By dayvidham
      Olá, atualmente faço parte de uma comunidade brasileira que está imersa em um projeto DeFi de um Token que roda na rede BSC.
      Temos um Token chamado SkyRocketSR criado a 31 dias e ja somos mais de 5000 pessoas interessadas no seu sucesso.
      Estamos em busca de programadores, designers e todos que poderem somar à comunidade de alguma forma.
      Alguém gostaria de saber mais do projeto e quem sabe compor a equipe da linha de frente já que somos uma comunidade?
      Obrigado e contamos com você.

      https://skyrocketsr.com/en/

      Aqui há mais sobre nós!
    • By luigiferrari
      Gostaria de fazer um programa onde o usuário digitaria o tamanho de conjuntos e quantas linhas possui os conjuntos, exemplo:

      Seguindo, o programa perguntaria qual conjunto o usuário quer adicionar o valor, e então o valor seria adicionado nas linhas, e qnd cheio, seria o FIFO.
      Mas minhas principais duvidas seriam:
      1- Como eu crio um vetor dentro de outro (não necessariamente precisa ser um vetor, aceito sugestões de como fazer isso)
      2- Caso eu faça com o vetor, teria que gerar x vetores, por exemplo, caso o usuário colocasse em "qts conjuntos: 5" teria que criar 5 conjuntos(vetores) diferentes. Como faço isso?!
      Lembrando aceito qualquer sugestão, estou fazendo em C# mas tbm entendo de Python e PHP caso tenha alguma ideia.
    • By dudepaiva
      Boa tarde!
      Estou buscando os dados em uma planilha e adicionando em uma lista. Antes de adicionar em uma lista, utilizo o GROUPBY para agrupar a informação desejada, até aqui tudo bem, porém quando tento lançar essa informação num COMBOBOX, ocorre erro de parametro.
      A primeira linha em negrito, é onde busco e agrupo as informações. A segunda é onde ocorre o erro.
       
      Segue código:
       
      Quero trazer os dois campos abaixo.
       
      public class ProdutoDTO
          {
              private string codigo;
              private string nomeTributario;
              private string linhaReduzida;
              private string linha;
              private string marcaReduzida;
              private string marca;
              private string gramatura;
              public ProdutoDTO()
              {
              }
              public ProdutoDTO(string codigo, string nomeTributario, string linhaReduzida, string linha, string marcaReduzida, string marca, string gramatura)
              {
                  this.Codigo = codigo;
                  this.nomeTributario = nomeTributario;
                  this.linhaReduzida = linhaReduzida;
                  this.linha = linha;
                  this.marcaReduzida = marcaReduzida;
                  this.marca = marca;
                  this.gramatura = gramatura;
              }
              public string Codigo { get => codigo; set => codigo = value; }
              public string NomeTributario { get => nomeTributario; set => nomeTributario = value; }
              public string LinhaReduzida { get => linhaReduzida; set => linhaReduzida = value; }
              public string Linha { get => linha; set => linha = value; }
              public string MarcaReduzida { get => marcaReduzida; set => marcaReduzida = value; }
              public string Marca { get => marca; set => marca = value; }
              public string Gramatura { get => gramatura; set => gramatura = value; }
          }
       
      A primeira linha em negrito, é onde busco e agrupo as informações. A segunda é onde ocorre o erro.
       
      private void AbrirArquivoExcel()
              {
                  //Configura OpenFileDialog.
                  OpenFileDialog openFD = new OpenFileDialog();
                  openFD.Title = "Localizar arquivo";
                  openFD.InitialDirectory = @"C:\Documentos\Planilhas";
                  openFD.Filter = "Arquivo Excel (*.xlsx) | *.xlsx";
                  openFD.CheckFileExists = true;
                  openFD.CheckPathExists = true;
                  openFD.ShowReadOnly = true;
                  openFD.RestoreDirectory = true;
                  openFD.ReadOnlyChecked = true;
                  if (openFD.ShowDialog() == DialogResult.OK)
                  {
                      try
                      {
                          txtOpenFD.Text = openFD.FileName;
                          var produtos = produtoBLL.Buscar(openFD.FileName, "Dados").GroupBy(x => x.Linha).ToList();
                          cbLinha.DataSource = produtos;
                          cbLinha.ValueMember = "Codigo";
                          cbLinha.DisplayMember = "Linha";
                          cbLinha.SelectedIndex = -1;
                          cbLinha.Text = "Selecione";
                          //CarregarComboBox(cbLinha, produtos, "Linha", "LinhaReduzida");
                      }
                      catch (Exception)
                      {
                          throw;
                      }
                  }
              }
       
      Desde já agradeço a ajuda! Já quebrei a cabeça!

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.