Ir ao conteúdo

Duvidas "C'


Emerson111

Posts recomendados

Postado

Estou fazendo uns exercícios e estou com algumas dificuldades, gostaria que o pessoa me auxiliasse:

"Supondo uma classe de 15 alunos, fazer um programa que recebe e armazena em vetores 2 notas de cada aluno. Verificar se as notas estão no intervalo de 0 a 10. Se não estiverem, insistir para que o usuário digite a nota correta. Calcular a média das notas dos 15 alunos e verificar :

se media >= 7, então imprimir APROVADO

se 4 <= media < 7, então imprimir EXAME

se media < 4, então imprimir REPROVADO."

Fiz o programa abaixo mas não estou sabendo como corrigir os erros:


#include <stdio.h>

int main()
{
{
int not1[15],not2[15],media[15],i=0;

for(i=0;i<15;i++)
{
do{
printf("Digite a primeira nota do aluno numero %d: ",i+1);
scanf("%d",&not1[i]);
if (not1[i]>10 || not1[i]<0)
printf ("Nota invalida, digite novamente novamente.\n");
(not1[i]>10 || not1[i]<0);
}while (not1[i]>10 || not1[i]<0);

do{
printf("Digite a segunda nota do aluno numero %d: ",i+1);
scanf("%d",&not1[i]);
if (not2[i]>10 || not2[i]<0)
printf ("Nota invalida, digite novamente novamente.\n");
(not2[i]>10 || not2[i]<0);
}while (not2[i]>10 || not2[i]<0);
}

{
media[i]=(not1[i]+not2[i])/2;
printf("%d ",media[i]);
}

printf("A media foi: \n %f \n",media);
if(media >= 7){
printf("\nO aluno esta APROVADO\n");
}
if(media >=5){
printf("\no aluno devera fazer novo EXAME\n");
}
else {
printf("\nO aluno esta REPROVADO\n");
}
}

return (0);
}

Preciso fazer um programa para colocar os números na ordem inversa em que foram digitados. Fiz o programa abaixo, ele está funcionado quase que satisfatoriamente. Está colocando os números na ordem inversa, mas o primeiro número que ele colocar é o 12, e só depois ordena os demais números, penso que o erro esteja nessa linha for(num=12;i>=0;i--)


#include <stdio.h>


int main()
{
int num[12];
int i;

for(num[i]=0;i<12;i++)
{
printf ("Digite um numero: ", i);
scanf("%d",&num[i]);
}

printf ("Os numeros na ordem inversa sao:\n");
for(num[i]=12;i>=0;i--)
{
printf ("%d\n", num[i]);
}

return (0);
}

Como fazer um programa que "Ler 10 elementos de um vetor e colocá-los na ordem crescente." Fiz um código, mas ele tem erro que não sei como corrigir.


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

int main()
{

int num[10];
int i;
int aux;
int parar= 0;


for(num[i]=0;i<10;i++)
{
printf ("Digite um numero: ");
scanf("%d",&num[i]);
}

while (parar=0)
{
parar=1;

for(num[i]=0; i<9; i++)
{

if (num[i]>num[i+1])
{
parar=0;
aux=num[i];
num[i]=num[i+1];
num[i+1]=aux;
}
}
}
for(num[i]=0;i<10;i++)
printf ("A ordem dos numeros digitados é: %d", num[i]);

getch ();
return (0);

}

Destes, esse é o que eu menos sei como fazer: "Considerando como dados armazenadas num vetor, as notas de uma determinada turma em uma prova, escreva um programa que imprima as notas que estão acima da média das notas."


#include <stdio.h>

int main()
{
int media[10];
int nota[10];
int i=0;

{
for(i=0;i<10;i++)
{
printf ("Digite uma nota: ");
scanf("%d",&nota[i]);
}

}
{
media[1]=nota[1]/2;
printf ("A média da turma é %d: ", media[10]);
}

return (0);
}

Escreva um programa que (a) armazena (num vetor) um conjunto de 12 números inteiros, (B) lê e substitui todos os valores nulos por 1.


#include <stdio.h>

int main()
{
int a[5];
int b[5];
int i=0;

{
for(i=0;i<5;i++)
{
printf ("Digite um numero: ");
scanf("%d",&a[i]);
}

if (i=0){
i==1;
}

b[5]= a[5];
printf ("Os numeros digitados sao: %d\n", b[i]);
}
return (0);
}

Postado

1º:

Está com dois abre-chavesapós a declaração da função main();

Após a verificação se o número digitado é válido, você colocou uma expressão lóica solta alí;

Ao verificar se o número é válido, você deve usar o '&&' ao invés de '||';

Você colocou chaves entre o cálculo de média sem motivo aparente, e tal cálculo está fora do laço;

O mesmo vale para a checagem das médias e exibição da aprovação/reprovação do aluno. Está fora de um laço.

2º:

O erro ocorre porque você inicializa num=12.

'i' é a variável de controle do laço anterior, ela possui o valor 12 ao chegar no segundo laço.

Ao inicializar num[12] com o número 12, além de não servir para seu propósito, você estará acessando um local não reservado da memória, pois vetores de 12 posições vão da posição zero até a posição onze.

O correto é inicializar a variável de controle ('i') com 11.

3º:

A leitura de dados está incorreta, o mesmo erro do exercício anterior:


for(num[i]=0;i<10;i++)

Quando você atribui um valor à num, você está atribuindo ao elemento 'i' do vetor. Não é isso que você quer. Você estará usando a variável 'i' para controlar o laço, portanto, deve inicializar ela.

Além disso, quando você faz


while (parar=0)

você está atribuindo o valor zero à variável 'parar'. O operador de igualdade é o

==

Me parece um Bubble Sort, certo?

A maneira correta de se fazer ele seria


while (parar == 0){
parar = 1;
for(i = 0; i < 9; i++){
if(num[i] > num[i+1]){
parar = 0;
aux = num[i];
num[i] = num[i+1];
num[i+1] = aux;
}
}
}

Obviamente, a variável 'parar' deve ser inicializada com zero antes dessa ordenação.

Corrija a inicialização das variáveis de controle dos laços.

4º:

O exercício não fala de quantas notas deve ser, mas consideremos 10.

Você deve descobrir qual a média aritmética das notas. Armazene-a em uma variável.

Após, percorra novamente o vetor de notas fazendo comparações. Se a nota for superior á média, exiba-a.

Lembre-se que provavelmente a média será float.

5º:

Valores nulos são iguais a zero. Portanto, leia os valores, e percorra novamente comparando.

Lembrando que o operador '=' é um operador de atribuição, não igualdade. O operador de igualdade é o '=='.

Em seu algoritmo, você sequer comparou o elemento do vetor... você comparou a variável 'i', que servia para controlar o laço. Além disso, o if irá comparar apenas um elemento se estiver fora de um laço.

Ah, e é um único vetor, não dois.

Poste o progresso.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!