Ir ao conteúdo

C Exercício para incluir dados em arquivo / código


Ir à solução Resolvido por devair1010,

Posts recomendados

Postado

Este é o enunciado do exercício:

Citação

Gravar em um arquivo o nome de 10 pessoas e suas idades. Ler o arquivo e imprimir os nomes e as idades somente das pessoas maiores de idades.

 

O código que criei foi este, porém não está gravando no arquivo os dados...

#include <iostream>
#include <fstream>
using namespace std;

int main() {
  int idade=0, i=0;
  string nome;

  ofstream grava1 ("dados.txt");

  for(i=1;i<=10;i++){
    cout<<"insira o nome da pessoa"<<endl;
    cin>>nome;
    cout<<"insira a idade da pessoa"<<endl;
    cin>>idade;
    }
  
  for(i=1;i<=10;i++){
    cin>>idade;
    if (idade>=18){    
    grava1<<idade<<endl;
    }}
  grava1.close();

  ifstream ler ("dados.txt");
  int idade1=0;
  string nome1;

  for(i=1;i<=10;i++){
    ler>>idade1;
    ler>>nome1;
  }
  ler.close();

return 0;  
}

 

Quem puder me ajudar, agradeço muito!!

  • Obrigado 1
Postado

@elisa_schneider   você precisar criar e abrir o arquivo antes de escrever nele 

#define _WIN32_WINNT 0x600
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <iostream>
#include <fstream>
using namespace std;
int prototipo(int , int , int* );
int main()
{
  HANDLE _h = GetStdHandle(STD_OUTPUT_HANDLE);
  SetConsoleTextAttribute( _h , 15 + (12 << 4 ) );
  int      idade  =  0;
  int      i      =  0;
  int      idade1 =  0;
  string   nome1  = "";
  string   nome   = "";
  ofstream grava1     ;/// objeto arquivo
  grava1.open("dados.txt",std::ios_base::app);
                       /// abre o arquivo grava1
  for( i=0; i<2; i++ ) /// testar com apenas dois
  {
    cout   << "insira o nome da pessoa ";
    cin    >> nome;
    grava1 << nome  << endl; /// já grava
    cout   << "insira a idade da pessoa ";
    cin    >> idade;
    grava1 << idade << "\n" << endl; /// p/ não perder o conteUdo da variaveL
  }
  grava1.close();
  ifstream ler ( "dados.txt" );

  for( i=0; i<2; i++ )
  {
    ler  >>  nome1;
    cout << "Nome ---: " << nome1 << endl;
    ler  >> idade1;
    cout << "Idade --: " << idade1 << "\n" << endl;
  }
  ler.close();
  cout << "\n\n" << endl;
  system("start dados.txt");
  SetConsoleTextAttribute( _h , 7 + ( 0 << 4 ) );
  printf("\n\n\n");
  return 0;
}
int prototipo(int a , int b , int* c )
{
  return 0;
}

 

https://www.clubedohardware.com.br/forums/topic/1562509-como-abrir-um-arquivo-e-mostrar-na-tela-em-c/

Postado
20 minutos atrás, devair1010 disse:

@elisa_schneider   você precisar criar e abrir o arquivo antes de escrever nele 

#define _WIN32_WINNT 0x600
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <iostream>
#include <fstream>
using namespace std;
int prototipo(int , int , int* );
int main()
{
  HANDLE _h = GetStdHandle(STD_OUTPUT_HANDLE);
  SetConsoleTextAttribute( _h , 15 + (12 << 4 ) );
  int      idade  =  0;
  int      i      =  0;
  int      idade1 =  0;
  string   nome1  = "";
  string   nome   = "";
  ofstream grava1     ;/// objeto arquivo
  grava1.open("dados.txt",std::ios_base::app);
                       /// abre o arquivo grava1
  for( i=0; i<2; i++ ) /// testar com apenas dois
  {
    cout   << "insira o nome da pessoa ";
    cin    >> nome;
    grava1 << nome  << endl; /// já grava
    cout   << "insira a idade da pessoa ";
    cin    >> idade;
    grava1 << idade << "\n" << endl; /// p/ não perder o conteUdo da variaveL
  }
  grava1.close();
  ifstream ler ( "dados.txt" );

  for( i=0; i<2; i++ )
  {
    ler  >>  nome1;
    cout << "Nome ---: " << nome1 << endl;
    ler  >> idade1;
    cout << "Idade --: " << idade1 << "\n" << endl;
  }
  ler.close();
  cout << "\n\n" << endl;
  system("start dados.txt");
  SetConsoleTextAttribute( _h , 7 + ( 0 << 4 ) );
  printf("\n\n\n");
  return 0;
}
int prototipo(int a , int b , int* c )
{
  return 0;
}

 

https://www.clubedohardware.com.br/forums/topic/1562509-como-abrir-um-arquivo-e-mostrar-na-tela-em-c/

 

Oi, entendi!
No caso, eu preciso imprimir apenas os nomes das pessoas com mais de 18 anos. Mas se eu incluir o IF, ele não imprime...

  for( i=0; i<2; i++ )
  { if(idade>=18){
    ler  >>  nome1;
    cout << "Nome ---: " << nome1 << endl;
    ler  >> idade1;
    cout << "Idade --: " << idade1 << "\n" << endl;
  }}

 

  • Obrigado 1

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!