Jump to content

[Resolvido] dimensão de um vector


suzy
 Share

Recommended Posts

:wallbash: nao estou a entender o enunciado, parece-me <img alt= " data-emoticon="true" height="20" src="https://cdn.portugal-a-programar.org/public/emoticons/wallbash.gif" srcset="https://cdn.portugal-a-programar.org/public/emoticons/wallbash@2x.gif 2x" title=":wallbash: " width="20"> 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  ?

Link to comment
Share on other 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...

Link to comment
Share on other 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...

"What we do for ourselves dies with us. What we do for others and the world, remains and is immortal.", Albert Pine

Blog pessoal : contém alguns puzzles, algoritmos e problemas para se resolver com programação.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.