Ir ao conteúdo
  • Cadastre-se

Meu código não funciona no devc++


IndyMa

Posts recomendados

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 =)

Link para o comentário
Compartilhar em outros sites

@IndyMa Tinha muitos erros, veja o código e compare.

 

#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];
  int v2[tamanho];
  for(int i=0; i<tamanho; i++) {
    printf("Digite o elemento \n");
    scanf("%d", &v1[ i ]);
  }

  inverte_vetor(v1, v2, tamanho);
  int maior = inverte_vetor(v1, v2, tamanho);
  //imprime
  for(int i=0; i<tamanho; i++) {
    printf("vetor1[%d]=%d\t vetor2[%d]=%d\n", i, v1[ i ], i, v2[ i ]);
  }
  printf("maior numero: %d\n", maior);

  int v3[tamanho];
  int x;
  printf("digite o valor de x: \n");
  scanf("%d",&x);

  multiplica_escalar(v3, v2, x, tamanho);
  for(int i=0; i<tamanho; i++) {
    printf("vetor3[%d]=%d\n",i, v3[ i ]);
  }
  return 0;
}
//inverte vetor
int inverte_vetor(int *vet1, int *vet2, int tamanho) {
  int maior = 0;
  for(int i = 0; i< tamanho; i++) {
    *(vet2+(tamanho-1-i))=*(vet1+i);

    if(*(vet1+(tamanho-i-1)) >maior) {
      maior = *(vet1+(tamanho-i-1));
    }
  }
  return maior;
}
//multiplica vetor
void multiplica_escalar(int *vet1, int *vet2, int x, int tamanho) {
  for(int i=0; i < tamanho; i++) {
    *(vet1+i) = *(vet2+i) * x;
  }
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Dica: Sempre comente partes do programa que venham a facilitar o entendimento do algorítimo, mesmo que seja um comentário pequeno e que só você entenda, eventualmente você vai ter que ler o programa todo só para entender pra que funciona aquela parte que você não comentou.

 

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

///@brief Funcoes declaradas
int inverte_vetor(int *vet1, int *vet2, int tamanho);
void multiplica_escalar(int *vet1, int *vet2, int x, int n);

///@brief Funcao principal
int main(void)
{
    //Dec Variavel
    int tamanho, maior = 0, x = 0, i = 0;
    //Questionario
    printf("Digite o tamanho do vetor:");
    scanf("%d",&tamanho);
    //Dec Vetores
    int v1[tamanho-1],
        v2[tamanho-1],
        v3[tamanho-1];


    //Loop - receber dados no vetor 1
    for(i=0; i<tamanho; i++)
    {
        printf("Digite o elemento \n");
        scanf("%d", &v1[i]);
    }

    //*1 ERRO ENCONTRADO - VETOR 2 SENDO USADO - SENDO QUE AINDA NÃO RECEBEU
    //                     NENHUM DADO;
    //**2 ERRO ENCONTRADO - VETOR V1 SEM COCHETES([]) PARA IDENTIFICAR O VALOR ACESSADO
    //***CORRIGIDO
    //Mostra vetor 1
    printf("Vetor 1:\n");
    for(i=0; i<tamanho; i++)
    {
        printf("[%d]=%d\n", i, v1[i]);
    }

    //Inverter valores do vetor
    maior = inverte_vetor(v1, v2, tamanho-1);

    //Mostra vetor 2
    printf("Vetor 2:\n");
    for(i=0; i<tamanho; i++)
    {
        printf("[%d]=%d\n", i, v2[i]);
    }

    //Maior numero vetor 1
    printf("Maior numero encontrado no Vetor 1: %d\n", maior);

    //Parte 2 - questionario valor X
    printf("Digite o valor de x: \n");
    scanf("%d",&x);

    //Multiplicar vetor 3 p/ x - v2 envia dados - v3 recebe
    multiplica_escalar(v2, v3, x, tamanho-1);

    //Mostra vetor 3
    printf("Vetor 3:\n");
    for(i=0; i<tamanho; i++)
    {
        printf("[%d]=%d\n", i, v3[i]);
    }

return 0;
}
///@brief Inverter valores de vet1 e enviar para vet2
int inverte_vetor(int *vet1, int *vet2, int tamanho){

    int maior = 0;
    for(int i = 0; i <= tamanho; i++)
    {
        *(vet2+i)=*(vet1+(tamanho-i));
        if(*(vet2+i) > maior)
        {
            maior = *(vet2+i);
        }
    }
 return maior;
 }

///@brief Inverter valores de vet1 e enviar para vet2
 void multiplica_escalar(int *vet1, int *vet2, int x, int tamanho)
 {
    for(int i=0; i<=tamanho; i++)
    {
        *(vet2+i)=*(vet1+i)*x;
    }
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...