
PedroCunha
Membros-
Total de itens
282 -
Registro em
-
Última visita
Tudo que PedroCunha postou
-
Aqui está um exemplo de como fazer isso: #include <iostream> using namespace std; int main () { int matriz1 [5] = {1,2,3,4,5}; int matriz2[5] = {6,7,8,9,10}; int matriz3[10] = {}; cout << "Matriz 1:\n\n" << endl; for (int i = 0; i < 5; i++) { cout << matriz1[i] << endl; } cout << "Matriz 2:" << endl; cout << "\n\n"; for (int j=0; j < 5; j++) { cout << matriz2[j] << endl; } for (int l = 0; l < 5; l++) { matriz3[l] = matriz1[l]; matriz3[l+5] = matriz2[l]; } cout << "\n\n"; cout << "Matriz 3:" << endl; cout << "\n\n"; for (int k = 0; k < 10; k++) { cout << matriz3[k] << endl; } } Basta adaptá-lo às suas necessidades, :D. Att., Pedro.
-
O programa funciona corretamente nos dois casos, o que acontece é o seguinte: em um vetor, o primeiro elemento é o vetor[0] e não o vetor[1] por isso quando rodamos, por exemplo: 0,1,2,3,4,5,6,7,8,9 ele altera o valor de 0, 2, 4, 6, 8. Entendeu? Qualquer dúvida é só perguntar, :D Att., Pedro
-
Bom, eu penso que você deva ter mais informação do que isso e também deve ter a função que ele está falando no exercício. O que acho que você tem que fazer é mudar os parâmetros da função para que ela retorne uma nova string com o resultado.
-
Como faço pra inverter uma lista encadeada
pergunta respondeu ao tek6 de PedroCunha em Lógica de Programação
Acho que basta ir trocando as posições do vetor, algo assim mais ou menos: for (i = 0;i < 5;i++) { vetor[i] = vetor[i-1]; } Não tenho certeza. Att., Pedro. -
Bom, duas coisas. Primeiro: Para fazer a troca usando a posição, você tem fazer a comparação com o "i", que é o índice do vetor e não com o vetor. Da seguinte forma: if ( i % 2 == 0) { v2[i] = v1[i] * (-1) } Segundo: Quanto ao seu código fiz algumas modificações para que funcionasse corretamente, explicarei elas com comentários: #include <iostream> using namespace std; int main() // main é normalmente usada como int main. Se você usa somente main() está errado, pois você não está dando um tipo para a função. { int v1[10],v2[10],i; //aqui tinha o seguinte código: i == 0, que era desnecessário e errado, uma vez que para inicializar variáveis usa-se somente um = e não dois e também porque você já // inicializa ela no loop. for(i=0;i<10;i++) { cout<<"Digite um valor inteiro:"; cin>>v1[i]; if(i%2==0) { v2[i]=v1[i]*(-1); } else { v2[i]=v1[i]; } // nessa linha havia o seguinte código: i= i+1, o que está errado, pois você já incrementa o i em 1 cada vez que roda o loop. Então, com esse código, o loop so rodaria 5 //vezes. } for(i=0;i<10;i++) { cout<<endl<<v2[i]; // nessa linha havia o seguinte código: i= i+1, o que está errado, pois você já incrementa o i em 1 cada vez que roda o loop. Então, com esse código, o loop so rodaria 5 //vezes. } cin.get(); // tirei o system("pause") pois é uma função dependente do Windows e troquei ela por cin.get(), uma função nativa do C++. return 0; // como main é uma função int (integer) tem que retornar algum valor. } Att., Pedro. OBS.: Não se esqueça de usar as codetags. ("code" seu código "/code") (substitua as aspas por colchetes)
-
Controle de leds pela Porta Paralela
pergunta respondeu ao Roodrigo_OM de PedroCunha em Delphi, Kylix
Não existe nenhum comando para checar se a porta está sendo usada, mandando voltagem, algo assim? -
dificuldades e dúvidas sobre ferramenta CASE
pergunta respondeu ao Manuel neto de PedroCunha em Outras Linguagens de Programação
Respostas: 1 - 5; 2 - 3; 3 - Não tenho certeza, mas acho que é 4; 4 - 5; 5 - 3; Att., Pedro -
Substituir dados em arquivos binário
pergunta respondeu ao Cleber Griff de PedroCunha em Grupo de Estudos
:D. -
Controle de leds pela Porta Paralela
pergunta respondeu ao Roodrigo_OM de PedroCunha em Delphi, Kylix
Não sei como funciona a criação de códigos para comunicação entre portas seriais mas a lógica seria basicamente usar uma condicional do tipo if ( !LuzAcesa) { LuzAcesa = 0; } Att., Pedro. -
Você pode criar funções para eliminar a necessidade de usar o goto.
-
Substituir dados em arquivos binário
pergunta respondeu ao Cleber Griff de PedroCunha em Grupo de Estudos
Para atualizar arquivos binários você precisa gravar de forma diferente, utilizando parâmetros como sizeof. Vou te indicar um link que ensina como fazer isso: C++ -
Olá, para fazer isso basta usar um for loop da seguinte maneira: #include <iostream> #include <locale> using namespace std; int numero(0), novonumero(0), i(0); void numeromultiplicado(int); void numeromultiplicado(int numero) { cout << "\n\n\n"; for (i = 0; i < 21; i++) { novonumero = i * numero; cout << novonumero << "\n"; } } int main() { setlocale(LC_ALL, "Portuguese"); cout << "Digite um número inteiro!" << endl; cin >> numero; numeromultiplicado(numero); return 0; } Qualquer dúvida é só perguntar. Att., Pedro.
-
[RESOLVIDO] Problema com Repetição - DO / WHILE
pergunta respondeu ao iMorilon de PedroCunha em C, C++
Prazer ajudar! É simples a razão porque quem tá olhando de fora acha os erros mais fácil. É um olhar de cima, sem interferência, :D. Edit: Acho que a razão da igualdade com caracteres ASCII e char funcionar é porque o compilador é inteligente e sabe que se você está comprando char com alguma integer, essa integer deve ser um valor ASCII. -
[RESOLVIDO] Problema com Repetição - DO / WHILE
pergunta respondeu ao iMorilon de PedroCunha em C, C++
Olha o código que postei. Para comprar com caracteres ASCII você deve usar as aspas simples se não estou enganado, ou a barra invertida. E sim, você não precisa das chaves se for utilizar só uma linha no if. -
[RESOLVIDO] Problema com Repetição - DO / WHILE
pergunta respondeu ao iMorilon de PedroCunha em C, C++
Tente fazer assim #include <stdio.h> #include <stdlib.h> int main() { char nome[31], yn; int loop; do { system("cls"); fflush(stdin); printf(" Digite seu nome: "); gets(nome); printf(" Seu nome e: %s \n\n", nome); printf(" Seu nome esta correto? (Y/N): "); scanf(" %c", &yn); if ((yn=='N') || (yn=='n')) { loop=1; } else { loop=0; } } while (loop==1); return 0; } Na hora de fazer o scanf, você tem que passar o valor para o endereço da variável, você não estava fazendo isso. E além disso, estava comprando um char com uma integer, o que funcionaria, se você tivesse feito a comparação entre char e o seu valor ASCII da forma correta, :D. Da forma que fiz é bem mais fácil. Usei o fflush(stdin) para limpar o buffer depois de cada "do", caso contrário o código não funcionaria na segunda 'ida'. E depois adicionei o return 0, pois como main é uma integer, tem que retornar algo. Att, Pedro. -
Ok. Primeiro: para usar as tags digite " " seu código "". (Sem as aspas). E depois, vamos por partes. Para embaralhar, pode usar um for loop ou até mesmo o rand. Para distribuir a mesma coisa. As pilhas podem ser um vetor de C++ ou um vetor à moda antiga. Tenho que sair no momento, mas logo logo posso te ajudar mais. Depois te mando uma MSG por pm.
-
Qual é a parte que você está com dificuldade? Obs.: Use as code tags por favor. ( 'seu código')
-
Obrigado Marcelo. Verdade, o switch jogaria fora a necessidade de tantas repetições nas declarações dos 'ifs'.
-
Olá, você tem 1 par extra de chaves e as suas declarações no if estão erradas. O seu código deveria ficar da seguinte forma: #include <iostream> #include <stdlib.h> #include <conio.h> using namespace std; int main (void) { int a; cout << "DGT a hora que você inicia: "; cin >> a; if (a == 7 || a == 8 || a == 9 || a == 10 || a == 11 || a == 12) { cout << "Seu turno e das 5hs as 12,59hs" << endl; } else if (a == 13 || a == 14 || a == 15 || a == 16 || a == 17 || a == 18 || a == 19 || a == 20) { cout << "Seu turno e das 13hs as 20,59hs" << endl; } else if ( a == 21 || a == 22 || a == 23 || a == 24 || a == 1 || a == 2 || a == 3 || a == 4 || a == 5 || a == 6) { cout << "Seu turno e das 21hs as 6:59hs" << endl; } getch(); return 0; } E para os acentos funcionarem coloque esse código no começo da sua main: setlocale(LC_ALL, "Portuguese"); Não se esqueça de incluir a biblioteca locale no começo do seu programa (#include <locale> Att., Pedro Cunha
-
Você deveria colocar da seguinte maneira os 'ifs': if ( sexo == 'M' || sexo == 'm') { } Att., Pedro
-
Troque o scanf dos "ifs" para printf e deve funcionar.
-
Programa - Mostrando como usar vetores, arquivos, strings, etc.
pergunta respondeu ao PedroCunha de PedroCunha em Tutoriais & Dicas - C, C++
Valeu Marcelo! Obrigado pelo apoio, :D. Duvido muito que eu consiga te ensinar alguma coisa, hehehe. Sou esforçado, hehe. Att., Pedro -
Boas galera, hoje trago para vocês o código-fonte de um programa de cadastro básico que desenvolvi. Suas funções incluem Cadastrar, Alterar o arquivo, Excluir algo do arquivo e visualizar o arquivo. Utilizei na criação do código-fonte do programa conhecimentos sobre vetores, operações com arquivos, strings, dentre outros. Vou postar o código. Qualquer dúvida, estou à disposição. O programa foi feito em C++. EDIT: Estou postando uma versão atualizada do código, com funções para colorir separadas e versões em Inglês e Português. //Coder: Pedro Milreu Cunha // Tester: Pedro Milreu Cunha // September, 2012. // Free-license. #include <iostream> #include <fstream> #include <limits> #include <string> #include <string.h> #include <vector> #include <locale> #include <stdio.h> #include <windows.h> using namespace std; #define OLD "Data.txt" #define NEW "AlteredData.txt" fstream Data (OLD, ios::app | ios::in); fstream AlteredData (NEW, ios::app | ios::out | ios::in); int NumerodePessoas; string tempstringcadastro, stringcadastrodelete; static string ColoredText; struct Program { string tempnome; string tempsexo; string tempidade; string tempstringCadaster; string novonome; string tempstring[10]; string tempstringdelete[10]; string stringcadastrodelete; string stringcadastro; }; void Register (int); void Register2(int); void Alter (string); void Alter2(string); void Delete(string); void Delete2(string); void Visualize(); void Visualize2(); void Menu(); void Menu2(); void LanguageMenu(); void Color(string); void Open (); void Close (); void RenameAndDelete(); void Open () { Data.open(OLD, ios::app | ios::in | ios::out); AlteredData.open(NEW, ios::app | ios::in | ios::out); } void Close() { Data.close(); AlteredData.close(); } void RenameAndDelete() { remove (OLD); rename (NEW, OLD); } void Register (int NumerodePessoas) // Function used to cadaster people. Works fine. { Close(); Open(); string CadastroS; struct Program RegisterObj[20]; ColoredText = "---------------REGISTER MENU----------------"; Color(ColoredText); cout << "\n\n"; Open(); if (Data.is_open()) { ColoredText = "File is open"; Color(ColoredText); cout << "\n\n"; Data.seekg(0, ios::end); if (Data.tellg() != 0) { Close(); Open(); cout << "-----------------------------------------------------\n\n"; while (getline(Data, CadastroS)) { cout << CadastroS << "\n"; } cout << "\n-----------------------------------------------------\n\n"; cout << "Type the number of people (Max 20): "; cin.sync(); cin >> NumerodePessoas; Close(); Open(); for (int i = 0; i < NumerodePessoas; i++) { cout << "Type the full name of the person: "; cin.sync(); getline(cin, RegisterObj[i].tempnome); Data << RegisterObj[i].tempnome << " "; cout << "Type the gender of the person (Male/Female): "; cin.sync(); getline(cin, RegisterObj[i].tempsexo); Data << RegisterObj[i].tempsexo << " "; cout << "Type the age of the person: "; cin.sync(); getline(cin, RegisterObj[i].tempidade); Data << RegisterObj[i].tempidade << endl; cout << "\n\n"; } cout << "\nProcessing...\n"; Close(); Open(); Data.seekg(0, ios::end); if (Data.tellg() == 0) { Close(); cout << "File still empty!\n"; Menu(); } else if (Data.tellg() != 0) { Close(); Open(); ColoredText = "Here is the contents of the file"; Color(ColoredText); cout << "\n"; cout << "-----------------------------------------------------\n\n"; while (getline(Data, RegisterObj[0].stringcadastro)) { cout << RegisterObj[0].stringcadastro << "\n"; } Close(); cout << "\n\n"; cout << "-----------------------------------------------------\n\n"; Menu(); } } } else if (Data.tellg() == 0) { Close(); ColoredText = "File is empty, time to register something"; Color(ColoredText); cout << "\n\n"; Open(); cout << "Type the number of people (Max 20): "; cin.sync(); cin >> NumerodePessoas; for (int i = 0; i < NumerodePessoas; i++) { cout << "Type the full name of the person: "; cin.sync(); getline(cin, RegisterObj[i].tempnome); Data << RegisterObj[i].tempnome << " "; cout << "Type the gender of the person (Male/Female): "; cin.sync(); getline(cin, RegisterObj[i].tempsexo); Data << RegisterObj[i].tempsexo << " "; cout << "Type the age of the person: "; cin.sync(); getline(cin, RegisterObj[i].tempidade); Data << RegisterObj[i].tempidade << endl; cout << "\n\n"; } cout << "\nProcessing...\n"; Close(); Open(); Data.seekg(0, ios::end); if (Data.tellg() == 0) { Close(); cout << "File still empty!\n"; Menu(); } else if (Data.tellg() != 0) { Close(); Open(); ColoredText = "Here is the contents of the file"; Color(ColoredText); cout << "\n"; cout << "-----------------------------------------------------\n\n"; while (getline(Data, RegisterObj[0].stringcadastro)) { cout << RegisterObj[0].stringcadastro << "\n"; } Close(); cout << "\n\n"; cout << "-----------------------------------------------------\n\n"; Menu(); } } else if (!Data.is_open()) { cout << "File error!\n"; exit(0); Close(); } } void Alter(string tempstringcadastro) // Function used to alter the cadastered data { struct Program AlterObj; cout << "\n"; ColoredText = "----------------ALTER MENU------------"; Color(ColoredText); cout << "\n\n"; string newfilestring, CadastroS; Open(); if (Data.is_open() && AlteredData.is_open()) { cout << "\n"; ColoredText = "Files opened"; Color(ColoredText); cout << "\n\n"; } else if (!Data.is_open() && !AlteredData.is_open()) { cout << "File error!\n"; exit(0); } Data.seekg(0, ios::end); if (Data.tellg() == 0) { ColoredText = "File is empty"; Color(ColoredText); Close(); Menu(); } if (Data.tellg() != 0) { Close(); Open(); cout << "\n"; cout << "-----------------------------------------------------\n\n"; while(getline(Data, CadastroS)) { cout << CadastroS << "\n"; } cout << "\n"; cout << "-----------------------------------------------------\n\n"; Close(); cout << "Type the data you want to change: "; cin.sync(); getline (cin, AlterObj.stringcadastro); cout << "Type to what you want it to change: "; cin.sync(); getline(cin, AlterObj.novonome); Open(); while (getline(Data, AlterObj.tempstring[0])) { if (AlterObj.stringcadastro == AlterObj.tempstring[0] ) { AlteredData << AlterObj.novonome << "\n"; } else if (AlterObj.stringcadastro != AlterObj.tempstring[0]) { AlteredData << AlterObj.tempstring[0] << "\n"; } } Close(); cout << "\n\n"; cout << "Processing...\n"; Open(); Data.seekg(0, ios::end); if (Data.tellg() == 0) { cout << "File still empty!\n"; RenameAndDelete(); Menu(); } else if (Data.tellg() != 0) { Close(); ColoredText = "Here is the contents of the file"; Color(ColoredText); cout << "\n"; cout << "\n\n"; cout << "-----------------------------------------------------\n\n"; Open(); while(getline (AlteredData, newfilestring)) { cout << newfilestring << "\n"; } Close(); RenameAndDelete(); cout << "\n\n"; cout << "-----------------------------------------------------\n\n"; } Menu (); } } void Delete (string stringcadastrodelete) { string CadastroSdelete, newfilestringdelete; struct Program DeleteObj; cout << "\n"; ColoredText = "----------------DELETE MENU------------"; Color(ColoredText); cout << "\n\n"; Open(); if (Data.is_open() && AlteredData.is_open()) { cout << "\n"; ColoredText = "Files opened"; Color(ColoredText); cout << "\n\n"; } else if (!Data.is_open() && !AlteredData.is_open()) { cout << "File error!\n"; exit(0); } Data.seekg(0, ios::end); if (Data.tellg() == 0) { ColoredText = "File is empty"; Color(ColoredText); Close(); Menu(); } else if (Data.tellg() != 0) { Close(); Open(); cout << "\n"; cout << "-----------------------------------------------------\n\n"; while(getline(Data, CadastroSdelete)) { cout << CadastroSdelete << "\n"; } cout << "\n"; cout << "-----------------------------------------------------\n\n"; Close(); cout << "Type the data you want to delete: "; cin.sync(); getline (cin, DeleteObj.stringcadastrodelete); Open(); Data.seekg(0, ios::beg); while (getline(Data, DeleteObj.tempstringdelete[0])) { if (DeleteObj.stringcadastrodelete != DeleteObj.tempstringdelete[0]) { AlteredData << DeleteObj.tempstringdelete[0] << "\n"; } } Close(); RenameAndDelete(); Open(); cout << "\n\n"; cout << "Processing...\n"; ColoredText = "Here is the contents of the file"; Color(ColoredText); cout << "\n"; cout << "-----------------------------------------------------\n\n"; while(getline (Data, newfilestringdelete)) { cout << newfilestringdelete << "\n"; } Close(); cout << "\n\n"; cout << "-----------------------------------------------------\n\n"; } Menu (); } void Visualize() { string file; struct Program VisualizeObj; cout << "\n"; ColoredText = "----------------VISUALIZE MENU------------"; Color(ColoredText); cout << "\n\n"; Open(); if (Data.is_open()) { cout << "\n"; ColoredText = "File is open\n"; Color(ColoredText); } else if (!Data.is_open()) { cout << "File error!\n"; exit(0); } Data.seekg(0, ios::end); if (Data.tellg() == 0) { ColoredText = "File is empty\n"; Color(ColoredText); cout << "\n\n"; Close(); Menu(); } else if (Data.tellg() != 0) { Close(); Open(); cout << "Processing...\n"; ColoredText = "Here is the contents of the file"; Color(ColoredText); cout << "\n\n"; cout << "-----------------------------------------------------\n\n"; while (getline (Data, file)) { cout << file << "\n"; } cout << "\n\n"; cout << "-----------------------------------------------------\n\n"; Close(); } Menu(); } void Menu () { int opcao; ColoredText = "----------------MAIN MENU------------"; Color(ColoredText); cout << "\n\n"; cout << "1 - Cadaster\n" "2 - Alter\n" "3 - Delete\n" "4 - Visualize\n" "5 - Change the language\n" "6 - Exit\n" << endl; cin >> opcao; switch (opcao){ case 1: { Register(NumerodePessoas); break; } case 2: { Alter(tempstringcadastro); break; } case 3: { Delete(stringcadastrodelete); break; } case 4: { Visualize(); break; } case 5: { LanguageMenu(); break; } case 6: { cout << "\n"; ColoredText = "Goodbye! Come again.\n"; Color(ColoredText); exit(0); break; } default: { cout << "\n"; ColoredText = "Goodbye! Come again.\n"; Color(ColoredText); exit(0); } } } void Menu2() { int opcao; ColoredText = "----------------MENU PRINCIPAL------------"; Color(ColoredText); cout << "\n\n"; cout << "1 - Cadastrar\n" "2 - Alterar\n" "3 - Deletar\n" "4 - Visualizar\n" "5 - Mudar o idioma\n" "6 - Sair\n" << endl; cin >> opcao; switch (opcao){ case 1: { Register2(NumerodePessoas); break; } case 2: { Alter2(tempstringcadastro); break; } case 3: { Delete2(stringcadastrodelete); break; } case 4: { Visualize2(); break; } case 5: { LanguageMenu(); break; } case 6: { cout << "\n"; ColoredText = "Adeus! Volte sempre.\n"; Color(ColoredText); exit(0); break; } default: { cout << "\n"; ColoredText = "Adeus! Volte sempre.\n"; Color(ColoredText); exit(0); } } } void Register2 (int NumerodePessoas) // Função usada para cadastrar pessoas. { string CadastroS; struct Program RegisterObj[20]; ColoredText = "---------------MENU DE CADASTRO----------------"; Color(ColoredText); cout << "\n\n"; Close(); Open(); Open(); if (Data.is_open()) { Data.seekg(0, ios::end); ColoredText = "Arquivo abriu"; Color(ColoredText); cout << "\n\n"; if (Data.tellg() != 0) { Close(); Open(); cout << "-----------------------------------------------------\n\n"; while (getline(Data, CadastroS)) { cout << CadastroS << "\n"; } cout << "\n-----------------------------------------------------\n\n"; cout << "Digite o número de pessoas (Max 20): "; cin.sync(); cin >> NumerodePessoas; Close(); Open(); for (int i = 0; i < NumerodePessoas; i++) { cout << "Digite o nome completo da pessoa: "; cin.sync(); getline(cin, RegisterObj[i].tempnome); Data << RegisterObj[i].tempnome << " "; cout << "Digite o sexo da pessoa (Male/Female): "; cin.sync(); getline(cin, RegisterObj[i].tempsexo); Data << RegisterObj[i].tempsexo << " "; cout << "Digite a idade da pessoa: "; cin.sync(); getline(cin, RegisterObj[i].tempidade); Data << RegisterObj[i].tempidade << endl; cout << "\n\n"; } cout << "\nProcessando...\n"; Close(); Open(); Data.seekg(0, ios::end); if (Data.tellg() == 0) { Close(); cout << "Arquivo está vazio!\n"; Menu2(); } else if (Data.tellg() != 0) { Close(); Open(); ColoredText = "Aqui está o conteúdo do arquivo"; Color(ColoredText); cout << "\n"; cout << "-----------------------------------------------------\n\n"; while (getline(Data, RegisterObj[0].stringcadastro)) { cout << RegisterObj[0].stringcadastro << "\n"; } Close(); cout << "\n\n"; cout << "-----------------------------------------------------\n\n"; Menu2(); } } } else if (Data.tellg() == 0) { Close(); ColoredText = "Arquivo está vazio, hora de registrar alguma coisa, :D"; Color(ColoredText); cout << "\n\n"; Open(); cout << "Digite o número de pessoas (Max 20): "; cin.sync(); cin >> NumerodePessoas; for (int i = 0; i < NumerodePessoas; i++) { cout << "Digite o nome completo da pessoa: "; cin.sync(); getline(cin, RegisterObj[i].tempnome); Data << RegisterObj[i].tempnome << " "; cout << "Digite o sexo da pessoa (Masculino/Feminino): "; cin.sync(); getline(cin, RegisterObj[i].tempsexo); Data << RegisterObj[i].tempsexo << " "; cout << "Digite a idade da pessoa: "; cin.sync(); getline(cin, RegisterObj[i].tempidade); Data << RegisterObj[i].tempidade << endl; cout << "\n\n"; } cout << "\nProcessando...\n"; Close(); Open(); Data.seekg(0, ios::end); if (Data.tellg() == 0) { Close(); cout << "Arquivo ainda está vazio!\n"; Menu2(); } else if (Data.tellg() != 0) { Close(); Open(); ColoredText = "Aqui está o conteúdo do arquivo."; Color(ColoredText); cout << "\n"; cout << "-----------------------------------------------------\n\n"; while (getline(Data, RegisterObj[0].stringcadastro)) { cout << RegisterObj[0].stringcadastro << "\n"; } Close(); cout << "\n\n"; cout << "-----------------------------------------------------\n\n"; Menu2(); } } else if (!Data.is_open()) { cout << "Erro no arquivo!\n"; exit(0); Close(); } } void Alter2(string tempstringcadastro) // Função usada para alterar cadastros { struct Program AlterObj; cout << "\n"; ColoredText = "----------------MENU DE ALTERAÇÕES------------"; Color(ColoredText); cout << "\n\n"; string newfilestring, CadastroS; Open(); if (Data.is_open() && AlteredData.is_open()) { cout << "\n"; ColoredText = "Arquivos abriram"; Color(ColoredText); cout << "\n\n"; } else if (!Data.is_open() && !AlteredData.is_open()) { cout << "Erro no arquivo!\n"; exit(0); } Data.seekg(0, ios::end); if (Data.tellg() == 0) { ColoredText = "Arquivo está vazio"; Color(ColoredText); Close(); Menu2(); } if (Data.tellg() != 0) { Close(); Open(); cout << "\n"; cout << "-----------------------------------------------------\n\n"; while(getline(Data, CadastroS)) { cout << CadastroS << "\n"; } cout << "\n"; cout << "-----------------------------------------------------\n\n"; Close(); cout << "Digite o que você deseja mudar: "; cin.sync(); getline (cin, AlterObj.stringcadastro); cout << "Digite para o quê deseja mudar: "; cin.sync(); getline(cin, AlterObj.novonome); Open(); while (getline(Data, AlterObj.tempstring[0])) { if (AlterObj.stringcadastro == AlterObj.tempstring[0] ) { AlteredData << AlterObj.novonome << "\n"; } else if (AlterObj.stringcadastro != AlterObj.tempstring[0]) { AlteredData << AlterObj.tempstring[0] << "\n"; } } Close(); cout << "\n\n"; cout << "Processando...\n"; Open(); Data.seekg(0, ios::end); if (Data.tellg() == 0) { cout << "Arquivo ainda está vazio!\n"; RenameAndDelete(); Menu2(); } else if (Data.tellg() != 0) { Close(); Open(); ColoredText = "Aqui está o conteúdo do arquivo"; Color(ColoredText); cout << "\n"; cout << "\n\n"; cout << "-----------------------------------------------------\n\n"; while(getline (AlteredData, newfilestring)) { cout << newfilestring << "\n"; } Close(); RenameAndDelete(); cout << "\n\n"; cout << "-----------------------------------------------------\n\n"; } Menu2 (); } } void Delete2 (string stringcadastrodelete) //Função usada para deletar cadastros. { string CadastroSdelete, newfilestringdelete; struct Program DeleteObj; cout << "\n"; ColoredText = "----------------MENU DE EXCLUSÃO------------"; Color(ColoredText); cout << "\n\n"; Open(); if (Data.is_open() && AlteredData.is_open()) { cout << "\n"; ColoredText = "Arquivos abriram"; Color(ColoredText); cout << "\n\n"; } else if (!Data.is_open() && !AlteredData.is_open()) { cout << "Erro no arquivo!\n"; exit(0); } Data.seekg(0, ios::end); if (Data.tellg() == 0) { ColoredText = "Arquivo está vazio"; Color(ColoredText); Close(); Menu2(); } else if (Data.tellg() != 0) { Close(); Open(); cout << "\n"; cout << "-----------------------------------------------------\n\n"; while(getline(Data, CadastroSdelete)) { cout << CadastroSdelete << "\n"; } cout << "\n"; cout << "-----------------------------------------------------\n\n"; Close(); cout << "Digite o que deseja deletar: "; cin.sync(); getline (cin, DeleteObj.stringcadastrodelete); Open(); Data.seekg(0, ios::beg); while (getline(Data, DeleteObj.tempstringdelete[0])) { if (DeleteObj.stringcadastrodelete != DeleteObj.tempstringdelete[0]) { AlteredData << DeleteObj.tempstringdelete[0] << "\n"; } } Close(); RenameAndDelete(); Open(); cout << "\n\n"; cout << "Processando...\n"; ColoredText = "Aqui está o conteúdo do arquivo."; Color(ColoredText); cout << "\n"; cout << "-----------------------------------------------------\n\n"; while(getline (Data, newfilestringdelete)) { cout << newfilestringdelete << "\n"; } Close(); cout << "\n\n"; cout << "-----------------------------------------------------\n\n"; } Menu2 (); } void Visualize2() //Função usada para visualizar o conteúdo do arquivo. { string file; struct Program VisualizeObj; cout << "\n"; ColoredText = "----------------MENU DE VISUALIZAÇÃO------------"; Color(ColoredText); cout << "\n\n"; Open(); if (Data.is_open()) { cout << "\n"; ColoredText = "Arquivo abriu\n"; Color(ColoredText); } else if (!Data.is_open()) { cout << "Erro no arquivo!\n"; exit(0); } Data.seekg(0, ios::end); if (Data.tellg() == 0) { ColoredText = "Arquivo está vazio\n"; Color(ColoredText); cout << "\n\n"; Close(); Menu2(); } else if (Data.tellg() != 0) { Close(); Open(); cout << "Processando...\n"; ColoredText = "Aqui está o conteúdo do arquivo."; Color(ColoredText); cout << "\n\n"; cout << "-----------------------------------------------------\n\n"; while (getline (Data, file)) { cout << file << "\n"; } cout << "\n\n"; cout << "-----------------------------------------------------\n\n"; Close(); } Menu2(); } void Color (string ColoredText) { HANDLE h = GetStdHandle ( STD_OUTPUT_HANDLE ); WORD wOldColorAttrs; CONSOLE_SCREEN_BUFFER_INFO csbiInfo; /* * First save the current color information */ GetConsoleScreenBufferInfo(h, &csbiInfo); wOldColorAttrs = csbiInfo.wAttributes; /* * Set the new color information */ SetConsoleTextAttribute ( h, FOREGROUND_RED | FOREGROUND_INTENSITY ); cout << "\n"; cout << ColoredText; SetConsoleTextAttribute ( h, wOldColorAttrs); } void LanguageMenu() { int opcaoidioma = 0; cout << "\n"; cout << "What language do you wish to use?/ Qual idioma você deseja usar?\n" << endl; cout << "1 - English\n" "2 - Português\n" << endl; cin >> opcaoidioma; switch (opcaoidioma) { case 1: { Menu(); break; } case 2: { Menu2(); break; } default: { cout << "\n"; cout << "Invalid option/Opção inválida\n" << endl; LanguageMenu(); break; } } } int main() { SetConsoleTitle("Register"); setlocale(LC_ALL, "Portuguese"); LanguageMenu(); } OBS.: Caso não esteja usando Windows, desconsidere as funções para colorir o texto HANDLE h = GetStdHandle ( STD_OUTPUT_HANDLE ); WORD wOldColorAttrs; CONSOLE_SCREEN_BUFFER_INFO csbiInfo; /* * First save the current color information */ GetConsoleScreenBufferInfo(h, &csbiInfo); wOldColorAttrs = csbiInfo.wAttributes; /* * Set the new color information */ SetConsoleTextAttribute ( h, FOREGROUND_RED | FOREGROUND_INTENSITY ); SetConsoleTextAttribute ( h, wOldColorAttrs); que são da biblioteca Windows.h. Att., Pedro.
-
Interpretador de arquivos
pergunta respondeu ao Marcelo Utikawa da Fonseca de PedroCunha em Tutoriais & Dicas - C, C++
Uau! Só uau Marcelo! Vou ter que tirar alguns meses para ler e aprender esse código totalmente, :D. Boa! -
Não tenho certeza, mas tente mudar o for para: for (i=0;i<3;i++). Aliás, veja que o seu "printf" do 'x' está fora do loop, então só irá mostrar x=3, e não x=1,x=2, e x=3.