• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

suzy

[Resolvido] dimensão de um vector

3 mensagens neste tópico

:wallbash: nao estou a entender o enunciado, parece-me :wallbash: tenho o seguinte problema:

Desenvolva uma função, que receba dois vectores de inteiros (e respectiva dimensão) e

verifique se estes são iguais. A função deve devolver 1 se os dois vectores forem iguais

ou devolver 0 se forem diferentes. Considere que dois vectores são iguais se, na mesma

posição, tiverem elementos com o mesmo valor.

fiz assim:

#include<stdio.h>

int verifica( int v[], int b[],int dimv, int dimb){
  int i,j;
         
  for(i=0;i<dimv;i++){
   printf(" valores %d\n",i+1);
    scanf("%d",&v[i]);
  }
          
  for(i=0;i<dimb;i++){
   printf(" valores %d\n",i+1);
    scanf("%d",&b[i]);
  }
          
  for(i=0;i<dimv;i++){
   for(j=0;j<dimb;j++){
      if(v[i]==b[i])
        return 1;
      else
        return 0;
    }
  }        
}


main()
{
  int v[5],b[5],i,resultado;// que coloco na dimensao do vector?

  resultado=verifica(v,b,5,5);
  printf(" o resultado e %d\n",resultado);
  fflush(stdin);
  getchar();
}

o meu problema ta na dimensao de cada vector, a dimensao e o utilizador que escolhe, no coloco qd declaro o vector v[?], e o vector [?], se a dimensao do vector tem de ser escolhida pelo utilizador??

se colocar so v[] b[] no main nao compila porque falta o tamanho do vector, acho que tou a fazer confusao com alguma coisa  :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Parece-me que o enunciado apenas te pede para criares a função que compara dois vectores.

Só precisas da main para testares a função, e nesse caso, podes usar vectores com tamanhos definidos por ti. Para além disso, convém inicializares os vectores na main e não na verifica.

Na função verifica estás a fazer trabalho desnecessário. Só precisas de um ciclo...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O Rui Carlos tem razão...a tua preocupação devia ser só a função de verificação...

Em todo o caso... sabes alocar memoria dinâmicamente? Podias resolver o teu "problema" dessa maneira...

main()
{
  int * v,  * b , i , resultado , dimv , dimb;
  scanf("%d", & dimv);
  v = (int * ) malloc( sizeof(int) * dimv );

  scanf("%d", & dimb);
  b = (int * ) malloc( sizeof(int) * dimb );

  resultado=verifica(v,b,dimv,dimb);
  printf(" o resultado e %d\n",resultado);
  fflush(stdin);
  getchar();
}

Edit: ops.. forum de C  :(

Edit2: Não está explicito no enunciado, mas é normal 2 vectores só serem iguais se tiverem o mesmo tamanho... falta-te testar isso...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora