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

jonhhy

Vetores em função

Recommended Posts

jonhhy

Boa noite caros compatriotas :) ,

tenho uma duvida,

#include <stdio.h>

int const cel=8;
float max(float v[],int n)
{
   int i;
   float max=v[0];
   for (i=1;i<n;i++)
   {
       if (max < v[i])
           max = v[i];
   }
   printf("O maior e: %f",max);
   return max;
}

int main()
{
   float vetori[7] = {-9,-1.5,-9,-2,-3}; // supostamente ele os ultimos elementos colocava a zero e esses seriam os maximos
   max(vetori[7], 5);
   return 0;
}

e no terminal surgiu:

xpto@xpto-K52Jc:~/workspace/Book$ gcc -W DAMA.c  -o Dama
DAMA.c: In function ‘main’:
DAMA.c:20:13: error: expected expression before ‘]’ token
 max(vetori[],3);
		 ^


O Objetivo é: implementar a funcao float max(float v[],int n) qdo recebe 1 vetor de numeros reais e o nº de elementos a representar( desse tal vetor) .

e retornar o maior numero entre os n primeiros elementos do vetor. by "Linguagem C" exercicio proposto 2.

esta 1a solução é a que é mais parecida com a solução proposta mesmo assim não funcionou não percebendo como o erro surge..

ou isto:

#include <stdio.h>
int const cel=8;
float max(float v[],int n)
{
int i;
float max=v[0];
for (i=1;i<n;i++)
{
 if (max < v[i])
  max = v[i];
}
printf("O maior e: %f",max);
return max;
}
int main()
{
float vetori[7] = {-9,-1.5,-9,-2,-3}; // supostamente ele os ultimos elementos colocava a zero e esses seriam os maximos
max(vetori[7], 5);
return 0;
}

xpto@xpto-K52Jc:~/workspace/Book$ gcc -W DAMA.c  -o Dama
DAMA.c: In function ‘main’:
DAMA.c:20:2: error: incompatible type for argument 1 of ‘max’
 max(vetori[7], 5);
 ^
DAMA.c:4:7: note: expected ‘float *’ but argument is of type ‘float’
float max(float v[],int n)
   ^

talmbém fiz de maneira/experimentei diferente:

#include <stdio.h>
int const cel=8;
float max(float v[],int n)
{
int i;
float max=v[0];
for (i=1;i<n;i++)
{
 if (max < v[i])
  max = v[i];
}
printf("O maior e: %f",max);
return max;
}
int main()
{
float vetori[cel];// = {-9,-1.5,-9,-2,-3}; //
vetori[cel]= {-9,-1.5,-9,-2,-3};
max(vetori[cel], 7);
return 0;
}

e deu isto:

xpto@xpto-K52Jc:~/workspace/Book$ gcc -W DAMA.c  -o Dama
DAMA.c: In function ‘main’:
DAMA.c:20:15: error: expected expression before ‘{’ token
 vetori[cel]= {-9,-1.5,-9,-2,-3};
		   ^
DAMA.c:21:2: error: incompatible type for argument 1 of ‘max’
 max(vetori[cel], 7);
 ^
DAMA.c:4:7: note: expected ‘float *’ but argument is of type ‘float’
float max(float v[],int n)
   ^

e também outra variante:

#include <stdio.h>
int const cel=8;
float max(float v[],int n)
{
int i;
float max=v[0];
for (i=1;i<n;i++)
{
 if (max < v[i])
  max = v[i];
}
printf("O maior e: %f",max);
return max;
}
int main()
{
float vetori[cel] = {-9,-1.5,-9,-2,-3}; // supostamente ele os ultimos elementos colocava a zero e esses seriam os maximos ,o Compilador diz:variable-sized object may not be initialized, nem ponto a const
max(vetori[cel], 7);
return 0;
}

DAMA.c: In function ‘main’:
DAMA.c:19:2: error: variable-sized object may not be initialized
 float vetori[cel] = {-9,-1.5,-9,-2,-3}; // supostamente ele os ultimos elementos colocava a zero e esses seriam os maximos
 ^
DAMA.c:19:2: warning: excess elements in array initializer [enabled by default]
DAMA.c:19:2: warning: (near initialization for ‘vetori’) [enabled by default]
DAMA.c:19:2: warning: excess elements in array initializer [enabled by default]
DAMA.c:19:2: warning: (near initialization for ‘vetori’) [enabled by default]
DAMA.c:19:2: warning: excess elements in array initializer [enabled by default]
DAMA.c:19:2: warning: (near initialization for ‘vetori’) [enabled by default]
DAMA.c:19:2: warning: excess elements in array initializer [enabled by default]
DAMA.c:19:2: warning: (near initialization for ‘vetori’) [enabled by default]
DAMA.c:19:2: warning: excess elements in array initializer [enabled by default]
DAMA.c:19:2: warning: (near initialization for ‘vetori’) [enabled by default]
DAMA.c:20:2: error: incompatible type for argument 1 of ‘max’
 max(vetori[cel], 7);
 ^
DAMA.c:4:7: note: expected ‘float *’ but argument is of type ‘float’
float max(float v[],int n)
   ^

Share this post


Link to post
Share on other sites
HappyHippyHippo

Boa noite caros compatriotas :) ,

tenho uma duvida,

#include <stdio.h>

int const cel=8;
float max(float v[],int n)
{
   int i;
   float max=v[0];
   for (i=1;i<n;i++)
   {
       if (max < v[i])
           max = v[i];
   }
   printf("O maior e: %f",max);
   return max;
}

int main()
{
   float vetori[7] = {-9,-1.5,-9,-2,-3}; // supostamente ele os ultimos elementos colocava a zero e esses seriam os maximos
   max(vetori[7], 5);
   return 0;
}

e no terminal surgiu:

xpto@xpto-K52Jc:~/workspace/Book$ gcc -W DAMA.c  -o Dama
DAMA.c: In function ‘main’:
DAMA.c:20:13: error: expected exp<b></b>ression before ‘]’ token
 max(vetori[],3);
            ^


bem, antes de mais, o código que apresentas inicialmente não é o código compilado, e isso basta ver na mensagem de erro.

a mensagem de erro simplesmente diz que anda p'rai uma characteres a mais, como os "[]"

esta 1a solução é a que é mais parecida com a solução proposta mesmo assim não funcionou não percebendo como o erro surge..

ou isto:

#include <stdio.h>
int const cel=8;
float max(float v[],int n)
{
int i;
float max=v[0];
for (i=1;i<n;i++)
{
 if (max < v[i])
  max = v[i];
}
printf("O maior e: %f",max);
return max;
}
int main()
{
float vetori[7] = {-9,-1.5,-9,-2,-3}; // supostamente ele os ultimos elementos colocava a zero e esses seriam os maximos
max(vetori[7], 5);
return 0;
}

xpto@xpto-K52Jc:~/workspace/Book$ gcc -W DAMA.c  -o Dama
DAMA.c: In function ‘main’:
DAMA.c:20:2: error: incompatible type for argument 1 of ‘max’
 max(vetori[7], 5);
 ^
DAMA.c:4:7: note: expected ‘float *’ but argument is of type ‘float’
float max(float v[],int n)
      ^

olha para a primeira mensagem de erro : incompatible type for argument 1 of ‘max’

que tipo de dados é max ? e max[7] ?

talmbém fiz de maneira/experimentei diferente:

#include <stdio.h>
int const cel=8;
float max(float v[],int n)
{
int i;
float max=v[0];
for (i=1;i<n;i++)
{
 if (max < v[i])
  max = v[i];
}
printf("O maior e: %f",max);
return max;
}
int main()
{
float vetori[cel];// = {-9,-1.5,-9,-2,-3}; //
vetori[cel]= {-9,-1.5,-9,-2,-3};
max(vetori[cel], 7);
return 0;
}

e deu isto:

xpto@xpto-K52Jc:~/workspace/Book$ gcc -W DAMA.c  -o Dama
DAMA.c: In function ‘main’:
DAMA.c:20:15: error: expected exp<b></b>ression before ‘{’ token
 vetori[cel]= {-9,-1.5,-9,-2,-3};
              ^
DAMA.c:21:2: error: incompatible type for argument 1 of ‘max’
 max(vetori[cel], 7);
 ^
DAMA.c:4:7: note: expected ‘float *’ but argument is of type ‘float’
float max(float v[],int n)
      ^

só podes inicializar um array na sua instânciação

e também outra variante:

#include <stdio.h>
int const cel=8;
float max(float v[],int n)
{
int i;
float max=v[0];
for (i=1;i<n;i++)
{
 if (max < v[i])
  max = v[i];
}
printf("O maior e: %f",max);
return max;
}
int main()
{
float vetori[cel] = {-9,-1.5,-9,-2,-3}; // supostamente ele os ultimos elementos colocava a zero e esses seriam os maximos ,o Compilador diz:variable-sized object may not be initialized, nem ponto a const
max(vetori[cel], 7);
return 0;
}

DAMA.c: In function ‘main’:
DAMA.c:19:2: error: variable-sized object may not be initialized
 float vetori[cel] = {-9,-1.5,-9,-2,-3}; // supostamente ele os ultimos elementos colocava a zero e esses seriam os maximos
 ^
DAMA.c:19:2: warning: excess elements in array initializer [enabled by default]
DAMA.c:19:2: warning: (near initialization for ‘vetori’) [enabled by default]
DAMA.c:19:2: warning: excess elements in array initializer [enabled by default]
DAMA.c:19:2: warning: (near initialization for ‘vetori’) [enabled by default]
DAMA.c:19:2: warning: excess elements in array initializer [enabled by default]
DAMA.c:19:2: warning: (near initialization for ‘vetori’) [enabled by default]
DAMA.c:19:2: warning: excess elements in array initializer [enabled by default]
DAMA.c:19:2: warning: (near initialization for ‘vetori’) [enabled by default]
DAMA.c:19:2: warning: excess elements in array initializer [enabled by default]
DAMA.c:19:2: warning: (near initialization for ‘vetori’) [enabled by default]
DAMA.c:20:2: error: incompatible type for argument 1 of ‘max’
 max(vetori[cel], 7);
 ^
DAMA.c:4:7: note: expected ‘float *’ but argument is of type ‘float’
float max(float v[],int n)
      ^

o valor do tamanho do vector necessita de ser uma valor a ser calculado em tempo de compilação

e prontos, a solução é somente :

int main()
{
   float vetori[] = {-9,-1.5,-9,-2,-3};
   max(vetori, 5);
   return 0;
}


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
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

×

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.