Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #59 da revista programar. Faz já o download aqui!

jonhhy

Vetores em função

Mensagens Recomendadas

jonhhy    0
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)
   ^

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo    1151
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

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.