• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Hipnoted

[C] Operações com vectores/matrizes/escalares

7 mensagens neste tópico

Neste tópico vou pôr pelo menos o código de multiplicar :

- um número por um vector

- um número por uma matriz

- um vector por um vector

- um vector por uma matriz

- uma matriz por uma matriz

Estas são operações úteis principalmente para quem tem, teve ou vai ter álgebra na faculdade. Ou então para ficar a saber como se fazem estas operações.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

NÚMERO X VECTOR = VECTOR

Nesta operação não há nenhuma restrição. Basta indicar o tamanho do vector, inserir os elementos que estão no vector e por fim inserir o número.

#include <stdio.h>

main()
{
int vec[100];
int tam,b,num;
printf("Introduza o tamanho do vector: ");
scanf("%d",&tam);
printf("\n\nIntroduza os valores do vector: (fazer ENTER entre cada valor introduzido)\n");
for(b=0;b<=tam-1;b++)
{
    scanf("%d",&vec[b]);
}
printf("\n\nIntoduza o numero a multiplicar pelo vector: ");
scanf("%d",&num);
printf("\n\nO resultado e:\n\n");
for(b=0;b<=tam-1;b++)
{
    vec[b]=vec[b]*num;
    printf("%d\n",vec[b]);
}
puts("\n");
system("PAUSE");
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

VECTOR X VECTOR = NUMERO

Nesta operação o tamanho dos vectores tem de ser idêntco. Basta indicar os tamanhos dos vectores e inserir os elementos que estão nos vectores.

#include <stdio.h>

main()
{
int vec1[100];
int vec2[100];
int tam1,tam2,b,res;
printf("Introduza o tamanho do vector 1: ");
scanf("%d",&tam1);
printf("Introduza o tamanho do vector 2: ");
scanf("%d",&tam2);
if(tam1 == tam2)
{
    printf("Introduza os valores do vector 1: (fazer ENTER entre cada valor introduzido)\n");
    for(b=0;b<=tam1-1;b++)
    {
        scanf("%d",&vec1[b]);
    }
    printf("Introduza os valores do vector 2: (fazer ENTER entre cada valor introduzido)\n");
    for(b=0;b<=tam2-1;b++)
    {
        scanf("%d",&vec2[b]);
    }
    res = 0;
    printf("O resultado e : \n");
    for(b=0;b<=tam1-1;b++)
    {
        res = vec1[b] * vec2[b] + res;
    }
    printf("%d\n",res);
}
else{
    printf("Impossivel calcular! Os vectores tem de ter tamanhos identicos!\n");
}
system("PAUSE");
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

NUMERO X MATRIZ = MATRIZ

Nesta operação não há nenhuma restrição. Basta indicar o tamanho da linha e da coluna da matriz, inserir os elementos que estão na matrize por fim inserir o número a multiplicar pelos números da matriz.

#include <stdio.h>

main()
{
int mat[100][100];
int linha,coluna,b,i,num;
printf("Introduza o tamanho da linha da matriz: ");
scanf("%d",&linha);
printf("Introduza o tamanho da coluna da matriz: ");
scanf("%d",&coluna);
printf("Introduza os valores da matriz: (fazer ENTER entre cada valor introduzido)\n");
for(b=0;b<=linha-1;b++)
{
    for(i=0;i<=coluna-1;i++)
    {
        scanf("%d",&mat[b][i]);
    }
}
printf("\nIntroduza o numero a multiplicar pela matriz: ");
scanf("%d",&num);
printf("\n\nO resultado e:\n");
for(b=0;b<=linha-1;b++)
{
    for(i=0;i<=coluna-1;i++)
    {
        mat[b][i]=mat[b][i]*num;
        printf("%d\n",mat[b][i]);
    }
}
system("PAUSE");
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

VECTOR X MATRIZ = VECTOR

Nesta operação o tamanho do vector tem de ser igual ao tamanho da coluna ou linha da matriz. O resultado é um vector como espelha o seguinte:

2x3                  3x1                    2x1

[][][]        x        []          =          []   

[][][]                  []                        []

                          []

#include <stdio.h>

main()
{
int mat[100][100];
int vec1[100];
int vec2[100];
int linha,coluna,b,i,c,tam;
printf("Introduza o tamanho da linha: ");
scanf("%d",&linha);
printf("\n\nIntroduza o tamanho da coluna: ");
scanf("%d",&coluna);
printf("\n\nIntroduza os valores da matriz: (fazer ENTER entre cada valor introduzido)\n");
for(b=0;b<=linha-1;b++)
{
    for(i=0;i<=coluna-1;i++)
    {
        scanf("%d",&mat[b][i]);
    }
}
printf("In\n\ntroduza o tamanho do vector: ");
scanf("%d",&tam);
printf("\n\nIntroduza os valores do vector: (fazer ENTER entre cada valor introduzido)\n");
for(b=0;b<=tam-1;b++)
{
    scanf("%d",&vec1[b]);
}
for(b=0;b<=linha-1;b++)
{
    vec2[b]=0;
    for(i=0;i<=tam-1;i++)
    {
        vec2[b] = mat[b][i] * vec1[b];
    }
}
printf("O resultado e: \n");
for(b=0;b<=linha-1;b++)
{
    printf("%d\n",vec2[b]);
}
system("PAUSE");
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

MATRIZ X MATRIZ = MATRIZ

Nesta operação o tamanho da coluna da 1ª matriz tem de ser igual ao tamanho da coluna da 2ª matriz. O resultado é uma matriz como espelha o seguinte:

4x3              3x2            4x2

[][][]            [][]              [][]

[][][]      x    [][]      =    [][]

[][][]            [][]              [][]

[][][]                                [][]

#include <stdio.h>

main()
{
int matf[100][100];
int matl[100][100];
int matz[100][100];
int i,k,j,linha1,linha2,coluna1,coluna2;
printf("Introduza o tamanho da linha: ");
scanf("%d",&linha1);
printf("\n\nIntroduza o tamanho da coluna: ");
scanf("%d",&coluna1);
printf("\n\nIntroduza os valores: (fazer ENTER entre cada valor introduzido)\n");
for(i=0;i<=linha1-1;i++)
{
    for(j=0;j<=coluna1-1;j++)
    {
        scanf("%d",&matl[i][j]);
    }
}
printf("\n\nIntroduza o tamanho da linha: ");
scanf("%d",&linha2);
printf("\n\nIntroduza o tamanho da coluna: ");
scanf("%d",&coluna2);
printf("\n\nIntroduza os valores: (fazer ENTER entre cada valor introduzido)\n");
for(j=0;j<=linha2-1;j++)
{
    for(k=0;k<=coluna2-1;k++)
    {
        scanf("%d",&matz[j][k]);
    }
}
if(coluna1==linha2)
{                 
    printf("O resultado e:\n");
    for(i=0;i<=linha1-1;i++)
    {
        for(k=0;k<=coluna2-1;k++)
        {
            matf[i][k]=0;
            for(j=0;j<=coluna1-1;j++)
            {
                matf[i][k] = matl[i][j] * matz[j][k] + matf[i][k];
            }
            printf("%d\n",matf[i][k]);
        }
    }
}
else{
    puts("\n\nImpossivel calcular!");
}
system("PAUSE");
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E assim acabei esta série de posts.

Qualquer dúvida sobre estas operações é só dizer... :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora