Olá, Eduardo. Estive assistindo algumas de suas video aulas e gostaria de pedir que fizesse um video sobre filas e pilhas em linguagem C, pois estou tendo estrutura de dados na faculdade e tenho muita dificuldade nessa matéria. Abraços!
E um adendo: Sei que o objetivo aqui é exemplificar o uso de ponteiros, mas podemos fazer o mesmo código sem os mesmos facilmente, como por exemplo: #include #include float media(int n, float vnotas[]); // protótipo int main() { float media_numeros; float vnotas[10]; printf("Calculando a média de 10 números sem usar ponteiros como parâmetros de função: "); for (int i = 0; i < 10; i++) { printf("Digite o %dº número: ", i); scanf("%f", &vnotas[i]); } media_numeros = media(10, vnotas); printf("A média é: %.1f ", media_numeros); return 0; } float media(int n, float vnotas[]) { int i; float media, soma = 0.0; for (i = 0; i < n; i++) { soma = soma + vnotas[i]; } media = soma / n; return media; }
Certo, mas ai você está passando o tamanho do vetor para fazer o loop; como fazer calcular o tamanho do vetor dentro da função, sem passar o tamanho por parâmetro? Lembrando que o cálculo do tamanho do vetor com sizeof() somente funciona dentro da variável local.
Exatamente o que eu ia comentar. Esse exemplo dele foi para fins didáticos, mas deve ser evitado. Uma função não deve saber nada sobre o que ocorre fora dela. Esse exemplo parte do pressuposto que n é sempre a quantidade de elementos do vetor, o que pode não ser verdade e vai dar erro ao fazer o loop. O correto seria que a função calculasse o tamanho do vetor, e não recebesse por parâmetro.
#include #include //passa um vetor para a funcao float media ( int n, float *vnotas); int main(void) { float vnotas[10]; float media_notas; int i;
// leitura das notas for (i = 0; i < 10; i++) { printf("Digite os valores das notas: "); scanf("%f", &vnotas[i]); } //chamada da funcao media_notas = media(10, vnotas);
printf(" Media das notas = %.1f", media_notas);
system("pause"); return 0; } // funcao para o calculo da media float media(int n, float *vnotas) { int i; float m = 0, soma = 0;
Professor, ótimo vídeo. Estou para fazer um projeto da faculdade, em C, porém estou em dúvida em algumas coisas, podendo passar o e-mail para nos comunicamos agradeceria.
Professor tu é o cara, explica muito bem ! Muito obrigado.
#MELHORQUEOCARROLA
Olá, Eduardo. Estive assistindo algumas de suas video aulas e gostaria de pedir que fizesse um video sobre filas e pilhas em linguagem C, pois estou tendo estrutura de dados na faculdade e tenho muita dificuldade nessa matéria.
Abraços!
se souber minha duvida pode tirar pfv
UP, eu tambem estooou faz pelo amor de Deus so entendo com esse cara
Muitos bom obrigado o PDF da faculdade tá bugado duplicaram o quadro do exercício resolvido e apagaram justamente o que explicava isso
Por que usar ponteiro em vetor se funciona normalmente sem o ponteiro?
Show, como sempre.
Valeu 😀
Excelente, só acho que utilizar o mesmo nome do vetor para o ponteiro deixou um pouco confuso.
Mas nesse você estaria varrendo o vetor na main?
E um adendo: Sei que o objetivo aqui é exemplificar o uso de ponteiros, mas podemos fazer o mesmo código sem os mesmos facilmente, como por exemplo:
#include
#include
float media(int n, float vnotas[]); // protótipo
int main() {
float media_numeros;
float vnotas[10];
printf("Calculando a média de 10 números sem usar ponteiros como parâmetros de função:
");
for (int i = 0; i < 10; i++) {
printf("Digite o %dº número: ", i);
scanf("%f", &vnotas[i]);
}
media_numeros = media(10, vnotas);
printf("A média é: %.1f
", media_numeros);
return 0;
}
float media(int n, float vnotas[]) {
int i;
float media, soma = 0.0;
for (i = 0; i < n; i++) {
soma = soma + vnotas[i];
}
media = soma / n;
return media;
}
Duvisa besta, o que seria esse prototipo da função que vem antes do main? É obrigatório colocar ele? porque eu nunca uso
funciona com vetor de char também? exemplo: char[] []
Porque quando usamos 1 vetor n precisa referenciar o ponteiro com * dentro da função e com umas simples variável
precisa ?
Certo, mas ai você está passando o tamanho do vetor para fazer o loop; como fazer calcular o tamanho do vetor dentro da função, sem passar o tamanho por parâmetro?
Lembrando que o cálculo do tamanho do vetor com sizeof() somente funciona dentro da variável local.
Exatamente o que eu ia comentar. Esse exemplo dele foi para fins didáticos, mas deve ser evitado. Uma função não deve saber nada sobre o que ocorre fora dela. Esse exemplo parte do pressuposto que n é sempre a quantidade de elementos do vetor, o que pode não ser verdade e vai dar erro ao fazer o loop. O correto seria que a função calculasse o tamanho do vetor, e não recebesse por parâmetro.
Olá, posso enviar mais de um vetor como ponteiro a função? Desde já agradeço.
Olá pode sim, basta criar um parâmetro com ponteiro para cada vetor que você for passar. Bons estudos!
#include
#include
//passa um vetor para a funcao
float media ( int n, float *vnotas);
int main(void)
{
float vnotas[10];
float media_notas;
int i;
// leitura das notas
for (i = 0; i < 10; i++)
{
printf("Digite os valores das notas: ");
scanf("%f", &vnotas[i]);
}
//chamada da funcao
media_notas = media(10, vnotas);
printf("
Media das notas = %.1f", media_notas);
system("pause");
return 0;
}
// funcao para o calculo da media
float media(int n, float *vnotas)
{
int i; float m = 0, soma = 0;
//somatoria
for(i = 0; i < n; i++)
soma = soma + vnotas[i];
// dividindo pela quantidade de elementos n
m = soma/n;
//retorna media
return m;
}
hahah salvou vidas.
Professor, ótimo vídeo. Estou para fazer um projeto da faculdade, em C, porém estou em dúvida em algumas coisas, podendo passar o e-mail para nos comunicamos agradeceria.
se souber minha duvida pode tirar pfv
Na verdade o vetor esá sendo passado por valor, não é mesmo? e não por referência.
#MELHORQUEOCARROLA
#MELHORQUEOCARROLA