Jump to content

Dúvidas recorrentes em "matriz"


the kawawaka
 Share

Recommended Posts

Meu ultimo post foi foi uma questão que até hoje.. não resolvi..LOL

(ok...pra alguns devem ser fácil...)

Mas, dai percebi que tinha que começar de novo e resolver questões mais fáceis...

Passei essa semana (sempre que tinha tempo) lendo a teoria.. e tals..

Dai resolvi essas daqui... vejam o que acham...

Me digam no que melhorar.. ou o que ainda está errado... ou se está muito ruim..

PS: não sei ainda ponteiros, nem strings.

tell me something...

5. Escreva um programa que calcule o produto de uma matriz A5x6 com uma matriz B6x5, armazene o

resultado em uma matriz C. Exiba o resultado na saída.

6. Elaborar um programa que leia uma matriz A de dimensão 5 x 7 de inteiros e verifique qual é seu

maior elemento e imprima-o juntamente com sua posição na matriz (linha e coluna).

3.Escreva um programa que leia uma matriz A de dimensão N x N (N<10) de valores reais, calcule e

imprima a soma dos elementos da diagonal secundária

======================

5.

======================

#include<stdio.h>
#include<stdlib.h>
#define aux1 2
#define aux2 2
#define aux3 2
int main()
{
int matrizA[aux1][aux2]={0,0,0,0};
int matrizB[aux2][aux3]={0,0,0,0};
int matrizC[aux1][aux3]={0,0,0,0};
int i=0;
int j=0;
int k=0;
printf("Digite somente numeros inteiros\n");
do{
for(i=0; i<aux1; i++){
for(j=0; j<aux2; j++){
printf("MATRIZ A: [%d][%d]=",i+1,j+1);
scanf("%d", &matrizA[i][j]);
if(matrizA[i][j]<0)
{
printf("Valor invalido! Digite somente numeros inteiros!\n");
matrizA[i][j]=0;//para armazenar no posição correta
j--;//como o j volta+1, aqui ele volta a ser o anterior
        }
}
}
}while(matrizA[i][j]<0);
printf("\n");
do{
       for(i=0;i<aux2;i++){
           for(j=0;j<aux3;j++){
                printf("MATRIZ B: [%d][%d]=",i+1,j+1);
                 scanf("%d", &matrizB[i][j]);
                 if(matrizB[i][j]<0)
                {
                    printf("Valor invalido! Digite somente numeros inteiros!\n");
                    matrizB[i][j]=0;//para armazenar no posição correta
                  j--;//como o j volta+1, aqui ele volta a ser o anterior
                  }
            }
      }
  }while(matrizB[i][j]<0);
for(i=0; i<aux1; i++){
     for(j=0; j<aux3; j++){
         matrizC[i][j]=0;
         for(k=0; k<aux2; k++){
                 matrizC[i][j]+=matrizA[i][k]*matrizB[k][j];
          }
    }
 }
printf("MATRIZ A: \n");
 for(i=0; i<aux1; i++){
       for(j=0; j<aux2; j++){
          printf("%d ",matrizA[i][j]);
      }
      printf("\n");
 }
printf("MATRIZ B: \n");
for(i=0; i<aux2; i++){
       for(j=0; j<aux3; j++){
           printf("%d ",matrizB[i][j]);
     }
     printf("\n");
}
 printf("MATRIZ C: \n");
 for(i=0; i<aux1; i++){
       for(j=0; j<aux3; j++){
            printf("%d ", matrizC[i][j]);
  }
   printf("\n");
}
system("pause");
}
Edited by pmg
Falta LP
Link to comment
Share on other sites

====================

6

======================

#include<stdio.h>
#include<stdlib.h>
#define LINHA 2
#define COLUNA 2
int main()
{
   int matrizA[LINHA][COLUNA]={0,0,0,0};
   int maior=0;
   int menor=0;
   int i=0;
   int j=0;
   int novaL[1]={0};
   int novaC[1]={0};

   printf("Digite somente valores inteiros\n");
   //pedindo os elementos da matriz A

 do{
     for(i=0; i<LINHA; i++){
        for(j=0; j<COLUNA; j++){
             printf("MATRIZ A : [%d][%d]= ", i+1, j+1);
             scanf("%d", &matrizA[i][j]);

            if(matrizA[i][j]<0)
             {
                  printf("VALOR INVALIDO! DIGITE VALORES INTEIROS!\n");
                       matrizA[i][j]=0;
                       j--;
              }
             else
         {
            if(matrizA[i][j]>maior)
              {
                 maior=matrizA[i][j];
                 novaL[0]=i;
                 novaC[0]=j;

              }
            if(matrizA[i][j]==maior)
           {
                menor=matrizA[i][j];
                novaL[0]=i;
                novaC[0]=j;
            }
         if(menor>maior)
         {
            maior=menor;
             novaL[0]=i;
             novaC[0]=j;
          }
       }
     }

 }  
}while(matrizA[i][j]<0);   

  printf("POSICAO E MAIOR ELEMENTO [%d][%d]= %d\n\n", novaL[0]+1, novaC[0]+1, maior);
  system("pause");
}

==========================

03

============================

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

int main()
{
  float matrizA[10][10]={0,0,0,0};
  int novaL[1]={0};
  int novaC[1]={0};
  float somamatriz=0;
  int i=0;
  int j=0;
   int linha=0;


  printf("Digite somente valores inteiros\n");
  //pedindo os elementos da matriz A
  do{
          printf("Digite o valor de N (da dimencao da matriz): ");
          scanf("%d", &linha);

          if(linha>10 || linha<=0)
          {
                    printf("DIGITE VALORES INTEIROS MENORES QUE 10\n");
                    linha=0;
          }
        }while(linha>10 || linha<=0);

        printf("Digite o elemento da : \n");
          for(i=0; i<linha; i++){
                    for(j=0; j<linha; j++){
                              printf("MATRIZ : [%d][%d]= ", i+1, j+1);
                              scanf("%f", &matrizA[i][j]);
                              novaL[0]=i;
                                novaC[0]=j;
                                if(novaL[0]!=novaC[0])
                                   {
                                      somamatriz=somamatriz+matrizA[i][j];  
                                   }
                             }
                  }  


      printf("SOMA DOS ELEMENTOS DA DIAGONAL SECUNDARIA = %.2f\n", somamatriz);


    system("pause");
}
Edited by pmg
Falta LP
Link to comment
Share on other sites

05 -

se tens código repetido/semelhante é uma boa opção criar uma função para isso

nem consegui ler bem o código, mas a quantidade de ciclos que tens de certeza que tens algum gato

06 -

novamente começas com um do {} while que não faz sentido

nem faço ideia o que anda para lá o menor a fazer, assim o que fazem com ele ...

03 -

não estas a fazer a soma dos elementos da diagonal secundária

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

05 -

se tens código repetido/semelhante é uma boa opção criar uma função para isso

nem consegui ler bem o código, mas a quantidade de ciclos que tens de certeza que tens algum gato

meu professor não ensinou função, nem strings e nem ponteiros ainda...mas quando eu chegar nessa parte eu vou lembrar do que você me falou sobre usar funções para otimizar um código

06 -

novamente começas com um do {} while que não faz sentido

nem faço ideia o que anda para lá o menor a fazer, assim o que fazem com ele ...

minha intenção quando eu coloquei o do while, foi que ele pedisse primeiro cada elemento da matriz e se fosse negativo, ele avisasse o erro ao usuário com uma mensagem e pedisse ao usuário para digitar novamente, guardando o elemento na matriz, e na posição certa..

mas ja que está errado, vou estudar mais e deixar isso com menos cara de "gato" e ver o que estou fazendo de errado ok ? kk,

obrigada pela ajuda : )

Link to comment
Share on other sites

meu professor não ensinou função, nem strings e nem ponteiros ainda...mas quando eu chegar nessa parte eu vou lembrar do que você me falou sobre usar funções para otimizar um código

Não ensinou funções ainda? Simples:

// a função:
int soma(int a, b) {
  return a+b;
}

//como chamar a função:
variavel = soma(1,2);

Isto permite-te concentrar em funções certos processos que terás de utilizar várias vezes, poupando trabalho e linhas de código, e evitando código-de-olhos-em-bico, como eu lhe chamo.

Knowledge is free!

Link to comment
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
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.