Ir para conteúdo
Fórum Script Brasil
  • 0

Duvidas "C'


Emerson111

Pergunta

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 são:\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 são: %d\n", b[i]);
}
return (0);
}

Editado por Emerson111
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá, segue a resolução do primeiro exercicio que você postou. Seria interessante que você colocasse da próxima vez, uma dúvida por tópico, ao invés de postar varios exercicios em um mesmo...

Você estava se perdendo na hora de fazer a média, precisava fazer um laço de repetição, pois do jeito que estava fazia apenas a media de 1 aluno.

Percebi também que tinha "chaves" a mais no seu código, Identação é fundamental para não se perder durante o desenvolvimento.

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

int main(){

  int not1[15],not2[15],i,media[15],j;
  

  
//inseri 1 nota do aluno 
 for(i=0;i<15;i++)
 {  
        printf("Digite a primeira nota do aluno numero %d:",i+1);
        scanf("%d",&not1[i]);                
 }                        
                       
 //inseri 2 nota do aluno 
 for(i=0;i<15;i++)
 {  
       printf("Digite a segunda nota do aluno numero %d: ",i+1);
       scanf("%d",&not2[i]);                
 }      
                    
 //calcula media do aluno: 
 for(i=0;i<15;i++)
 {  
    printf("\n");              
    media[j]= (not1[i]+ not2[i]) /2;
    printf("Aluno: %d\n",i);
    printf("Media: %d\n",media[j]);
    if(media[j] >= 7){
       printf("Aprovado\n");}       
    if(media[j] >=4 || media[j] >=7){
       printf("Exame\n");}
    if(media[j] < 4){
       printf("Reprovado\n");}                       
    printf("\n");
 }

   system("pause"); 
   return (0);

}//main

Editado por Prog_Junior
Link para o comentário
Compartilhar em outros sites

  • 0

Abaixo, segue resolução do exercicio numero 2 postado. Leia com atenção as dicas do mJi, que são sempre valiosas e construtivas.

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

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

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

printf ("Os numeros na ordem inversa são:\n");

for(i=11;i>=0;i--)
{
  printf ("%d\n", num[i]);
}


system("pause");
return (0);

}//main

Editado por Prog_Junior
Link para o comentário
Compartilhar em outros sites

  • 0

Segue abaixo uma das maneiras de fazer a ordenação dentro do vetor:

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

 int main () {
     
     int vetor[10],aux,j,i;
          
     for(i=0;i<10;i++){
       printf("Digite %d valor:",i+1);
       scanf("%d",&vetor[i]);}
          
     
     for(i=0;i<10;i++)
     {
        for(j=0;j<9;j++)
        {
               if(vetor[j] > vetor[j+1])/*se a posição atual for maior que a posição posterior*/
               {
                  aux=vetor[j+1];//auxiliar recebe posição posterior
                  vetor[j+1]=vetor[j];//P.Posterior recebe P.Atual
                  vetor[j]=aux;//P.Atual
               }   
        }         
     }
        
      printf("vetor ordenado:");    
      for(i=0;i<10;i++){ 
      printf("\n");   
      printf("%d",vetor[i]);}
        
      printf("\n");
      system("pause");
     
} //main

Link para o comentário
Compartilhar em outros sites

  • 0

Referente ao exercicio 4 postado, como você não informou a quantidade de notas da turma e nem a média, levei em conta, os seguinte dados:

total de notas = 5;

media = 6;

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

int main (){
        
    int vetor[5] = {10, 8, 9, 7, 4};
    int i;
    
    for(i=0;i<5;i++)
    {
        if(vetor[i] > 6){
          printf("Notas Acima da Media: %d\n",vetor[i]);
          }
    } 

 system("pause");    
 return 0;   
    
}//main
E por ultimo o exercicio 5, espero que possa ter te ajudado. Feliz Natal.
#include<stdio.h>
#include<stdlib.h>


 int main() {
     
     
    int v[12],i; 
    
     //preenche o vetor 
     for(i=0;i<12;i++){
       printf("Informe %d numero:",i+1);
       scanf("%d",&v[i]);}    
    
        
     //verifica se existe numero nulo(zero) no vetor
     for(i=0;i<12;i++){
         if(v[i] == 0){
         v[i] = 1;}
     }
     
     //imprime vetor
        for(i=0;i<12;i++){
        printf("Vetor: %d\n",v[i]);}
        
   system("pause");
   return 0;     
        
}//main

Editado por Prog_Junior
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...