Ir ao conteúdo
  • Cadastre-se
Gabriel Amorim

Subrotina em c++

Recommended Posts

Bom dia, estou a pouco tempo programando em c++, devido a faculdade, e tenho certa dificuldade nisso.

Preciso fazer uma subrotina(acho que é esse o nome), fazendo a função antes do int main() e chamando ela depois, no decorrer do programa. Ja vi diversos exemplos mais simples, como para resolução de eq. de segundo grau, mas o que eu preciso fazer usa um vetor, no caso, uma matriz. Está dando erro e eu nao sei mais o que fazer!

Vou copiar aqui o pedaço do programa e explicar mais ou menos cada coisa:

#include....

float monta_matriz(int i, int npx, int np2, float ma[700][700]){
for(i=npx+1;i<=(np2-npx);i++){
ma[i][i]=-4;
ma[i][i-1]=1;
ma[i][i-npx]=1;
ma[i][i+1]=1;
ma[i][i+npx]=1;
}
return 0;
}

int main(){
[ ... ]

}

Preciso montar uma matriz, com tamanho máximo de 700x700, na subrotina chamada monta_matriz. Mas, eu nao estou conseguindo ''chamar'' esta função no meu programa. Além de que ela está dando erro logo no começo, que diz o seguinte:

8 G:[...] too few arguments to function `float monta_matriz(int, int, int, float (*)[700])'

Ja não sei mais o que fazer!

No programa, essa matriz ma[700][700] será reeditada, para mudar alguns elementos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para passar uma matriz por referencia é só colocar apenas a variável:


//aqui você não ta retornando nada pode usar void
float monta_matriz(float ma[][700]){


}


int main(){

float ma[700][700];

//passando a matriz pra função
monta_matriz(ma);
}

O exemplo acima é para passar a matriz por referencia, como não sei como o programa funciona fiz a parte do codigo que você colocou funcionar veja:


#include <iostream>
#include <stdio.h>
#include <stdlib.h>

#define qLinha 3 //quantidade de linhas da matriz pode ser alterada mais facilmente
#define qColuna 3 //quantidade de colunas da matriz

//aqui você não ta retornando nada pode usar void
void monta_matriz(int i, int npx, int np2, float ma[][qColuna]){
for(i=npx+1;i<=(np2-npx);i++){
ma[i][i]=-4;
ma[i][i-1]=1;
ma[i][i-npx]=1;
ma[i][i+1]=1;
ma[i][i+npx]=1;
}
}
int main(int argc, char *argv[]) {
float ma[qLinha][qColuna]={0,0,0,0,0,0,0,0,0};

int i=0,npx=0,np2=3;

int linha,coluna;

//vai para a função monta matriz passando variaveis como paramentro
monta_matriz(i,npx,np2,ma);

//mostrando a matriz preenchida
for(linha = 0; linha <qLinha ; linha++){
for(coluna =0; coluna <qColuna; coluna++){
printf("\t%.2f",ma[linha][coluna]);
}
printf("\n");
}

system("PAUSE");
return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×