Parte 1: Escrever uma função para verificar se um dado vetor R de dimensão D é igual a um dado vetor S também de dimensão D. A função deve ser do tipo int e se os dois vetores forem iguais ela deve retornar o valor 1 , caso contrário ela retorna o valor zero.
Parte 2: Utilize o subprograma da Parte 1 em um programa principal que lê uma matriz A de dimensão M x N e um vetor V de dimensão M e verifique se o vetor V aparece na matriz A como uma linha.
Se isso ocorrer informe a linha da matriz que é igual ao vetor. Caso contrário informe que o vetor não é igual a nenhuma linha da matriz.
O programa deve fornecer também como saída a matriz lida e o vetor lido.

Passo 1

O exercício pede duas coisas principais: (1) criar uma função que compare dois vetores R e S de tamanho D e retorne 1 se forem iguais e 0 caso contrário; (2) usar essa função em um programa principal que leia uma matriz A de dimensão M×N e um vetor V de dimensão N, imprima ambos e verifique se V coincide com alguma linha de A, informando a posição ou exibindo mensagem de não encontrada.

Passo 2

Para comparar vetores em C, a ideia é percorrer todos os índices de 0 até D–1 e checar se R[i] != S[i]. Se em algum ponto forem diferentes, já podemos retornar 0. Se o laço terminar sem discrepâncias, retornamos 1. Esse padrão evita loops desnecessários após detectar a primeira diferença.
Implementamos então a função de comparação de vetores em C:
int comparaVetores(int R[], int S[], int D) {
    for (int i = 0; i < D; i++) {
        if (R[i] != S[i]) {
            return 0;
        }
    }
    return 1;
}

Passo 3

No programa principal, vamos:
a) ler M e N do usuário;
b) criar a matriz A[M][N] e o vetor V[N];
c) preencher A e V com laços for;
d) imprimir a matriz e o vetor para conferência.

Passo 4

Para imprimir a matriz A fazemos dois loops aninhados, um sobre as linhas i (0≤i<M) e outro sobre as colunas j (0≤j<N), exibindo cada A[i][j]. Para o vetor V, percorremos j de 0 a N–1 e imprimimos V[j].
Em seguida, iteramos cada linha i de A e chamamos comparaVetores(A[i], V, N). Se o retorno for 1, guardamos i, imprimimos que o vetor está na linha i e interrompemos a busca. Se o laço terminar sem encontrar correspondência, imprimimos mensagem de não encontrada.

Passo 5

Juntando tudo, nosso programa em C fica assim:

Resposta

#include <stdio.h>
#include <stdlib.h>
int comparaVetores(int R[], int S[], int D) {
for (int i = 0; i < D; i++) {
if (R[i] != S[i]) {
return 0;
}
}
return 1;
}
int main() {
int M, N;
printf(“Digite o número de linhas M e de colunas N da matriz: “);
if (scanf(”%d %d”, &M, &N) != 2) {
printf(“Entrada inválida.\n”);
return 1;
}
int **A = malloc(M * sizeof(int*));
for (int i = 0; i < M; i++) {
    A[i] = malloc(N * sizeof(int));
}
int *V = malloc(N * sizeof(int));

// Leitura da matriz A
printf("Digite os elementos da matriz A (%d x %d):\n", M, N);
for (int i = 0; i < M; i++) {
    for (int j = 0; j < N; j++) {
        scanf("%d", &A[i][j]);
    }
}
// Leitura do vetor V
printf("Digite os %d elementos do vetor V:\n", N);
for (int j = 0; j < N; j++) {
    scanf("%d", &V[j]);
}

// Impressão da matriz
printf("Matriz A lida:\n");
for (int i = 0; i < M; i++) {
    for (int j = 0; j < N; j++) {
        printf("%d ", A[i][j]);
    }
    printf("\n");
}
// Impressão do vetor
printf("Vetor V lido: ");
for (int j = 0; j < N; j++) {
    printf("%d ", V[j]);
}
printf("\n");

// Verificação de linha igual a V
int linhaEncontrada = -1;
for (int i = 0; i < M; i++) {
    if (comparaVetores(A[i], V, N)) {
        linhaEncontrada = i;
        break;
    }
}

if (linhaEncontrada >= 0) {
    printf("O vetor V aparece na matriz como linha %d.\n", linhaEncontrada);
} else {
    printf("O vetor V não é igual a nenhuma linha da matriz.\n");
}

// Libera memória
for (int i = 0; i < M; i++) {
    free(A[i]);
}
free(A);
free(V);

return 0;
}

Exercícios relacionados