Ir ao conteúdo

Posts recomendados

Postado

Olá, tenho um código ao qual o objetivo é verificar se os numeros digitados pelo usuario existe raiz quadrada exata. Entretanto estou com confusão na parte da criação de subprogramas, mais especificamente o uso da passagem de parâmetro. O código



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

#define tam 5

void imprimaraiz(float* n[], int* i);
int main (){
	
	int i;
	float n[tam];
	
	for (i=1; i<=tam; i++){
		printf("Digite o % d valor: \n ",i);
		scanf("%f",&n[i]);
		
	}
		

	return 0;
}
	void imprimaraiz(float* n[], int* i){
			float j;
			float verifica[tam];
				for (j=1; j<=tam; j++){
					verifica[tam]= sqrt(n[i]);
						if(verifica[tam]%2==0){
							printf("O numero %f é uma raiz quadrada exata! \n",verifica[tam]);
						}
				}
		
			
			
	}

 

Postado

Bem, acho que a sua dúvida é na chamada do "void imprimaraiz(float* n[], int* i)". Na linguagem C o "*" depois do tipo da variável indica que é um ponteiro (guarda a posição da memoria), então não faz sentido você passar int * i nesse caso, seria uma chamada por referência, assim você passaria o endereço de memória da variável i, e qualquer alteração nesse i dentro da função modificaria seu valor. Na situação do array é diferente, você deve passar a posição dele para a função (ele seria passado como referência). Então ficaria assim a função "void imprimaraiz(float* array, int posicao)" e para passar os parâmetros imprimaraiz(n,i).
 

OBS na main, o for esta percorrendo fora do array, teria que ser for de 0 ate 4.

Postado

@Pedrok97 Mesmo assim, tirando o '*'do i continua sem funcionar... Lendo alguns conteúdos,  tive a impressão que para a variavel verificar[j] receber a raiz de n tenho de "void imprimaraiz (float n[], float verifica[], int i)". Fazendo isto aparece apenas o seguinte erro. 27   [Error] invalid operands of types 'float' and 'int' to binary 'operator%'. Agora não sei o que fazer.

Postado
#include <stdio.h>
#include <math.h>
#include <stdlib.h>

#define tam 5

void imprimaraiz(int n[]);
int main()
{

    int i;
    int n[tam];

    for (i=0; i<tam; i++)
    {
        printf("Digite o %d valor: \n ",i+1);
        scanf("%d",&n[i]);
    }
    imprimaraiz(n);
    return 0;
}
void imprimaraiz(int n[])
{
    int i;
    for (i=0; i<tam; i++)
    {
        if(fmod(sqrt(n[i]), 1) == 0)
        {
            printf("O numero %d e uma raiz quadrada exata! \n",n[i]);
        }
    }
}

É isso que está tentando fazer?

  • Curtir 1
Postado

Especifique os "erros que acontecem aí" baseado no meu código.

 

Dê exemplos de entrada e saída do seu programa e/ou coloque o enunciado. 

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...