Ir ao conteúdo
  • Cadastre-se

C++ programa da faculdade podem me ajudar


Paulo P.C

Posts recomendados

Pessoal quem puder me ajudar fazer um programa que leia 50 notas do teclado e crie três arquivos;
"aprovados.txt"( que ira armazenar as notas digitadas maior ou igual a 7)
"nafinal.txt"(contendo as notas maiores ou igual a 4 e menor que 7)
"reprovados.txt"(nota menores que 4)
Pessoal quem puder me ajudar fazer um programa que leia 50 notas do teclado e crie três arquivos;
"aprovados.txt"( que ira armazenar as notas digitadas maior ou igual a 7)
"nafinal.txt"(contendo as notas maiores ou igual a 4 e menor que 7)
"reprovados.txt"(nota menores que 4)

 

Link para o comentário
Compartilhar em outros sites

devido ao coroana vírus os professores da faculdade devem fechar os semetres essa semana, então tenho até hj para enviar esse arquivo, como sou iniciante no C++, não vou ter tempo para pesquisar e tentar fazer esse programa, pois tenho um seminário para apresentar hj, e prova final de matemática atuarial amanhã. desde já agradeço se puder me ajudar

adicionado 0 minutos depois

#corona

Link para o comentário
Compartilhar em outros sites

@Paulo P.C Vou te dar um exemplo:

// fprintf_numeros.cpp : 
// Exemplo de uso de arquivo.

#include "stdio.h"
#include "stdlib.h"
#include "locale.h"

int main()
{
	FILE *fp;
	double pi = 3.1415;

	setlocale(LC_ALL, "");

	fp = fopen("C:\\Users\\Administrador\\Desktop\\Programas\\Aula_5\\texto_e_numeros.txt", "w");
	fprintf(fp, "Eu sou o PI\n%0.4lf\n", pi);
	fclose(fp);
    return 0;
}

"FILE *fp;" é a declaração da estrutura.

Com "fp=fopen ("diretório","w");", ele vai abrir um arquivo texto para gravação. Se o arquivo não existir, ele será criado, e se já existir, o conteúdo anterior será destruído.

Quando acabamos de usar um arquivo que abrimos, devemos fechá-lo, então usamos a função fclose().

 

É simplesmente isso. Agora, você deve entrar com as notas, usar condições para identificar seus respectivos valores, e inseri-las em arquivos textos diferentes.

 

PS: se como você disse, "os professores da faculdade devem fechar os semestres essa semana", e você não tem condição de concluir uma atividade como essa, repense sua organização em relação aos estudos.

Um aluno normalmente é aprovado sabendo mais de 60% do conteúdo, e se esse é um exercício para testar seu conhecimento, ter que pesquisar para saber resolvê-lo, considerando que ele foi aplicado sabendo que vocês saberiam resolvê-lo, demonstra falta de aprendizado. Não busque só a aprovação, mas saiba revolver o que lhe é proposto.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

seria mais ou menos assim?

#include <studio.h>

#include <stdlib.h>

#include <string.h>

 int main()

  {

ler notas( float n[], int qtd)

  {

int i;

for( i=0; i<qtd; i++){

scanf("%d"; &n[]);

}

Return qtd;

FILE *fp1, *fp2, *fp3;

fp1= fopen("aprovados.txt", "w");

fp2= fopen("reprovados.txt", "w");

fp3= fopen("nafinal.txt", "w");

if(fp==NULL){

printf("Erro de abertura\n");

Return-1

}

adicionado 3 minutos depois

eu estava tentando começar o arquivo assim, vi que o que você me enviou e bem mais avançado, e agradeço!!!!!!

mas você poderia me dizer  se estava indo pelo caminho certo?????

Link para o comentário
Compartilhar em outros sites

6 minutos atrás, Paulo P.C disse:

 int main()

  {

le_notas notas( float n[], int qtd)

  {

int i;

for( i=0; i<qtd; i++){

scanf("%d"; &n[]);

}

Return qtd;

FILE *fp1, *fp2, *fp3;

fp1= fopen("aprovados.txt", "w");

fp2= fopen("reprovados.txt", "w");

fp3= fopen("nafinal.txt", "w");

 

Está no caminho certo mas tem erros muito muito básicos para o último programa do semestre.

 

Entenda que

  • a função lenotas() não pode ficar no meio da outra função, main(). Na verdade é uma função como essa scanf() que você usou aí e poderia nem ter o código nesses arquivo, só o nome. E não pode claro ter espaços no nome da função.
  • O include para a biblioteca padrão, que praticamente TODOS seus programas vão ter, é stdio.h e não studio.h
  • não use esses nomes fp1 fp2 fp3. Sério? Use um nome que faça sentido para que você não precise marcar num papel quem é quem.
  • a chamada de scanf() está errada. %d é para ler inteiros.
  • o problema é claro: vai ler 50 notas. não deve passar a quantidade para a função.
  • deve declarar o vetor em algum lugar. Em main() seria o certo.

 

Veja um exemplo de como pode ser mais simples. Tem umas 15 linhas apenas, exceto pelos comentários que espero que você leia...

#define _CRT_SECURE_NO_WARNINGS

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


void ler_notas(float nota[])
{
    int i;
    for (i = 0; i < 50; i++)
    {
        scanf("%e", &nota[i]);
    }
};  // le_notas()

int main()
{
    // use nomes que facam sentido!!!!!!!!!!!!!
    // fp1 fp2 fp3 ???
    FILE* aprovados = fopen("aprovados.txt", "w");
    FILE* nafinal = fopen("nafinal.txt", "w");
    FILE* reprovados = fopen("reprovados.txt", "w");

    // os arquivos estão abertos. outro dia testamos os ponteiros

    int as_notas[50]; // claro, precisamos gravar as notas em algum lugar

    // temos as notas em 'as_notas'
    // temos a funcao 'le_notas()' que le as notas
    // sem surpresas:
    ler_notas(as_notas); // claro

    // agora o que falta?
    // gravar a nota no arquivo certo e sair para o lanche
    // ok: sem sair de casa

    // vamos ter que ler todas as notas ou nao vamos 
    // saber quais sao. Elas estão em 'as_notas'
    for (int i = 0; i < 50; i += 1)
    {
        // aqui tem as notas uma por uma
        // falta testar quais sao
        // que tal um if()?
        if (as_notas[i] >= 7)
        {
            // grava em aprovados, nao em fp1 fp34535 ou fp34
            // use nomes que fazem sentido
        }
        else
        {
            if (as_notas[i] >= 4)
            {
                // grava em na_final
            }
            else
            {
                // esse ja era
                // reprovado

                // grava em reprovado
            }
        }; // if()
    };
    // fecha os arquivos
    fclose(aprovados);
    fclose(nafinal);
    fclose(reprovados);
}; // main()

 

Para o final do semestre é estranho você escrever algo assim.

 

Escreva de novo para sabermos como está indo.

 

Seja como fizer, o programa tem

  • um loop de leitura
  • abre 3 arquivos
  • um loop de teste das notas com um if dentro para gravar no arquivo certo
  • fecha os 3 arquivos

Só isso

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@Paulo P.C Lembre-se de sempre comentar seu programa, assim todos podem entender o que se passa nele, e isso é bom para no caso de correções, para entendermos onde você quer chegar.

Eu não faria do jeito que está fazendo. Veja isso:

#include "stdio.h"
#include <iostream>
#include "locale.h"
#include "stdlib.h"

int main()
{

    FILE *fp;
    double x, y;
    float nota;
    float qnota;
    int contador;
    
    setlocale(LC_ALL, "");
        
    nota=0;
    contador=1;
    // Perguntar quantas notas serão lidas
    printf("Quantas notas você deseja incluir?\n");
    scanf("%f", &qnota);
  
    // Loop para acrescentar notas
    do{
    
        printf("Coloque a nota %i\n", contador);
        scanf("%f", &nota);
        contador=contador+1;
        fp = fopen("E:\\notas.txt", "a");
        fprintf(fp, "%f\n", nota);
        
    }while(qnota+1>contador);// Irá sair do loop assim que todas as notas forem inseridas
     
    fclose(fp);
    return 0;

}

O "a" permite abrir um arquivo texto para gravação. Os dados são adicionados no fim do arquivo, se ele já existir. Ou um novo arquivo será criado, no caso de arquivo não existente anteriormente.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

1 minuto atrás, Paulo P.C disse:

a cadeira que pago é única  no curso, ou seja " introdução a programação em C++"  não faço curso especifico nessa área,  meu curso e relacionado com matemática , mas gosto do assunto e pretendo me aprofundar nesse estudo

 

Entendo. Muito bom. 

Porque está usando printf() scanf() stdio.h e tal em programas em C++? Talvez seja mais simples em C++. Esses todos são comando de C

Link para o comentário
Compartilhar em outros sites

19 minutos atrás, Paulo P.C disse:

são comandos de um livro de: Luis Damas que estou lendo

 

Bem, são comandos de C. Eu escrevi em exemplo em C que roda como C++ porque é muito simples. Mas é C.

Vou te mostrar uma possibilidade em C++ depois. 

Entendeu que o programa que te mostrei é o seu problema menos 3 linhas? As que gravam?

 

Entenda que o enunciado é um contrato: você não pode fazer menos do que está lá. E se fizer mais pode ter problemas.

adicionado 44 minutos depois

Quando você está testando convém se defender, então ao mesmo tempo em que grava e vai sumir lá até você ver os arquivos pode usar algo assim naquele trecho

        if (as_notas[i] >= 7.)
        {
            // no mundo real testariamos esse w pra ver se gravou certo
            w = fprintf(aprovados, "%3.1f\n", as_notas[i]);
            printf(">= 7 Aprovado com %3.1f\n", as_notas[i]); // depois apagamos
        }
        else
        {
            if (as_notas[i] >= 4.)
            {
                w = fprintf(nafinal, "%3.1f\n", as_notas[i]);
                printf(">= 4 Na final com %3.1f\n", as_notas[i]);
            }
            else
            {
                w = fprintf(reprovados, "%3.1f\n", as_notas[i]);
                printf("<4 Sem chance %3.1f\n", as_notas[i]);
            }
        }; // if()

usando um printf() para ver na tela assim que digitar o dado... E testar com 2 ou 3 porque não faz diferença. Depois você muda para 50.

 

Não caia na tentação de escrever coisas na tela e perguntar coisas e tal. Você tem pressa e não está no enunciado. Entendo a ideia de @Lucca Rodrigues de fazer algo mais interativo, mas vou te mostrar uma razão para não fazer isso agora. E esqueça aquele "a" no modo de abrir os arquivos para gravação naquele exemplo. Isso se chama append mode e vai engordando o arquivo de saída a cada vez que você testa. Estudantes testam o programa 1.432 vezes em média então de nada vai ajudar você ver o resultado de todos os seus testes anteriores nos 3 arquivos...

 

Veja um teste para 5 notas como pode ser simples

 

image.png.547790a05a5843670ccb0964ebcf1da3.png

 

Se estiver no mesmo diretorio onde está o programa pode escrever só nottas e teclar enter, claro...

 

Ao ver as cinco notas já testa suas condições porque você mesmo já as escreveu lá na tela. E para 4 3 2 8 e 0 está ok então está funcionando. Com 5 ou 50 ou 5500 notas.

 

Agora você confere os arquivos gravados
 

image.png.1440bf34488a5b23ed74f7011f473218.png

 

Parece ok certo? Aí você apaga os printf() do programa, troca o 5 por 50 e já era.

 

Mas... Quer testar com 50?

 

Basta NÃO ter feito nada tido escrever na tela e perguntar condições tipo "Deseja continuar?". O programa só lê da entrada padrão e grava nos 3 arquivos então você edita um arquivo, cria 5 linhas com notas dos 3 casos, e  faz o simples: control-A seleciona as 5 linhas, control-C copia as cinco linhas, control-V copia as 5 linhas de novo e já são 10. Control-A seleciona as 10, control_V 4 vezes e serão as 50 e já era...
 

Um trecho do arquivo notas.txt com 10 vezes aquelas 5 notas do teste acima
 

image.png.2f60d5eebc6c7f2185636f301fa4dd96.png

 

Claro, esse milenar comando type mostra na tela o conteúdo do arquivo

 

E então você passa esse arquivo para seu programa...

 

image.thumb.png.df901418d4c0a1890a1fe675f114df35.png

 

Usando esse tal comando '|' que passa a saída de um programa para a entrada do outro

 

E rodou seu programa com 50 notas. Apague os printf() que mostram na tela os resultados, rode de novo pra ter certeza. 

 

É assim

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Esqueci de postar o programa de teste

#define _CRT_SECURE_NO_WARNINGS

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


void ler_notas(float nota[])
{
    int i;
    for (i = 0; i < 50; i++)
    {
        scanf("%e", &nota[i]);
    }
};  // le_notas()

int main()
{
    // use nomes que facam sentido!!!!!!!!!!!!!
    // fp1 fp2 fp3 ???
    FILE* aprovados = fopen("aprovados.txt", "w");
    FILE* nafinal = fopen("nafinal.txt", "w");
    FILE* reprovados = fopen("reprovados.txt", "w");

    // os arquivos estão abertos. outro dia testamos os ponteiros

    float as_notas[50]; // claro, precisamos gravar as notas em algum lugar

    // temos as notas em 'as_notas'
    // temos a funcao 'le_notas()' que le as notas
    // sem surpresas:
    ler_notas(as_notas); // claro

    // agora o que falta?
    // gravar a nota no arquivo certo e sair para o lanche
    // ok: sem sair de casa

    // vamos ter que ler todas as notas ou nao vamos 
    // saber quais sao. Elas estão em 'as_notas'
    int w = 0; //para o retorno de printf() pra ver se gravou
    for (int i = 0; i < 50; i += 1)
    {
        // aqui tem as notas uma por uma
        // falta testar quais sao
        // que tal um if()?
        if (as_notas[i] >= 7.)
        {
            // no mundo real testariamos esse w pra ver se gravou certo
            w = fprintf(aprovados, "%3.1f\n", as_notas[i]);
            printf(">= 7 Aprovado com %3.1f\n", as_notas[i]); // depois apagamos
        }
        else
        {
            if (as_notas[i] >= 4.)
            {
                w = fprintf(nafinal, "%3.1f\n", as_notas[i]);
                printf(">= 4 Na final com %3.1f\n", as_notas[i]);
            }
            else
            {
                w = fprintf(reprovados, "%3.1f\n", as_notas[i]);
                printf("<4 Sem chance %3.1f\n", as_notas[i]);
            }
        }; // if()
    };
    // fecha os arquivos
    fclose(aprovados);
    fclose(nafinal);
    fclose(reprovados);
}; // main()

 

adicionado 3 minutos depois

Ou a versão resumida sem tantos comentários agora que já deve ter entendido...

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void ler_notas(float nota[])
{
    for (int i = 0; i < 50; i++) scanf("%e", &nota[i]);
};  // le_notas()

int main()
{
    FILE* aprovados = fopen("aprovados.txt", "w");
    FILE* nafinal = fopen("nafinal.txt", "w");
    FILE* reprovados = fopen("reprovados.txt", "w");
    float as_notas[50]; // claro, precisamos gravar as notas em algum lugar
    ler_notas(as_notas); // claro
    int w = 0; //para o retorno de printf() pra ver se gravou
    for (int i = 0; i < 50; i += 1)
    {
        if (as_notas[i] >= 7.)
            w = fprintf(aprovados, "%3.1f\n", as_notas[i]);
        else
        {
            if (as_notas[i] >= 4.)
                w = fprintf(nafinal, "%3.1f\n", as_notas[i]);
            else
                w = fprintf(reprovados, "%3.1f\n", as_notas[i]);
        }; // if()
    };
    fclose(aprovados), fclose(nafinal), fclose(reprovados);
}; // main()

HIH

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!