Oi gente, eu tô iniciando em C, criei um programa, mas tô com problemas nele, será que algum de vocês pode me dar uma luz? =)
Tenho o seguinte problema pra resolver:
27. Crie um programa para manipular vetores. O seu programa deve implementar uma função
chamada inverte_vetor, que recebe como parâmetro dois vetores V1 e V2, ambos de tamanho N. A
função deve copiar os elementos de V1 para V2 na ordem inversa. Ou seja, se a função receber V1 =
{1,2,3,4,5}, a função deve copiar os elementos para V2 na seguinte ordem: V2 = {5,4,3,2,1}. Além
disso, a função também deve retornar o maior valor encontrado em V1. A função deve obedecer ao
seguinte protótipo:
int inverte_vetor(int *v1, int *v2, int n);
Em seguida, implemente no mesmo modulo outra função chamada multiplica_escalar, que recebe
como parâmetro dois vetores V1 e V2 (ambos de tamanho N), e um número inteiro X. A função deve
multiplicar cada um dos elementos de V1 por X e armazenar os resultados em V2.
A função deve obedecer ao seguinte protótipo:
void multiplica_escalar(int *v1, int *v2, int x, int n);
Em seguida crie a função principal do programa utilizando as funções inverte_vetor e
multiplica_escalar para inverter um vetor de tamanho 10 fornecido pelo usuário e em seguida
multiplicar esse vetor por um escalar também fornecido pelo usuário. Por último, o programa deverá
exibir o vetor resultante.
para isso eu criei o seguinte programa:
#include<stdio.h>
#include<stdlib.h>
int inverte_vetor(int *vet1, int *vet2, int tamanho);
void multiplica_escalar(int *vet1, int *vet2, int x, int n);
int main(void)
{
int tamanho;
printf("digite o tamanho do vetor:\n");
scanf("%d",&tamanho);
int v1[tamanho-1];
int v2[tamanho-1];
for(int i=0; i<tamanho; i++)
{
printf("Digite o elemento \n");
scanf("%d", &v1);
}
for(int i=0; i<tamanho; i++)
{
printf("vetor1[%d]=%d\t vetor2[%d]=%d\n", i, v1, i, v2);
}
inverte_vetor(&v1[tamanho-1], &v2[tamanho-1], tamanho-1);
int maior = inverte_vetor(&v1[tamanho-1], &v2[tamanho-1], tamanho-1);
printf("maior numero: %d\n", maior);
int v3[tamanho-1];
int x;
printf("digite o valor de x: \n");
scanf("%d",&x);
multiplica_escalar(&v3[tamanho-1], &v2[tamanho-1], x, tamanho-1);
for(int i=0; i<tamanho; i++)
{
printf("vetor3[%d]=%d\n",i, v3);
}
return 0;
}
int inverte_vetor(int *vet1, int *vet2, int tamanho)
{
int maior = 0;
for(int i = 0; i<=tamanho; i++)
{
*(vet2+(tamanho-1))=*(vet1+1);
if(*(vet1+(tamanho-i)) >maior)
{
maior = *(vet1+(tamanho-i));
}
}
return maior;
}
void multiplica_escalar(int *vet1, int *vet2, int x, int tamanho)
{
for(int i=0; i<=tamanho; i++)
{
*(vet1+i)=*(vet2+i)*x;
}
}
Ele roda no Devc++, só que não inverte o vetor, não retorna o maior número e dai não faz a multiplicação,
Alguém me ajuda por favor, tô muito perdida,
obrigada =)