Ir ao conteúdo
  • Cadastre-se
IndyMa

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

Recommended Posts

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

Editado por dif
Código dentro da tag CODE <>

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poxa Galera, valeu mesmo! tinham muitos erros mesmo e minha falta de atenção contribuiu para meu mau desempenho, mas obrigada por me mostrarem aonde errei, obrigada mesmo!!! Vocês são mestres =)

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×