Crie uma estrutura denominada Vetor para representar um vetor de dimensões (coordenadas) x, y e z no espaço tridimensional: V(x, y, z). Desenvolva uma função para calcular e retornar a soma de dois vetores A(x a, y a, z a) e B(x b, y b, z b) e uma função para calcular e retornar a multiplicação de A pela coordenada de maior valor de B. Faça um programa principal que leia do usuário as coordenadas dos dois vetores e que chame as duas funções citadas para imprimir os resultados retornados por elas.

Passo 1

O enunciado pede que a gente crie em C uma estrutura chamada Vetor para guardar três coordenadas tridimensionais \mathrm{x}, \mathrm{y} e \mathrm{z}. Depois, precisamos de duas funções: uma que some dois vetores e outra que multiplique o vetor \mathrm{A} pela maior coordenada de \mathrm{B}. Por fim, no main vamos ler do usuário os valores de \mathrm{A} e \mathrm{B} e imprimir os resultados dessas funções.

Passo 2

Definimos a estrutura Vetor com três campos do tipo double para armazenar as coordenadas:
typedef struct {
 double x;
 double y;
 double z;
} Vetor;

Passo 3

Implementamos a função somaVetores, que recebe dois vetores a e b e retorna um vetor r cujas componentes são a soma componente a componente:
\begin{aligned} r.x &= a.x + b.x,\\\ r.y &= a.y + b.y,\\\ r.z &= a.z + b.z. \end{aligned}

Passo 4

Implementamos a função multiplicaMaiorCoord, que encontra a maior entre b.x, b.y e b.z e multiplica todas as componentes de a por esse valor:
  1. Inicializa maior = b.x.
  2. Se b.y > maior, faz maior = b.y.
  3. Se b.z > maior, faz maior = b.z.
  4. Retorna o vetor cujo x,y,z são a.x*maior, a.y*maior e a.z*maior.

Passo 5

No main:
  1. Declaramos Vetor A, B;.
  2. Pedimos ao usuário para digitar as três coordenadas de A e depois de B, usando scanf("%lf", &A.x) etc.
  3. Chamamos somaVetores(A, B) e armazenamos o resultado em Vetor S.
  4. Chamamos multiplicaMaiorCoord(A, B) e armazenamos em Vetor M.
  5. Imprimimos S e M no formato (x, y, z).

Resposta

#include <stdio.h>

typedef struct {
 double x;
 double y;
 double z;
} Vetor;

Vetor somaVetores(Vetor a, Vetor b) {
 Vetor r;
 r.x = a.x + b.x;
 r.y = a.y + b.y;
 r.z = a.z + b.z;
 return r;
}

Vetor multiplicaMaiorCoord(Vetor a, Vetor b) {
 double maior = b.x;
 if (b.y > maior) maior = b.y;
 if (b.z > maior) maior = b.z;
 Vetor r;
 r.x = a.x * maior;
 r.y = a.y * maior;
 r.z = a.z * maior;
 return r;
}

int main() {
 Vetor A, B, S, M;
 printf("Digite as coordenadas de A (x y z): ");
 scanf("%lf %lf %lf", &A.x, &A.y, &A.z);
 printf("Digite as coordenadas de B (x y z): ");
 scanf("%lf %lf %lf", &B.x, &B.y, &B.z);

 S = somaVetores(A, B);
 M = multiplicaMaiorCoord(A, B);

 printf("Soma dos vetores A + B = (%.2f, %.2f, %.2f)
", S.x, S.y, S.z);
 printf("A multiplicado pela maior coord. de B = (%.2f, %.2f, %.2f)
",
 M.x, M.y, M.z);

 return 0;
}

Exercícios relacionados