Jump to content
Fórum Script Brasil
  • 0

Função com argumento


AndreJustulino
 Share

Question

O que estou fazendo de errado?


int inserirlistaseq (int lista[],int tam, int &quant,int valor){

if (quant ==tam)
return 0;
lista[quant]=valor;
quant = quant+1;
return 1;
}

int main (){
int dados [tamanho];
int quantidade =0;
int resultado,int novovalor;

cout<<"Digite o valor: ";
cin>>novovalor;
resultado = inserirlistaseq(dados,dados,quantidade,novovalor);


}

 

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Olá!

 

Olha sou iniciante em C enão em C++ e fora o fato de que ultimamente não estou nada bem para entender o código de outros programadores, mas vou tentar lhe ajudar . . .

 

- |15|error: ‘tamanho’ was not declared in this scope| - este erro está lhe alertando para o fato de que a variável “ tamanho ” não existe no código, não foi declarada

 

- |21|error: expected unqualified-id before ‘int’| - este erro se deve ao fato de que você colocou uma virgula ( , ) depois da variável int resultado, quando o correto seria ponto e virgula ( ; )

 

- |26|error: invalid conversion from ‘int*’ to ‘int’ [-fpermissive]| - este erro se deve ao fato de que na sua função você especificou que das 4 variáveis apenas a primeira vai receber um(o) vetor:

 

inserirlistaseq(dados,dados,quantidade,novovalor);

 

sendo assim você não pode passar o segundo “dados” para a sua função, pois, pela sintaxe da sua função apenas a primeira é que deveria ser passada, a segunda não!

 

 

- Não estou certo quanto a linguagem C++, mas na linguagem C quando você quer passar um valor ( variável ) por referencia, deve-se fazer o seguinte procedimento:

 

Na declaração da sua função, você vai especificar qual variável vai receber o valor por referencia usando um asterisco ( * ) para indicar que a variável é do tipo ponteiro:

 

int inserirlistaseq ( int lista[], int tam, int *quant, int valor )

{

. . .

}

 

e ao chamar a sua função, indicar que você deseja passar a variável por referencia usando um e-comercial ( & ) para indicar o endereço na memoria da variável:

 

resultado = inserirlistaseq ( dados, alterar_variavel, &quantidade, novovalor );

 

 

- E dentro da sua função, existem dois (2) return,  um que retorna 1 e o outro que retorna 0, a questão é que em casos como esse, você deixe o código bem definido colocando um abre e fecha chaves a fim de facilitar e deixar bem explicito o que cada parte do código vai fazer e em que condições.

 

- tente dar uma pesquisada sobre a passagem de valores para funções, seja atraves de valor ou atraves de referencia

 

 

Bom como disse não estou nada bem para entender o codigo de outros programadores ultimamente, então só vou ate aqui, veja se com as dicas acima voce já consegue alguma luz!

 

Ubuntu 14.04  GCC 4.8  CodeBlocks 13.12

 

Espero Ter Ajudado ! ! !

 

 

Edited by Felipe222
Link to comment
Share on other sites

  • 0
1 hora atrás, Felipe222 disse:

- Não estou certo quanto a linguagem C++, mas na linguagem C quando você quer passar um valor ( variável ) por referencia, deve-se fazer o seguinte procedimento:

 

O procedimento é o mesmo que em c++, porem não se deve dizer referencia pois uma referencia em C++ é quando fazemos void foo ( int &x ){...}. Na hora de efetuar o passo por referencia em C++, nós invocamos a função foo(como a do exemplo anterior) e passamos normalmente tal como se de um passo por valor se tratase foo(valor);, é mais ou menos como uma referencia em C com umas quantas diferenças, tratase de uma "item" que aponta uma variavel, porem a diferença reside que int &x não pode ser usado para apontar outro valor diferente ao valor que foi designado na atribuição, por isso chamo de item e não de variavel, si eu quero usar uma referencia em C++ devo indicar o valor justo na declaração. Imaginamos que tenho  int n = 10, e quero uma referencia a n, então faço int &ref=n;, note que não preciso por & adiante como fazemos com ponteiros, assumimos que  &ref já espera uma direção de memoria, por isso não preciso por & adiante de n. Outra diferença é que em nenhum momento posso "reutilizar" ref como um ponteiro, tentando faze-la apontar a outra variável, tipo ref=outraVariavel, ref tem que ganhar o valor como disse anteriormente na hora declaração, digamos que ela se "conecta" com a variável que recebeu por atribuição na hora da declaração, então em C++ referencias são quando você precisa passar a direção porem a variável que a recebe não pode apontar outra coisa, e ponteiro você sim pode voltar a reutilizar, referencias em C++ tem um comportamento semelhante a um const int*, você deve dar o valor justo na hora de declarar, e depois já não pode mudar esse valor. Referencias em C++ se costumam usar internamente dentro de uma mesma classe pois é mais comodo que o uso de ponteiros, quando uma variável tem que ser intercambiada entre 2 classes então se costuma usar ponteiros que são mais flexíveis.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...