-
Total de itens
884 -
Registro em
-
Última visita
Tudo que vangodp postou
-
Não se preocupe, espero que tenha sido de ajuda nosso aporte. ;)
-
E porque você não coloca o código aqui do que leva feito para poder dizer o que tem de errado?
-
int i; for(i=50; i<91; i++){ if ( i%2 != 0){ printf("%d, " i); } }
-
#include<stdio.h> #include<stdlib.h> #include<locale.h> int main () { setlocale ( LC_ALL, "portuguese" ); int i = 0, tamanho = 0, *array = NULL, acumulador = 0; printf ( "Numero de sessões: " ); scanf ( "%d", &tamanho ); array = (int*)malloc(sizeof(int)*tamanho); for (i=0;i<tamanho ;i++ ) { printf ( "array[%d]: ", i ); scanf("%d", &array[i]); acumulador += array[i]; } //printf ( "total de %d que /2= %lf \n", acumulador, acumulador/(double)2 ); int pontoJusto = 0; i=0; while ( ((pontoJusto+=array[i])!= (acumulador/2)) ){ i++; } printf("\nA posição do vetor ocorreu divisão é: array[%d]\n\n", i); free(array); getchar(); return 0; }
-
Aqui te deixo uma prova da forma correta vs a forma errada de fazer a comprovação do fim do arquivo: #include <stdio.h> #include <stdlib.h> #include <string.h> int main (){ //vamos gravar isto no arquivo para fazer provas char Lista[10][25] = { "Karla","Reyna","Ana" ,"Gina" ,"Estela", "Joan" ,"Mario","Enrique","Maria","Margo" }; int i; //size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream ); //size_t fread ( void * ptr, size_t size, size_t count, FILE * stream ); FILE *f = fopen("feof.txt", "w"); if ( !f ){ perror("Erro: "); getchar(); exit(EXIT_FAILURE); } i=0; while ( i<10 ){ fwrite ( &Lista[i++], 25, 1, f ); } fclose(f); //Correto... Agora que temos um arquivo com 10 nomes vamos ler usando //feof e fread para ver o funcionamento de ambos. f = fopen("feof.txt", "r"); char ListaVazia[10][25] = {0}; i=0; printf("Forma correta de ler um arquivo.\n"); while ( fread( &ListaVazia[i], 25, 1, f ) != 0 ){ printf("%s\n", ListaVazia[i]); i++; } // primero com fwread memset(ListaVazia, '\0', 25*10); //limpamos a memoria de ListaVazia(tudo a nulos). printf("\nForma ERRADA de ler um arquivo.\n"); rewind(f); i=0; int flag = 0; while ( !feof(f) ){ // Agora vamos usar feof para ver o erro, veremos que ele tenta ler uma vez a mais depois do fim do arquivo fread( ListaVazia[i], 25, 1, f ); printf("%s\n", ListaVazia[i] ); //leitura segura nao podemos pasar de aqui if( i < 9 ){ i++; } } fclose(f); printf("\nRepetiu a ultima? Entao falhou!!XD\n\n"); getchar(); return 0; }Comprove ela e me diga depois que você acha? Os livros e os professores nos enganam? Provavelmente XD ;) Essa é a forma correta de usar feof: http://www.cplusplus.com/reference/cstdio/feof/ Eu deixo aqui a mesma forma modificada para ler o arquivo gerado pelo outro programa anterior para que você faça uma ideia. Tenha certeza que falha a lógica não a função. /* feof example: byte counter */ #include <stdio.h> int main () { FILE * pFile; int n = 0, nLetras = 0; pFile = fopen ( "feof.txt", "rb" ); char Ch; if ( pFile == NULL ) perror ( "Error opening file" ); else { while ( (Ch = fgetc( pFile )) != EOF ) { ++n; printf("%c", Ch); nLetras++; if( nLetras==25 ){ printf("\n"); nLetras = 0; } } if ( feof ( pFile ) ) { puts ( "\nEnd-of-File reached." ); printf ( "Total number of bytes read: %d\n", n ); } else puts ( "End-of-File was not reached." ); fclose ( pFile ); } return 0; }Busque por internet como usar feof corretamente, certamente tem muitas paginas que te podem explicar com muito mais detalhes que eu, pois eu sou somente um programador a mais do montão. XDDD
- 3 respostas
-
- linguagem c
- trabalho
- (e %d mais)
-
Nem idéia... sua explicação é pouco clara.
-
E qual o problema?
-
Por que você usa feof para condiçao do while? Isso ta errado, falha a lógica. feof é um tipo de flag que somente se ativa quando a ultima leitura falhou. Imaginamos que temos que ler varias linhas em um arquivo, funciona assim: wile ( feof...) //ok.. não tem falho vamos supor que já tínhamos feito leituras anteriores e tudo ok fread(... // fread lê a penultima linha do arquivo, ao feof continua emitindo true, pois feof somente vai dar falso si a ultima leitura falha. wile ( feof...) //ok não tem falho a ultima leitura foi bem feita fread // fread lê a ultima linha se supõe que nesse ponto feof deveria ter emitido falso na seguinte interação, mas não é assim... wile ( feof...) //ok não emite falso a ultima leitura foi bem sucedida fread // fread tenta ler uma linha a mais no seu arquivo, ao não poder, pois agora ele atingio o EOF, agora ele passa ao feof a mensagem de que emita um false, mas você já tentou ler algo que possa ter sentado mal ao seu programa. você deveria usar o próprio valor de retorno de fread, pois ele devolve EOF ou seja -1 justo ao atingir o fim do arquivo. prove ler varias linhas de um arquivo com feof e proceda a ir imprimindo elas, você pode constatar que o programa vai imprimir a ultima linha 2 vezes pois como ele não leu a por que atingiu o EOF imprimirá a ultima repetida. Prove isso e me diga. while (fread (...) != EOF){...
- 3 respostas
-
- linguagem c
- trabalho
- (e %d mais)
-
getch retorna um int, quando você tem case '1': você deveria ter case 1:. Em origem=getch(); origem deve ser um int, ou tambem você pode forçar a que getch devolva chars fazendo casts, tipo char origem=(char)getch(); mas aí os case seriam case 'a': case 'b': etc...
-
vetor= aux; está mal. vetor é considerado um ponteiro que aponta a primeira posição do vetor, ao fazer vetor= aux; você esta tentando fazer o vetor apontar a outra parte da memoria do seu computador. A forma correta é vetor= aux; Arrume isso e poderá continuar seu código desde esse ponto sem erros, o resto não olhei pois é sua a pratica. XD
- 1 resposta
-
- c
- metodosdeorenacao
- (e %d mais)
-
Ajuda em Classes,e para abrir o programa e executalo
pergunta respondeu ao Leonardo Prass de vangodp em C, C++
passos... Crie um projeto vaziocrie un novo arquivo, codeblocks vai perguntar si você deseja salvar primeiro, responda sim e escolha a pasta, os 3 devem ficar juntos na mesma pasta. Logo ele perguntará si quer incluir ele no debug e no release, almenos você deve escolher debug, si tiver duvida escolha as duas, isso você pode mudar depois em project/properties/build Targuets, e no quadro do build targets files, ou incluso escolhendo com o botão direito do mouse mouse em cada um dos arquivos na lista da esquerda, e escolhendo options, e marcando compile e link, também você pode clicar no properties e build, ai te da la opçao de marcar compilar e linkar.Todos os .cpp devem estar marcados como build e link. Os .h você pode deixar sem marcar a opção build, você já faz ela manualmente quando você faz o include. Si você quer adicionar um arquivo já feito no seu programa, pega ele na pasta do projeto e clique nele com o botão direito do mouse e escolha "add file to active project", marque como build e link igual como comentei. Outra forma é clickar no icone do projeto e escolher add files ou add files recursivamente, desse jeito deixa adicionar muitos arquivos ao mesmo tempo. Si tiver duvida acho melhor te explicar pelo skype ou outro tipo de chat por que por aqui não sei o que você esta fazendo. O que eu te passei é um arquivo já configurado, é só você abrir o arquivo que termina em .cbp que é o que se encarga de configurar tudo, porem meu compilador é outro não será o mesmo que o seu, então você deve ir ao icone projetcts/properties.. e escolher o icone da esquina inferior direita "Project's build options...", e onde esta Selected compiler, configurar o seu compilador. Como eu falei, explicar essas coisas por aqui é bem difícil, eu uso uma configuração meia especial de compilador mingw32-w64 junto con codeblocks nightly, e por isso não deve estar funcionando. -
Ajuda em Classes,e para abrir o programa e executalo
pergunta respondeu ao Leonardo Prass de vangodp em C, C++
prove agora. projeto.rar -
Ajuda em Classes,e para abrir o programa e executalo
pergunta respondeu ao Leonardo Prass de vangodp em C, C++
Projeto.rar -
Acontece mais do que você pode pensar, faça sempre o que ele diz, mas tenha claro que seu professor se formou quando os monitores ainda eram de fósforo, na época do catapum chimpum, muito coisa mudou desde então.>_< O fato é que C/C++ não tem uma forma padrão para limpar o buffer, a única forma de limpar, é lendo os tais caracteres, para isso existe uma soluçao muito interesante circulando por internet que você pode usar e ela funciona na maioria(si não en todos) os sistemas operativos. Se trata disso: //funcion que vacia el buffer void flush_in() { int ch; while ( ( ch = fgetc ( stdin ) ) != EOF && ch != '\n' ) {} } Em C++ você pode invocar a cin.sync(); logo depois de usar o stdin e funciona muito bem.
-
Perguntar si podemos ajudar é como entrar na padaria e perguntar si tem pão. Exponha sua duvida.
- 2 respostas
-
- jogos
- biblioteca
-
(e %d mais)
Tags:
-
Algorítimo em C com Arquivos de Texto, Vetores e Funções
pergunta respondeu ao Dejair Junior de vangodp em Grupo de Estudos
#include <stdio.h> #include <stdlib.h> typedef struct { int nSemana; int diaSemana; int hora; int nCarros; int nMotos; int nCaminhoes; }Dados; int main (){ Dados d; FILE *f = fopen("dados_coletados.txt", "r"); if ( f == NULL ){ perror("Erro"); getchar(); return 1; } while( fscanf(f,"%d %d %d %d %d %d%*c", &d.nSemana, &d.diaSemana, &d.hora, &d.nCarros, &d.nMotos, &d.nCaminhoes ) != EOF ){ //Processar printf( "%d %d %2d %2d %2d %2d\n", d.nSemana, d.diaSemana, d.hora, d.nCarros, d.nMotos, d.nCaminhoes ); } fclose(f); getchar(); return 0; }Esse código lê completamente o arquivo dados_coletados.txt, depois disso você só precisa usar contadores para ir obtendo os dados. por exemplo, para obter os dados dos carros passados cada dia da semana você vai precisar de um vetor de inteiros tipo int nCarrosDia[7];, esse vetor vai guardar o total de carros durante uma semana. Nós sabemos que são 5 semanas, então podemos ter uma matriz em vez de um vetor, tipo int nCarros[5][7] (5 semanas de 7 dias). Si queremos contar os carros da segunda feira da semana 2 seria nCarros[1][0]++; por cada carro que passe esse dia. você vai precisar de algo parecido para motos e caminhões também, você pode agrupar tudo isso baixo uma estrutura, algo como: #include <stdio.h> #include <stdlib.h> #define SEMANAS 5 #define DIAS 7 typedef struct { int nCarros [DIAS]; int nMotos [DIAS]; int nCaminhoes[DIAS]; }Contadores; int main (){ Contadores semana[SEMANAS] = {0}; // 5 semanas por 7 dias = um mes //contar 2 carros quarta feira da semana 3: semana[2].nCarros[2]++; semana[2].nCarros[2]++; printf ( "Quarta feira da semana numero 3 passaram %d carros.", semana[2].nCarros[2] ); getchar(); return 0; } Vou deixar um exemplo que diz todos os carros que passaram durante a encosta: #include <stdio.h> #include <stdlib.h> #define SEMANAS 5 #define DIAS 7 #define HORAS 24 typedef struct { int nSemana; int diaSemana; int hora; int nCarros; int nMotos; int nCaminhoes; }Dados; typedef struct { int nCarros [DIAS][HORAS]; int nMotos [DIAS][HORAS]; int nCaminhoes[DIAS][HORAS]; }Contadores; FILE *fileOpen(); int main (){ Contadores semana[SEMANAS] = {0}; // 5 semanas por 7 dias = um mes Dados d; FILE *f = fileOpen(); int allCar = 0; //lemos o arquivo e guardamos os numeros no array de structs Contador chamado semana. while( fscanf(f,"%d %d %d %d %d %d%*c", &d.nSemana, &d.diaSemana, &d.hora, &d.nCarros, &d.nMotos, &d.nCaminhoes ) != EOF ){ //Processar allCar += d.nCarros; // para comparar com contadorCarros e ver si bate o resultado, teoricamente é a mesma coisa, só que aqui obtenho o resultado desde o ficheiro, e mais abaixo desde a memoria. semana[ d.nSemana-1 ].nCarros [d.diaSemana-1][d.hora] += d.nCarros; //semana[ d.nSemana-1 ].nMotos [d.diaSemana-1][d.hora] += d.nMotos; //semana[ d.nSemana-1 ].nCaminhoes[d.diaSemana-1][d.hora] += d.nCaminhoes; } //Agora posso fazer coisas como contar o numero total de carros que passaram int s, _d, h, contadorCarros=0; for ( s = 0; s < SEMANAS; s++ ){ for ( _d = 0; _d < DIAS; _d++ ){ for ( h = 0; h < HORAS; h++ ){ contadorCarros += semana[ s ].nCarros [_d][h]; //printf ( "carros semana[%d] dia[%d] hora[%d]: %d\n", s, _d, h, contadorCarros ); } } } //informar o numero total de carros desde a memoria printf ( "Todos os carros que passaram = %d(memoria) \n\n", contadorCarros); //informar o numero total de carros desde o arquivo para comparar com o resultado anterior //printf ( "Todos os carros que passaram = %d(arquivo) \n\n", contadorCarros); fclose(f); getchar(); return 0; } FILE *fileOpen(){ FILE* f = fopen("dados_coletados.txt", "r"); if ( f == NULL ){ perror("Erro"); getchar(); exit(1); } return f; }Como você pode ver, uma vez obtido os números desde o arquivo, você pode fazer o que quiser com ele, para obter o numero de carros total eu somei todos os carros que passaram em um contador durante as 5 semanas todos os 7 dias e 23 horas cada dia. isso me da o total de carros que passaram, para obter uma media deveria dividir esse números devidamente para obter o resultado. Mas as mates se me dão fatal hahaha, igual que a língua portuguesa. XD Tente fazer seu código em base a esse si precisar de algo vai expondo aqui suas duvidas. Sorte.- 15 respostas
-
- fprintf( )
- fscanf( )
- (e %d mais)
-
Aqui deixo o que acho que esta correto: #include <stdio.h> #include <stdlib.h> int main (){ int i = 0, z = 0, unidade = 0; int casas= 5; int pacotes= 5; //int casa[] = { 1, 5, 10, 20, 40}; //int pacote[] = {10, 20, 10, 40, 1}; printf ("Infrme o numero de casas: "); scanf ( "%d%*c", &casas ); printf ("Infrme o numero de pacotes: "); scanf ( "%d%*c", &pacotes ); int *casa = (int*)malloc( casas*sizeof( int ) ); int *pacote = (int*)malloc( pacotes*sizeof( int ) ); printf("\n"); while ( i < casas ){ printf ("Casa %d/%d: ", i+1, casas); scanf("%d%*c", &casa[i]); i++; } printf("\n"); i = 0; while ( i < pacotes ){ printf ("Pacote %d/%d: ", i+1, pacotes ); scanf("%d%*c", &pacote[i]); i++; } i=0; while ( i < pacotes ){ if ( pacote[i] == casa[z] ){ //nada }else if ( pacote[i] > casa[z] ){ while ( pacote[i] != casa[z] ){ unidade++; z++; } }else{ while ( pacote[i] != casa[z] ){ unidade++; z--; } } i++; } printf ("\nTempo em unidades: %d", unidade); free(casa); free(pacote); getchar(); return 0; }
-
A primeira questão é um pouco estupida acho. "Cansado de subir e descer aquela rua tantas vezes, nosso amigo quer mostrar à empresa quanto ele leva para entregar as encomendas, na tentativa de derrubar essa politica." Tá mais a empresa já não sabe quanto tempo ele leva pra fazer o trajeto? Ou ele quer demostrar o trajeto fazendo ordenadamente? Isso é um pouco confuso acho, ao parecer que ele quer mostrar o tempo que ele leva fazer isso na ordem que vão chegando os pacotes pois esses chegam de forma desordenada, ou seja "10 20 10 40 1", o programa não só é um loop que vai para frente, por exemplo vamos supor que já entregamos 2 pacotes, o 10 e o 20, agora temos que entregar o pacote 10 novamente. Vamos ter que voltar? E si estamos na entrega 40, a seguinte é a 1. Vamos ter que voltar passando por todas as casas e somando uma unidade de tempo por cada uma delas? Tudo muito confuso isso viu -_-'
-
não tem ciência... quando você precisar ler, guardar ou pesquisar, você cria um fstream (file stream), os streams de arquivo podem ser de 3 tipos, entrada(ifstream, ou input stream), saida(ofstream, ou output stream) ou fstream que serve para ambos. O primeiro parametro é o nome do arquivo, porem o nome deve ser um string de C, tipo char nome[100] = "arquivo.txt";, o segundo parâmetro são os flags que modificam o tipo de leitura do arquivo. Se eu quero ler desde o arquivo eu crio um ponteiro tipo ifstream que é de entrada, ou seja a entrada se produzirá desde o arquivo en vez do teclado. então eu faço: ifstream fin( "arquivo.txt" ); Com isso agora eu posso usar fin igual que cin, si com cin eu tivesse que ler um nome eu faço cin >> nome;, vamos supor que no arquivo tem uma só linha na qual tem um nome, "Gilberto" por exemplo., é só fazer fin >> nome; e agora "Gilberto" vai parar em nome que claramente deve ser um string ou char[]. É muito importante você fechar o arquivo rapidamente ao terminar de editar ou não se guarda as mudanças que você realiza. Recomendo abrir, ler um ou vários nomes e fechar, mais importante ainda si for no processo de escritura, pois si não fazer fout.close() o nome não aparecerá no arquivo por que não se salvou, tem claro que fout.close() é como quando você termina de editar um arquivo no notepad e tem que escolher salvar texto. Si eu quiser escrever algo no arquivo eu crio um arquivo de saida, tipo ofstream fout, e posso abrir ele depois com fout.open("arquivo.txt");. Os nomes fout e fin são como cout e cin, porem cout é console output e cin é console input, então eu dou esses nomes fout e fin para parecer a cout e cin, fout é file output, e fin é file input, você pode dar o nome que você quiser, como entrada e saída. ;) Agora vamos ver o ponteiro genérico, ele serve tanto para entrada como para saída, mas devemos indicar com os flags si queremos só para entrada, só para saída ou incluso para ambas coisas: fstream arquivoIO( "arquivo.txt", std::fstream::in | std::fstream::out ) ; veja que std::fstream::in e std::fstream::out estão separados pela barra '|' e não por virgula, todos os flagas vao separados por essa barra no segundo parâmetro do construtor. Vamos ver mais exemplos: fstream arquivoIO( "arquivo.txt", std::fstream::in ) ; // somente para saida fstream arquivoIO( "arquivo.txt", std::fstream::out ) ; // somente entrada fstream arquivoIO( "arquivo.txt", std::fstream::in | std::fstream::app ) ; //modo saída e o conteúdo se inserta no final, nunca borra o que já esta lá, só agrega. fstream arquivoIO( "arquivo.txt", std::fstream::out | std::fstream::trunc ) ; //borra tudo o que tiver lá no arquivo(sobrescreve) A um ponteiro de saída eu também posso obrigar ele a que seja usado para entrada ou vice-versa: ifstream fin( "arquivo.txt",std::fstream::out | std::fstream::app ); // posso ler e agregar conteúdo. você deve saber que si eu uso certos flags o ponteiro começa em diferentes partes do arquivo, por exemplo si vou ler ou truncar, ele começa no inicio do arquivo, si eu vou usar app, ou at end ele começa no final do arquivo, pois queremos adicionar conteúdo, é como si eu quero escrever algo em uma folha usada, eu me dirijo ao final e lá começo escrever.¡, então sabendo isso você deve escolher o modo de abertura correto para usá-lo si não você não conseguirá ler ou escrever nada no arquivo. O ultimo ponto a ser considerado é a tal função excluir. Em um arquivo você não pode excluir nada, você pode marcar essa linha como excluída mudando por exemplo o numero do voo a 000 por exemplo, isso quer dizer que o voo esta cancelado, si não a solução menos elegante porem a mais limpa é mudar tudo a um novo arquivo, cargando tudo na memoria, borrando o que você quer, eliminando o arquivo original e criando un novo no qual você volta a inserir os dados e volta a por nele o mesmo nome. Será esse o verdadeiro motivo do qual facebook não borra nossos dados realmente? >_< Eu gosto de por um caractere adiante da linha a excluir, por exemplo '*', si eu ponho * adiante da linha quer dizer que esta "excluído", eu leio somente esse caracter e o comparo com '*' e si não é verdadero então posso ler o resto, si não está excluído mudo isso para um simples espaço, por algo se chama excluído e não borrado. >_< Os que tem * são os excluídos. Faça provas com isso que te comentei, si você está trabalhando com C++ use streams que é bem melhor que usar a estrutura FILE. Sorte. Para saber mais-> fstream
-
É que tal como você esta fazendo é normal. você esta guardando todos os livros em "dados d", para guardar varios livros você precisa de um array de estructs como minimo. Algo como: Dados Livro[100]; Então com isso você tem 100 estruturas, para mudar o nome do primeiro livro você tem que fazer livro[0].nome = "nome do primeiro livro"; Com um loop for você pode ler todos os dados dos 100 livros, tipo: for (int i = 0; i <100; i++){ cout << "nome do livro numero " << i << ": " << endl; cin >> livro[i].nome; }
-
#include <iostream> #include <iomanip> // std::setfill, std::setw #include <fstream> using namespace std; struct Voo { string numero; string data; string horario; string tempo_voo; string aeroporto_saida; string aeroporto_chegada; string rota ; string passageiro_bordo; }; int menu(); void cadastrarvoo (string nomeArquivo); void consultarvoo (string nomeArquivo); void excluirvoo (string nomeArquivo); void guardarDados (string nome, Voo voo); bool lerDados (string nomeArquivo, Voo &voo, ifstream &fin); void mostrarDados( Voo &voo ); int main() { //Main string nomeArquivo = "reservas.txt"; bool sair = false; while ( !sair ) { switch ( menu() ) { case 1: cadastrarvoo(nomeArquivo); break; case 2: consultarvoo(nomeArquivo); break; case 3: excluirvoo (nomeArquivo); break; case 0: sair = true; break; default: break; } system("cls"); } return 0; }//End of main int menu() { //system("MODE CON cols=75 lines=30"); int margem = 27; int trace = 24; cout << setfill(' ') << setw (margem) << "" << setfill('=') << setw(trace) << "" << endl; cout << setfill(' ') << setw (margem+3) << "" << "Bem Vindo a VOEBEM" << endl; cout << setfill(' ') << setw (margem) << "" << setfill('=') << setw(trace) << "" << endl; margem = 1; cout << setfill(' ') << setw (margem) << "" << setfill('=') << setw(trace) << "" << endl; cout << setfill(' ') << setw (margem+4) << "" << "Efetuar Cadastro" << endl; cout << setfill(' ') << setw (margem) << "" << setfill('=') << setw(trace) << "" << endl; cout << " 1-) Deseja Cadastrar Voo: " << endl; cout << " 2-) Deseja Consultar Voo: " << endl; cout << " 3-) Deseja Excluir Voo: " << endl; cout << " 0-) Sair\n" << endl; int opcao; cout << " Opcao: "; cin >> opcao; cin.sync(); return opcao; } void cadastrarvoo(string nomeArquivo) { Voo voo; cout<<endl; cout<<" Numero do voo: "; // solicitanto o numero de voo cin >> voo.numero; cin.sync(); cout<<" Nome do Passageiro: "; // solicitando o nome do passageiro cin >> voo.passageiro_bordo; cin.sync(); cout<<" Data do Voo: "; // solicitando a data cin >> voo.data; cin.sync(); cout<<" Horário do Voo: "; // solicitando o horário do voo cin >> voo.horario; cin.sync(); cout<<" Tempo Estimado do Voo: "; // solicitando o tempo do voo cin >> voo.tempo_voo; cin.sync(); cout<<" Aeroporto de Saida: "; // solicitando o aeroporto de saida cin >> voo.aeroporto_saida; cin.sync(); cout<<" Aeroporto de Chegada: "; // solicitando o aeroporto de chegada cin >> voo.aeroporto_chegada; cin.sync(); cout<<" Rota do Voo: "; // solicitando a rota cin >> voo.rota; cin.sync(); guardarDados(nomeArquivo, voo); system("cls"); mostrarDados(voo); getchar(); } void consultarvoo (string nomeArquivo) { cout << "informe o numero de voo: "; string numero; cin>>numero; cin.sync(); Voo voo; ifstream fin ( nomeArquivo.c_str() ); cout << endl; if ( !fin.is_open() ){ cout << "Falho ao abrir arquivo" << endl; return; } system("cls"); while ( lerDados(nomeArquivo, voo, fin) ){ if ( numero == voo.numero ){ mostrarDados(voo); } } getchar(); fin.close(); } void excluirvoo(string nomeArquivo){ //POR FAZER AINDA } void guardarDados(string nomeArquivo, Voo voo){ ofstream fout(nomeArquivo.c_str(), std::fstream::app ); if ( !fout.is_open() ){ cout << "Falho ao abrir arquivo" << endl; return; } fout<< voo.numero << " " << voo.passageiro_bordo << " " << voo.data << " " << voo.horario << " " << voo.tempo_voo << " " << voo.aeroporto_saida << " " << voo.aeroporto_chegada << " " << voo.rota << endl; //<-salto de linha dentro do arquivo fout.close(); } bool lerDados (string nomeArquivo, Voo &voo, ifstream &fin){ fin >> voo.numero >> voo.passageiro_bordo >> voo.data >> voo.horario >> voo.tempo_voo >> voo.aeroporto_saida >> voo.aeroporto_chegada >> voo.rota; return fin.good(); } void mostrarDados( Voo &voo ){ cout << "Numero do voo: " << voo.numero << endl; cout << "Nome do Passageiro: " << voo.passageiro_bordo << endl; cout << "Data programada: " << voo.data << endl; cout << "Horario da viagem: " << voo.horario << endl; cout << "Tempo de Voo: " << voo.tempo_voo << endl; cout << "Aeroporto de saida: " << voo.aeroporto_saida << endl; cout << "Aeroporto de chegada: " << voo.aeroporto_chegada << endl; cout << "Rota do voo " << voo.rota << endl; cout << endl; }
-
E por que você não sobe esse arquivo que você salvou para eu dar uma olhada junto com seu código.
-
Si não encontrar nada pronto por internet não acredito que ninguém te diga como fazer um jogo, pois qualquer jogo por mais simples que seja tem um grande nível de complexidade. Esse jogo de caça palavra que você quer fazer tecnicamente é uma matriz, você atribui um jogo de palavras por exemplo indicando a casinha inicial onde vai colocar a palavra, e também indicar a direção, de esquerda a direita ou de acima para abaixo. Logo você precisa conferir si a palavra não sai dos lados ou abaixo. você também pode fazer ela que se auto preencha só desde uma lista de palavras predefinidas, claro que seria muito mais difícil. A parte mais difícil de tudo é que para que isso se faça funcional se deveria usar o emprego de algum gameloop, que nada mais é que um loop while que vai refrescando e aguardando que o usuário faça algo, tambem leva dentro a parte de gestão de eventos de teclado, ou incluso de mouse, e se quiser um acabado mais profissional deveria usar alguma biblioteca 2d para manejar os gráficos já que em CMD você não pode usar o mouse, mas depende do seu nível de programador, si você estiver iniciando melhor não se complique a vida e faça em CMD mesmo.
-
E em que parte você atribuiu valor a horarios? =/