Use of pointers

1

I need to use pointers, but I do not understand how to express the syntax, it is part of the purpose of the task (change the value of the parameters passed by reference to the functions, such that these variables are printed in main ()). >

 #include <stdio.h>
 #define MAX 3

 void busca_menor( float *notas, float tam)
{
int i;
float m, valor;
m=notas[0];

for(i=0; i<tam; i++)
{
    if (notas[i]<m)
    {
        m=notas[i];
    }
}
 }

 int main()
{

int i;
float notas[MAX], valor;
printf("Informe a nota de 3 alunos: ");

for (i=0; i<MAX; i++)
{
    scanf("%f", &notas[i]);
}

busca_menor(notas, MAX);
printf(" A menor nota foi: ");
printf("%2.f", MAX);

}

    
asked by anonymous 16.11.2015 / 02:50

1 answer

2

I've said a few times that organizing the code helps understand what's going on. Besides being difficult to understand, nonsense names make it difficult to know where you want to go. Also, the displayed code has nothing to do with pointers. You are using array .

#include <stdio.h>
#define MAX 3
//se a função estabelece qual é a menor nota, ela deve retorná-la, a nota é do tipo float
float menor_nota(float valor[MAX]) { //se passa um array, receba um array, não um ponteiro
    int i; //não precisava declarar aqui, pode ser no for, mas deixa pra lá
    float menor = valor[0]; //dê nome ao que a variável realmente é
    for (i = 1; i < MAX; i++) { //é mais fácil de ler assim
        if (valor[i] < menor) { //sintaxe errada e operador errado, de acordo com a função
            menor = valor[i];
        }
    }
    return menor; //retorna a menor nota, olha que intuitivo quando dá nome correto
 }

int main() {
    int i;
    float notas[MAX];

    printf("Informe a nota dos 30 alunos: ");

    for (i = 0; i < MAX; i++) {
        scanf("%f", &notas[i]);
    }
    //imprme a MENOR nota e não maior. O tipo é float e não int
    printf("\n A menor nota foi: %2.2f", menor_nota(notas)); //imprime resultado da função
}

See running on ideone .

If you wanted to use pointers, you should do this from the beginning. You could even use pointer in the parameter, but it does not make sense in this case. If you want to use it, you can , it is not wrong, but it is not suitable in this case. Yet the errors are not related to pointers, they are syntax, oversight, and algorithm errors.

This way it makes more sense to use pointer .

Read more about the subject .

    
16.11.2015 / 03:33