Jump to content

Search the Community

Showing results for tags 'c++'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Comunidade
    • Sugestões, Críticas ou Dúvidas relativas ao P@P
    • Acerca do P@P
  • Comunidade a Trabalhar
    • Apresentação de Projectos de Programação
    • Downloads
    • Revista PROGRAMAR
  • Desenvolvimento Geral
    • C
    • C++
    • Java
    • Pascal
    • Python
    • Bases de Dados
    • Dispositivos Móveis
    • Outras Linguagens
  • Desenvolvimento Orientado para Web
    • PHP
    • HTML
    • CSS
    • Javascript
    • Outras Linguagens de WebDevelopment
    • Desenvolvimento Web
  • Desenvolvimento .NET
    • C#
    • Visual Basic .NET
    • ASP.NET
    • WPF & SilverLight
  • Software e Sistemas Operativos
    • Software de Produtividade
    • Sistemas Operativos
    • Apresentação de Software
  • Informática
    • Interfaces Visuais
    • Computação Gráfica
    • Algoritmia e Lógica
    • Segurança e Redes
    • Hardware
    • Electrónica e Automação Industrial
    • Matemática
    • Software de Contabilidade e Finanças
    • Dúvidas e Discussão de Programação
  • Outras Áreas
    • Notícias de Tecnologia
    • Dúvidas Gerais
    • Discussão Geral
    • Eventos
    • Anúncios de Emprego
    • Tutoriais
    • Snippets / Armazém de Código
  • Arquivo Morto
    • Projectos Descontinuados
    • System Empires

Blogs

  • Blog dos Moderadores
  • Eventos
  • Notícias de Tecnologia
  • Blog do Staff
  • Revista PROGRAMAR
  • Projectos
  • Wiki

Categories

  • Revista PROGRAMAR
  • Tutoriais
  • Textos Académicos
  • Exercícios Académicos
    • Exercícios c/ Solução
    • Exercícios s/ Solução
  • Bibliotecas e Aplicações
  • Outros

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Website


GitHub


LinkedIn


Twitter


Facebook

  1. Boas queria construir um robô seguidor de linha para um projeto mas apenas tenho um sensor, face a este problema será que o poderia programar para apenas seguir uma linha reta ligando assim o único sensor aos dois motores? Se possível ficaria agradecido se pudessem disponibilizar o código para a programação
  2. Rafa_06

    Char para int

    Neste seguinte programa preciso de ajuda para trocar os números de char para int. O código é o seguinte: #include <stdio.h> #include <locale.h> #include <stdlib.h> #include <string.h> #include <conio.h> #include <time.h> int i; char resposta[6],adivinha[6]; FILE *fp; void menu() { printf("Bem-vindo ao jogo de adivinhar um número com 6 digitos!\n"); } void gerador()//numero aleatorio { srand(time(0)); for(i=0;i<6;i++) { resposta[i]=rand()%10+48; } } void tentativa(int y) { printf("Esta é a %d/7 tentativa\n\n",y); for(i=0;i<6;i++) { do { printf("Advinha o número! %d:",i+1); scanf("%c",&adivinha[i]); getchar(); if((adivinha[i]=='1')||(adivinha[i]=='2')||(adivinha[i]=='3')||(adivinha[i]=='4')||(adivinha[i]=='5')||(adivinha[i]=='6')||(adivinha[i]=='7')||(adivinha[i]=='8')||(adivinha[i]=='9')||(adivinha[i]=='0')) { printf(""); }else { printf("Número inválido\nClica Enter e tenta outra vez!\n"); } }while((adivinha[i]!='1')&&(adivinha[i]!='2')&&(adivinha[i]!='3')&&(adivinha[i]!='4')&&(adivinha[i]!='5')&&(adivinha[i]!='6')&&(adivinha[i]!='7')&&(adivinha[i]!='8')&&(adivinha[i]!='9')&&(adivinha[i]!='0')); } } int check() { int x; for(i=0;i<6;i++) { if(resposta[i]==adivinha[i]) { printf("%c",adivinha[i]); x++; } else printf("-"); } printf("\n"); if(x==6) return 1; else return 0; } int main() { setlocale(LC_ALL,"Portuguese"); int bin=0,y,momento; char recorde[100],nome[100]; system("color A"); menu(); gerador(); fp = fopen("Recorde.txt","r"); if(fp!=NULL) { fgets(recorde,100,fp); fclose(fp); printf("O recorde atual é %s\n",recorde); } fp=fopen("Recorde.txt","r"); if(fp!=NULL) fscanf(fp,"%d",&momento); else momento=10000; for(y=1;y<=7;y++) { tentativa(y); bin=check(); if(bin==1) { printf("Parabens adivinhaste em %d tentativas\n",y); if(y<momento) { printf("Bateste o record, escreve o teu nome para o registo!\n"); gets(nome); fp = fopen("Recorde.txt","w"); fprintf(fp,"%d - %s",y,nome); fclose(fp); } break; } } printf("Resposta = %c%c%c%c%c%c",resposta[0],resposta[1],resposta[2],resposta[3],resposta[4],resposta[5]); } Fico agradecido por qualquer resposta! ❤️ Quanto mais rápido agradeço!
  3. Malta preciso de ajuda eu quero fazer o jogo 3 em linha em c++ e não consigo podem me mostrar como é que fazem eu ficaria muito agradecido. ps: sou iniciante
  4. Estou com uma duvida, eu tenho este menu. Na ultima case (case 6), o menu tem de fechar, mas não sei o que fazer, podem me ajudar. Estou a trabalhar em código de C++. //Projeto UFCD - programação #include <iostream> #include <string> #include <fstream> using namespace std; //declaração de variaveis int opcao, numero1, numero2, ntrabalhadores; ofstream ficheiro ("GESTAOSALARIAL.txt"); struct trabalhadores { string nome; int nhoras; int escalao; }; //ARRAY QUE GUARDA NOMES DOS TRABALHADORES trabalhadores conjtrabalhadores[1000]; //FUNCAO SALARIO float salario (int escalao, float nhoras) { float res; if (escalao == 1){ res= 150 * nhoras; } else if (escalao == 2){ res= 200 * nhoras; } else if (escalao == 3){ res= 250 * nhoras; } else if (escalao == 4){ res= 300 * nhoras; } else { cout<<"Escalao Invalido"<<endl; } return res; } int main () { menu: cout<<system("cls"); cout<<" \t\t_________________________________"<<endl; cout<<" \t\t| |"<<endl; cout<<" \t\t| GESTAO SALARIAL |"<<endl; cout<<" \t\t|_______________________________|"<<endl; cout<<" \t\t| |"<<endl; cout<<" \t\t| 1- Inserir trabalhador |"<<endl; cout<<" \t\t|_______________________________|"<<endl; cout<<" \t\t| |"<<endl; cout<<" \t\t| 2- Lista de trabalhadores |"<<endl; cout<<" \t\t|_______________________________|"<<endl; cout<<" \t\t| |"<<endl; cout<<" \t\t| 3- Escaloes |"<<endl; cout<<" \t\t|_______________________________|"<<endl; cout<<" \t\t| |"<<endl; cout<<" \t\t| 4- Salarios |"<<endl; cout<<" \t\t|_______________________________|"<<endl; cout<<" \t\t| |"<<endl; cout<<" \t\t| 5- Gravar |"<<endl; cout<<" \t\t|_______________________________|"<<endl; cout<<" \t\t| |"<<endl; cout<<" \t\t| 6- Sair |"<<endl; cout<<" \t\t|_______________________________|"<<endl; cout<<" \t\t Selecione a opcao pretendida: "; cin>>opcao; //EXITs switch(opcao) { case 1: cout<<"\n\t\t\t Quantos trabalhadores pretende inserir? "; cin>>ntrabalhadores; for (int i=0; i<ntrabalhadores;i++) { cout<<"\n\t\t\t Introduza o nome do "<<i+1<< " trabalhador: "; cin>>conjtrabalhadores[i].nome; cout<<"\t\t\t Introduza o numero de horas do "<<i+1<< " trabalhador: "; cin>>conjtrabalhadores[i].nhoras; cout<<"\t\t\t Introduza o escalao do "<<i+1<< " trabalhador: "; cin>>conjtrabalhadores[i].escalao; cout<<endl; } break; case 2: cout<<" \n\t\t\t *** LISTAGEM DOS TRABALHADORES *** "<<endl; for (int i=0; i<ntrabalhadores;i++) { cout<<"\n\t\t\t Nome do "<<i+1<< " trabalhador: "<<conjtrabalhadores[i].nome<<endl; cout<<"\t\t\t Numero de horas do "<<i+1<< " trabalhador: "<<conjtrabalhadores[i].nhoras<<endl; cout<<"\t\t\t Escalao do "<<i+1<< " trabalhador: "<<conjtrabalhadores[i].escalao<<endl; } break; case 3: system("cls"); cout<<"\t\t\t______________________________"<<endl; cout<<"\t\t\t| | |"<<endl; cout<<"\t\t\t| ESCALAO | MONTANTE GANHO |"<<endl; cout<<"\t\t\t|___________|________________|"<<endl; cout<<"\t\t\t| | |"<<endl; cout<<"\t\t\t| 1 | 150/H |"<<endl; cout<<"\t\t\t|___________|________________|"<<endl; cout<<"\t\t\t| | |"<<endl; cout<<"\t\t\t| 2 | 200/H |"<<endl; cout<<"\t\t\t|___________|________________|"<<endl; cout<<"\t\t\t| | |"<<endl; cout<<"\t\t\t| 3 | 250/H |"<<endl; cout<<"\t\t\t|___________|________________|"<<endl; cout<<"\t\t\t| | |"<<endl; cout<<"\t\t\t| 4 | 300/H |"<<endl; cout<<"\t\t\t|___________|________________|"<<endl<<endl; break; case 4: { //cin>> ntrabalhadores; for (int i=0; i<ntrabalhadores;i++) { //SALARIO DO PRIMEIRO TRABALHADOR cout<<"\t O "<<conjtrabalhadores[i].nome<<" tem o escalao: "<<conjtrabalhadores[i].escalao<<endl; cout<<"\t O "<<conjtrabalhadores[i].nome<<" trabalhou: "<<conjtrabalhadores[i].nhoras<<endl; cout<<"\t --> O salario do "<<conjtrabalhadores[i].nome<<" e: "<<salario(conjtrabalhadores[i].escalao, conjtrabalhadores[i].nhoras)<<" euros"<<endl<<endl; } } break; case 5: if (ficheiro.is_open()) { ficheiro<<" ***** PROGRAMA GESTAO SALARIAL *****"<<endl; for (int i=0; i<ntrabalhadores;i++) { ficheiro<<"\t\t\t O"<<i+1<<conjtrabalhadores[i].nome<<endl; ficheiro<<endl; cout<<"\t\t\t O salario do "<<conjtrabalhadores[i].nome<<"e: "<<salario(conjtrabalhadores[i].escalao, conjtrabalhadores[i].nhoras)<< " euros"<<endl; } ficheiro.close(); } else { cout<<"NAO E PERMITIDO GRAVAR"<<endl; cout<<"\t\t\t A Informação foi gravada com sucesso!"<<endl; } break; case 6: { system ("ext"); } default: cout<<"\n\t\t\t**OPCAO INVALIDA!!!**"<<endl<<endl; break; } system("pause"); goto menu; return 0; cout<<endl<<endl<<endl<<endl; }
  5. Crie uma função em C que permita percorrer uma matriz quadrada bidimensional em diagonal. Seu programa não deve impor limitações sobre o tamanho da matriz. Não use a notação de colchetes. Use ponteiros e alocação dinâmica do tamanho da matriz. Apresente um programa de teste e exemplos (quanto mais melhor), mostrando que a sua implementação funciona. estou tendo dificuldades para formar essa questão, não vejo por onde começar e alguns exemplos que busquei não me fez tanto sentido, alguém me ajuda nessa questão!
  6. Implemente um programa no qual o usuario informa, através da linha de comando, uma frase e o programa busca todas repetições da mesma palavra. Ao final, o programa imprime o numero de vezes que cada palavra aparece no frase. Para isso, só será permitido utilizar as funções strcpy(), strlen(), e fgets() de String.h. Realize a implementação própria de todas outras funções que precisar para resolver o problema. estou tendo dificuldades para achar as palavras iguais da frase e dizer quantas são, alguém me ajuda. só estou conseguindo fazer contar o numero de caracteres da frase, mais as palavras iguais não consigo achar um jeito certo, alguém pode me ajudar com um exemplo!
  7. Olá pessoal. Estou a desenvolver uma biblioteca em C++ e, neste momento, dar-me-ia imenso jeito ter uma forma de aceder aos métodos de uma instância de outra classe. Numa classe (vamos chamá-la de FooMgr) tenho um map que me permite aceder a instâncias de outra classe (vamos assumir que se chama foo) através do seu nome. map<string, Foo> foolist; FooMgr é, portanto, um gestor de instâncias de Foo onde posso dar um nome arbitrário a cada uma dessas instâncias. De momento preciso de fazer algo deste género para aceder aos métodos de cada instância: FooMgr foo(); // etc... foo.getInstance("batatas").coisas(); foo.getInstance("batatas").cenas(); foo.getInstance("batatas").factos(); A minha ideia é definir a instância actual e, a partir daí, aceder directamente aos seus métodos sem precisar de recorrer a este "proxy" (getInstance) FooMgr foo(); // etc... foo.setCurrent("batatas"); foo.coisas(); foo.cenas(); foo.factos(); Sei que existe forma de fazer isto em Delphi, mas desconheço se há algum mecanismo para tal em C++. As minhas pesquisas deram num beco sem saída (talvez não esteja a usar as keywords certas nas pesquisas, idk). Conhecem alguma forma de fazer isto em C++, ou de o simular de uma forma um tanto-quanto elegante? Cumprimentos.
  8. namespace ClassesDerivadas { //****************************************************** //* Classe1 "ProdutoEletrodomestico" - Classe1 Derivada //****************************************************** class ProdutoBiologico: public Classes::ClassePrincipal::Produto { // 1. Dados int caloria; int eficacia; string classe1; public: // 2. Métodos // 2.1 Métodos Construtores ProdutoBiologico():Produto() {this->caloria = 0; this->eficacia = 0; this->classe1 = ""; cout<<"Produto Biológico criado!";} ProdutoBiologico(int cal, string d): Produto(cal,d) {caloria = 0; eficacia = 0; classe1 = ""; cout<<"Produto Biológico criado!";} ProdutoBiologico(int codP, string d, int numC): Produto(codP,d, numC) {caloria = 0; eficacia = 0; classe1 =""; cout<<"Produto Biológico criado!";} // 2.2 Métodos destrutores ~ProdutoBiologico() { cout<<"Eliminação de um objeto "<<"'Produto Biológico': "; cout<<getDesignacao()<<"."; cout<<endl; } // 2.3 Métodos "setters" void setCaloria (int cal) {this->caloria = cal;} void setEficacia (int e) {this->eficacia = e;} void setClasse1(string c3) {this->classe1 = c3;} // 2.4 Métodos "getters" int getCaloria () {return caloria;} int getEficacia () {return eficacia;} string getClasse1() {return classe1;} // 2.5 Métodos de leitura void leCaloria() { int num = 0; cout<<"Insira o valor das "<<"calorias: "; cin>>num; setCaloria(num); fflush(stdin); } void leEficacia() { int num = 0; cout<<"Insira o valor da "<<"eficacia: "; cin>>num; setEficacia(num); fflush(stdin); } void leClasse1() { const int MAXNOME = 50; char texto[MAXNOME]; for(int cLetra= 0; cLetra < MAXNOME; cLetra++) texto[cLetra]= '\0'; cout<<"Insira o valor da classe1: "; cin.getline(texto, MAXNOME,'\n'); setClasse1(texto); fflush(stdin); } // 2.6 Métodos de Escrita void mostraCaloria() { cout<<"Calorias: "<<getCaloria()<<" do produto."; cout<<endl; } void mostraEficacia() { cout<<"Eficacia: "<<getEficacia ()<<" meses."<<endl;} void mostraClasse() { cout<<"Classe: "<<getClasse1()<< "."<<endl; } void mostraTudoProdutoEletrodomestico() { cout<<"\nApresentação dos dados "; cout<<"de um produto: "<<endl; mostraTudoProduto(); mostraCaloria(); mostraEficacia(); mostraClasse1(); } }; // Fim da classe1 "Produto Biológico" } // Fim do espaço de nomes "ClassesDerivadas". } // Fim do espaço de nomes "Classes". //************************************************ //* Função principal //************************************************ int main() { setlocale(LC_ALL, "Portuguese"); Classes::ClassesDerivadas::ProdutoBiologico produto; produto.leTudoProdutoBiologico(); produto.mostraTudoProdutoBiologico(); return 0; } // Fim da função "main()".
  9. Boas, Estou com alguma dificuldade em perceber o que está errado no código que gerei, pois nunca me dá com exatidão qual a pessoa que comeu menos panquecas, a que comeu mais dá certo.Obrigado (Estou a usar o Visual Studio 2019) int pancakes[10]; int index; int index2; int max = 1; int min = 1; int max_pancakes = 1; int min_pancakes = 1; for (index = 1; index < 10; index++) { std::cout << "INSERT THE NUMBER OF PANCAKES THAT THE PERSON" << index << "EAT" << std::endl; std::cin >> pancakes[index]; } for (index2 = 1; index2 < 10; index2++) { for (index = 1; index < 10; index++) { if (pancakes[index2] < pancakes[index]) { max = pancakes[index]; max_pancakes = index; } else if (pancakes[index] < pancakes[index2]) { min = pancakes[index]; min_pancakes = index; } } } std::cout << " THE PERSON WHO EAT MORE PANCAKES IS " << max_pancakes << std::endl; std::cout << " THE PERSON WHO EAT LESS PANCAKES IS " << min_pancakes << std::endl;
  10. Boas pessoal a minha questão é a do titulo, é a única coisa que me falta. Alguém me conseguia ajudar? Obrigado #include <iostream> #include <stdlib.h> const int max = 6; int main() { int arr [max], aux; printf("escreva %d valores\n", max); for (int i = 0 ; i < max; i++) { scanf("%d", &arr[i]); } for(int i = 0; i < max; i++) for (int j=0; j<max -1-i; j++) if (arr[j]> arr[j+1]) { aux = arr[j]; arr[j]= arr[j+1]; arr[j+1]=aux; } printf("Os valores ordenados sao\n"); //escrever o array ordenado abaixo }
  11. lavinia

    Ler palavras

    Escreva um programa para ler 10 palavras. Para cada palavra lida escrever a quantidade de caracteres existentes na palavra. Considere que cada palavra possui no máximo 30 caracteres. estou com bastante dificuldade em resolver essa questão a única coisa que consegui fazer foi contar quantas palavras existem mas não quantos caracteres tem na palavra
  12. Boa tarde, estou a fazer um trabalho para a universidade que consiste em fazer o jogo dos 4 em linha e estou com dificuldades em saber como posso determinar quem é que ganha o jogo e como fazer , na linguagem C++. Obrigado pela atenção
  13. Olá boa tartde eu estou a fazer um jogo para entregar para a cadeira de lab mas eu fiquei preso com este erro se alguem poder ajudar eu agredecia . Erros: Build started... 1>------ Build started: Project: Atirar, Configuration: Debug Win32 ------ 1>Atirar.cpp 1>Tabuleiro.cpp 1>Generating Code... 1>Tabuleiro.obj : error LNK2005: "void __cdecl gotoxy(int,int)" (?gotoxy@@YAXHH@Z) already defined in Atirar.obj 1>Tabuleiro.obj : error LNK2005: "void __cdecl printAscii(int,int,int)" (?printAscii@@YAXHHH@Z) already defined in Atirar.obj 1>Tabuleiro.obj : error LNK2005: "void __cdecl printfAt(int,int,char * const)" (?printfAt@@YAXHHQAD@Z) already defined in Atirar.obj 1>Tabuleiro.obj : error LNK2005: "void __cdecl resetColor(void)" (?resetColor@@YAXXZ) already defined in Atirar.obj 1>Tabuleiro.obj : error LNK2005: "void __cdecl setBackColor(int)" (?setBackColor@@YAXH@Z) already defined in Atirar.obj 1>Tabuleiro.obj : error LNK2005: "void __cdecl setColor(int,int)" (?setColor@@YAXHH@Z) already defined in Atirar.obj 1>Tabuleiro.obj : error LNK2005: "void __cdecl setForeColor(int)" (?setForeColor@@YAXH@Z) already defined in Atirar.obj 1>Tabuleiro.obj : error LNK2005: "void __cdecl show90RectAt(int,int,int,int)" (?show90RectAt@@YAXHHHH@Z) already defined in Atirar.obj 1>Tabuleiro.obj : error LNK2005: "void __cdecl showCharAt(int,int,char)" (?showCharAt@@YAXHHD@Z) already defined in Atirar.obj 1>Tabuleiro.obj : error LNK2005: "void __cdecl showRectAt(int,int,int,int)" (?showRectAt@@YAXHHHH@Z) already defined in Atirar.obj 1>Tabuleiro.obj : error LNK2005: "void __cdecl showVerticalWordAt(int,int,char * const,int)" (?showVerticalWordAt@@YAXHHQADH@Z) already defined in Atirar.obj 1>C:\Users\josep\source\repos\Atirar\Debug\Atirar.exe : fatal error LNK1169: one or more multiply defined symbols found 1>Done building project "Atirar.vcxproj" -- FAILED. ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== Atirar.cpp: #include <windows.h> #include <mmsystem.h> #include <iostream> #include <conio.h> #include <ctime> #include <iterator> #include <stdlib.h> #include <array> #include <algorithm> #include "Barco.h" #include "Tabuleiro.h" #include "lab.h" using namespace std; //variaveis globais int opcao=0; //--------------- void menu() { system("cls"); showRectAt(20, 1, 100, 25); gotoxy(25, 5); cout << " ____ _ _ _ _ _ _ "; gotoxy(25, 6); cout << "| \\ | | | | | | | \\ | | | |"; gotoxy(25, 7); cout << "| |_) | __ _ | |_ __ _ | | | |__ __ _ | \\| | __ _ __ __ __ _ | | "; gotoxy(25, 8); cout << "| _ < / _` | | __| / _` | | | | '_ \\ / _` | | . ` | / _` | \\ \\ / / / _` | | |"; gotoxy(25, 9); cout << "| |_) | | (_| | | |_ | (_| | | | | | | | | (_| | | |\\ | | (_| | \\ V / | (_| | | |"; gotoxy(25, 10); cout << "|____/ \\__,_| \\__| \\__,_| |_| |_| |_| \\__,_| |_| \\_| \\__,_| \\_/ \\__,_| |_|"; gotoxy(55, 15); cout << "_________________________________" << endl; gotoxy(60, 16); cout << " " << endl; gotoxy(66, 17); cout << "Jogar" << endl; gotoxy(66, 18); cout << "Carregar Jogo" << endl; gotoxy(66, 19); cout << "Regras" << endl; gotoxy(66, 20); cout << "Sair" << endl; gotoxy(50, 27); cout << "Desenvolvido Por Ricardo Inacio & Jose Alves 2021" << endl; if (opcao == 1) { gotoxy(66, 17); setColor(1, 15); printf("-> Jogar\n"); setColor(15, 0); } else if (opcao == 2) { gotoxy(66, 18); setColor(1, 15); printf("-> Carregar Jogo.\n"); setColor(15, 0); } else if (opcao == 3) { gotoxy(66, 19); setColor(1, 15); printf("-> Regras.\n"); setColor(15, 0); } else if (opcao == 4) { gotoxy(66, 20); setColor(1, 15); printf("-> Sair.\n"); setColor(15, 0); } } bool checkCords(int x, int y, int cords[4][2], int pos) { bool exists = false; for (int i = 0; i < 4; i++) { if (i == pos) { continue; } else { if (x == cords[i][0] && y == cords[i][1]) { exists = true; } } } return exists; } void DrawBoards(int scx[4], int scy[4]) { int i; int cli[4]; char cl[4]; int cn[4]; char letras[10] = { 'a','b','c','d','e','f','g','h','i','j' }; int savedc[4][2]; Tabuleiro t1, t2; for (i = 0; i < 4; i++) { t2.setCell(scx[i], scy[i], 'O'); } gotoxy(75, 0); t2.Draw(75, 5); gotoxy(0, 0); t1.Draw(27, 5); gotoxy(26, 3); cout << "JOGADOR"; gotoxy(110, 3); cout << "COMPUTADOR"; showRectAt(25, 4, 48, 24); showRectAt(73, 4, 48, 24); show90RectAt(25, 30, 10, 48); for (i = 0; i < 4; i++) { gotoxy(26, 31); cout << "Insira o " << i + 1 << " numero a colocar : " << endl; ; gotoxy(58, 31); do { cin >> cn[i]; if (cn[i] < 1 || cn[i] > 10) { gotoxy(26, 31); cout << " "; gotoxy(26, 31); cout << "Insira o " << i + 1 << " numero a colocar : " << endl; ; gotoxy(26, 33); cout << "O numero tem de estar contido entre 1 e 10!"; gotoxy(58, 31); } } while (cn[i] < 1 || cn[i] > 10); savedc[i][0] = cn[i]; gotoxy(26, 33); cout << " "; cout << endl; gotoxy(26, 31); cout << "Insira a " << i + 1 << " letra a colocar : " << endl; gotoxy(58, 31); do { cin >> cl[i]; if (!strchr(letras, cl[i])) { gotoxy(26, 31); cout << " "; gotoxy(26, 31); cout << "Insira a " << i + 1 << " letra a colocar : " << endl; ; gotoxy(26, 33); cout << "A letra tem de estar contida entre A e J!"; gotoxy(58, 31); } } while (!strchr(letras, cl[i])); cli[i] = int(cl[i] - 96); savedc[i][1] = cli[i]; gotoxy(26, 33); cout << " "; cout << endl; //verificar se ponto de cordenadas ja existe bool check = checkCords(cn[i], cli[i], savedc, i); while (check) { gotoxy(26, 31); cout << "Insira o " << i + 1 << " numero a colocar : " << endl; gotoxy(26, 33); cout << "Esse ponto de cordenadas ja existe!"; gotoxy(58, 31); do { cin >> cn[i]; if (cn[i] < 1 || cn[i] > 10) { gotoxy(26, 31); cout << " "; gotoxy(26, 31); cout << "Insira o " << i + 1 << " numero a colocar : " << endl; ; gotoxy(26, 33); cout << "O numero tem de estar contido entre 1 e 10!"; gotoxy(58, 31); } } while (cn[i] < 1 || cn[i] > 10); gotoxy(26, 33); cout << " "; cout << endl; gotoxy(26, 31); cout << "Insira a " << i + 1 << " letra a colocar : " << endl; gotoxy(58, 31); do { cin >> cl[i]; if (!strchr(letras, cl[i])) { gotoxy(26, 31); cout << " "; gotoxy(26, 31); cout << "Insira a " << i + 1 << " letra a colocar : " << endl; ; gotoxy(26, 33); cout << "A letra tem de estar contida entre A e J!"; gotoxy(58, 31); } } while (!strchr(letras, cl[i])); gotoxy(26, 33); cout << " "; cout << endl; check = checkCords(cn[i], cli[i], savedc, i); } savedc[i][0] = cn[i]; cli[i] = int(cl[i] - 96); savedc[i][1] = cli[i]; } for (i = 0; i < 4; i++) { t1.setCell(cn[i], int(cl[i]) - 96, 'O'); } system("cls"); gotoxy(75, 0); t2.Draw(75, 5); gotoxy(0, 0); t1.Draw(27, 5); gotoxy(26, 3); cout << "JOGADOR"; gotoxy(110, 3); cout << "COMPUTADOR"; showRectAt(25, 4, 48, 24); showRectAt(73, 4, 48, 24); // for(i=0; i<4; i++) { // cout << endl; // cout << "CORDS: (" << savedc[i][0] << "," << savedc[i][1] << "=" << cl[i] << ")" << endl; // t1.setCell(cn[i],int(cl[i])-96,'O'); // } } void gerarBarcos() { int x0, y0, dx, dy, i=0; x0 = 5; y0 = 4; dx = 10; dy = 10; Barco sub1, sub2, sub3, sub4; sub1.generateSub(1); sub2.generateSub(2); sub3.generateSub(3); sub4.generateSub(4); int sub_cordsx[4] = { sub1.get_subx(),sub2.get_subx(),sub3.get_subx(),sub4.get_subx() }; int sub_cordsy[4] = { sub1.get_suby(),sub2.get_suby(),sub3.get_suby(),sub4.get_suby() }; // cout << "DEBUG-----------------------" << endl; // for(i=0;i<4;i++){ // cout << "Cords: (" << sub_cordsx[i] << "," << char(64 + sub_cordsy[i]) << ")" << endl; // } // // cout << "----------------------------" << endl; DrawBoards(sub_cordsx, sub_cordsy); } void game() { system("cls"); //backgorund music //PlaySound(TEXT("bg.wav"), NULL, SND_FILENAME | SND_ASYNC); HWND hWnd = GetConsoleWindow(); ShowWindow(hWnd, SW_SHOWMAXIMIZED); gerarBarcos(); } int main() { int op; opcao = 1; do { menu(); op = _getch(); if (op == 80) { opcao++; } if (op == 72) { opcao--; } if (opcao > 4) { opcao = 1; } if (opcao < 1) { opcao = 4; } } while (op != 13); switch (opcao) { case 1: game(); break; case 2: //loadgame(); break; case 3: //rules(); break; case 4: exit(0); break; } //SimbolBoxList(); //cin.get(); return 0; } Tabuleiro.h: #pragma once #include "PontoNaval.h" class Tabuleiro { private: int dimx; int dimy; char M[10][10]; public: Tabuleiro(); Tabuleiro(int mdx, int mdy); virtual ~Tabuleiro(); void setDimX(int mdx) { dimx = mdx; } void setDimY(int mdy) { dimy = mdy; } int getDimX() { return dimx; } int getDimY() { return dimy; } void setCell(int l, int col, char c) { M[l - 1][col - 1] = c; } char getCell(int l, int col) { return M[l - 1][col - 1]; } void setCell(PontoNaval P, char c) { M[P.Getx() - 1][P.Getinty() - 1] = c; } char getCell(PontoNaval P) { return M[P.Getx() - 1][P.Getinty() - 1]; } void SimbolBoxList(); void DrawFirstLine(int x0, int dxcel); void DrawMiddleLine(int x0, int dxcel); void DrawDataLine(int line, int x0, int dxcel); void DrawLastLine(int x0, int dxcel); void Draw(int x0, int y0); }; tabuleiro.cpp: #include <iostream> #include "Tabuleiro.h" #include "lab.h" using namespace std; Tabuleiro::Tabuleiro() { int i, j; setDimX(10); setDimY(10); for (i = 1; i <= getDimY(); i++) { for (j = 1; j <= getDimX(); j++) { setCell(i, j, '.'); } } } Tabuleiro::Tabuleiro(int mdx, int mdy) { int i, j; setDimX(mdx); setDimY(mdy); for (i = 1; i < getDimY(); i++) { for (j = 1; j <= getDimX(); j++) { setCell(i, j, '.'); } } } Tabuleiro::~Tabuleiro() { } void Tabuleiro::SimbolBoxList() { cout << endl << endl; cout << "tabela ASCII e Extendida para as box"; cout << endl << endl; int tabela[] = { 185,186,187,188,200,201,202,203,204,206, 191,192,217,218,179,196,193,194,195,197,221,180, 45,47,60,62,88,91,92,93,94,95,238,240, 30,31,176,177,178,219,220,223,254, 59,123,124,125,143,205,189,190,207,241,242,245,249,46,58,61,127,174,175,145 }; int j = 0; for (int i = 0; i < 62; i++) { cout << tabela[i] << '\t' << (char)tabela[i] << '\t'; j++; if (j == 5) { cout << endl << endl; j = 0; } } } void Tabuleiro::DrawFirstLine(int x0, int dxcel) { int i, j; for (i = 0; i < x0 + 2; i++) { cout << " "; } cout << char(218); for (i = 0; i < getDimX(); i++) { for (j = 0; j < dxcel; j++) { cout << char(196); } if (i < getDimX() - 1) { cout << char(194); } } cout << char(191); } void Tabuleiro::DrawMiddleLine(int x0, int dxcel) { int i, j; for (i = 0; i < x0 + 2; i++) { cout << " "; } cout << char(195); for (i = 0; i < getDimX(); i++) { for (j = 0; j < dxcel; j++) { setBackColor(1); cout << char(196); resetColor(); } if (i < getDimX() - 1) { setBackColor(1); cout << char(197); resetColor(); } } cout << char(180); } void Tabuleiro::DrawLastLine(int x0, int dxcel) { int i, j; for (i = 0; i < x0 + 2; i++) { cout << " "; } cout << char(192); for (i = 0; i < getDimX(); i++) { for (j = 0; j < dxcel; j++) { cout << char(196); } if (i < getDimX() - 1) { cout << char(192); } } cout << char(217); } void Tabuleiro::DrawDataLine(int line, int x0, int dxcel) { int i; for (i = 0; i < x0; i++) { cout << " "; } if (line > 9) { cout << line; } else { cout << line << " "; } for (i = 1; i <= getDimX(); i++) { setBackColor(1); cout << char(179); cout << " " << getCell(line, i) << " "; resetColor(); } cout << char(179); } void Tabuleiro::Draw(int x0, int y0) { int i, l, dxtab, dytab, dxcel; // , dycel; // dycel = 1; dxcel = 3; dxtab = 4 * getDimX(); dytab = 1 * getDimY(); for (i = 0; i < y0; i++) { cout << endl; } for (i = 0; i < x0 + 2; i++) { cout << " "; } for (i = 0; i < getDimX(); i++) { cout << " " << char(65 + i) << " "; } cout << endl; //Draw First Line DrawFirstLine(x0, dxcel); cout << endl; DrawDataLine(1, x0, dxcel); cout << endl; //Draw Middle Lines for (l = 2; l <= getDimY(); l++) { DrawMiddleLine(x0, dxcel); cout << endl; DrawDataLine(l, x0, dxcel); cout << endl; } //Draw Last Line DrawLastLine(x0, dxcel); cout << endl << endl; }
  14. Olá, comecei a estudar tratamento de exceções e tenho um pouco de dúvidas ainda. Alguém pode me ajudar? O código é o seguinte, tenho 4 opções, e é para captar um valor de cada tipo. Minha maior dificuldade é em como capturar o case 2. (...) int valor=0; cout << "Introduza um valor de 1 a 4:"; cin >> valor; try{ switch (valor){ case 1: throw 1; break; case 2: throw '2'; break; case 3: throw "3"; break; case 4: throw 4.0; break; default: throw 505; break; } } catch (int valor) { if (valor == 505) cout << "Valor introduzido errado" << endl; else cout << "Exeção de Inteiros\n"; } catch (const char* valor) { } catch (char valor) { } catch (double valor) { } }
  15. Objetivo: Popular uma BD a partir de um .txt Pergunta: Que linguagem é mais simples/prática para o fazer? Descrição: Eu quero fazer um programa simples que me permita ler e escrever uma base de dados e ter uma interface gráfica que permita aplicar filtros à minha pesquisa. Estou a fazer esta pergunta porque sou novo na programação e queria saber a vossa opinião sobre como deveria fazer esta aplicação. As linguagens que sei sao: C C# C++ JAVASCRIPT PHP SQL Obrigado 😄
  16. Olá. Quero colocar uma imagem de fundo num programa que estou a fazer, para isto criei uma textura. No entanto estou a ter os seguintes problemas: a textura está a aparecer com uns tons azulados, já tentei mudar os vértices que correspondem às cores mas só fica pior. E outro problema: não estou a conseguir com que ocupe a janela toda: caso coloque o 3ºvértice (z) a -1 fica a ocupar a janela toda mas fica à frente dos outros objetos, o que não é suposto, aliás a partir de -5 fica à frente dos mesmos, só -6 ou valores inferiores fazem com que não se sobreponha em relação aos objetos (tornando a imagem mais pequena). float vertices[] = { -1.0f, -1.0f, -6.0f, 0.0f, 0.0f, 0.00f, 0.0f, 1.0f, 0.0f, 1.0f, -1.0f, -6.0f, 1.0f, 0.0f, 0.00f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, -6.0f, 1.0f, 1.0f, 0.00f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, -6.0f, 1.0f, 1.0f, 0.00f, 0.0f, 1.0f, 0.0f, -1.0f, 1.0f, -6.0f, 0.0f, 1.0f, 0.00f, 0.0f, 1.0f, 0.0f, -1.0f, -1.0f, -6.0f, 0.0f, 0.0f, 0.00f, 0.0f, 1.0f, 0.0f}; Estive a pesquisar sobre a transparência duma textura, e supostamente teria que usar a função que já está declarada no código: glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); No while do main: glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, texture1); ourShader.use(); glm::mat4 model = glm::mat4(1.0f); glm::mat4 view = glm::mat4(1.0f); glm::mat4 projection = glm::mat4(1.0f); projection = glm::perspective(glm::radians(45.0f), (float) SCR_WIDTH / (float) SCR_HEIGHT, 0.1f, 100.0f); unsigned int modelLoc = glGetUniformLocation(ourShader.ID, "model"); unsigned int viewLoc = glGetUniformLocation(ourShader.ID, "view"); glUniformMatrix4fv(modelLoc, 1, GL_FALSE, glm::value_ptr(model)); glUniformMatrix4fv(viewLoc, 1, GL_FALSE, &view[0][0]); ourShader.setMat4("projection", projection); glBindVertexArray(VAO); glDrawArrays(GL_TRIANGLES, 0, 6); Finalmente para se ter uma ideia do que está a acontecer: imagem que não consigo pôr aqui
  17. Olá, Estou com o seguinte problema: num programa do Visual Studio em que uso c++, tenho algumas figuras que constituem uma casa como o telhado, a porta, a janela. Sendo que faço cada um deste elementos deslocar-se para um sítio, como está no código seguinte (aqui está o exemplo da porta, o da janela terá uma deslocação para um sítio diferente, já o telhado e as paredes ficam no mesmo sítio) que funciona bem: glm::mat4 mvp = glm::ortho(-40.0f, 40.0f, -40.0f, 40.0f); unsigned int matrix = glGetUniformLocation(programID, "mvp"); glUniformMatrix4fv(matrix, 1, GL_FALSE, &mvp[0][0]); glm::mat4 trans; trans = glm::translate(glm::mat4(1.0), glm::vec3(delta, delta, 0.0f)); //direção da deslocação (se puser -delta vai na direção contrária unsigned int m = glGetUniformLocation(programID, "trans"); glUniformMatrix4fv(m, 1, GL_FALSE, &trans[0][0]); Acontece que gostava que cada elemento que se desloca também rodasse sobre si próprio, ou seja fizesse uma rotação, o código que pus a seguir ao de cima não está a ter efeito, e não estou a conseguir resolver o assunto: glm:mat4 rot = glm::mat4(1.0f); rot = glm::rotate(rot, glm::radians(0.0f), glm::vec3(0.0f, 0.0f, 1.0f)); GLint r = glGetUniformLocation(programID, "rot"); glUniformMatrix4fv(r, 1, GL_FALSE, &rot[0][0]); Será que me podiam ajudar?
  18. Olá boa noite, Estou a desenvolver um trabalho sobre uma maquina de auto atendimento, que deve de aparecer um menu e depois o utilizador escolhe o menu que quiser e deverá de aparecer o valor com o respetivo troco ou não. E eu estou com duvidas como fazer para que se possa adicionar mais um produto depois de se já ter escolhido o primeiro menu. Nesta parte foi a minha tentativa de fazer algo: case 1: printf("Escolheu o menu 'Frango sem bebida e com acompanhamento'.\n"); printf("Quer adicionar mais algum produto? (S/N)\n"); scanf("%s", &letra); switch(letra){ case 'N': printf("\nTotal: 10,89 euros \nProceda ao pagamento...\n"); scanf("%f", &dinheiro); while(dinheiro<PrecoP1){ dinheiro_falta = PrecoP1 - dinheiro; printf("\nDinheiro insuficiente, falta(m) %.2f euros\n", dinheiro_falta); scanf("%f", &falta); dinheiro = dinheiro + falta; } troco = dinheiro - PrecoP1; printf("\nRetire o seu troco...\n%.2f euros", troco); printf("\n\nAguarde a confeção do seu pedido e depois dirija-se ao balcão para o levantar, seremos rápidos, OBRIGADO!\n\n"); case 'S': printf("Insira o numero do outro produto que quer adicionar: \n"); scanf("%d", &novo_produto); } break; e este é o meu trabalho inteiro: #include<stdio.h> #include<locale.h> void escreveLinha(){ printf("\n**************************"); } void escreveTraco(){ printf("\n -------------------------------------------------------------------------------------------"); } void escreveColuna(){ printf("\t|\t|\t|\t|\t|\t"); } int main() { setlocale(LC_ALL,"Portuguese"); char letra; int menu; float troco, dinheiro, dinheiro_falta, falta, PrecoP1 = 10.89, PrecoP2 = 13.29, PrecoP3 = 15.00, PrecoP4 = 16.99, PrecoP5 = 7.50, PrecoP6 = 8.50, PrecoP7 = 3.00, PrecoP8 = 4.00, PrecoP9 = 3.50; escreveLinha(); printf("|SEJA BEM-VINDO A CHURRASQUEIRA CAMOMILA|**************************\n"); escreveTraco(); printf("\n|\t\t\t\t\t\t\t\t\t\t\t |\n| *Menu*\t *Conteúdo*\t\t\t\t\t\t *Preço*\t |\n"); printf("| 1 \t\t Frango sem bebida e com acompanhamento \t\t 10,89 euros\t |\n"); printf("| 2 \t\t Frango com bebida e acompanhamento \t\t\t 13,29 euros\t |\n"); printf("| 3 \t\t Frango com bebida, acompanhamento e sobremesa \t 15,00 euros\t |\n"); printf("| 4 \t\t Prato do dia com bebida, acompanhamento e sobremesa \t 16,99 euros\t |\n"); printf("|\t\t\t\t\t\t\t\t\t\t\t |\n"); printf("| *Unidade*\t *Conteúdo*\t\t\t\t\t\t *Preco*\t |\n"); printf("| 5 \t\t Frango \t\t\t\t\t\t 7,50 euros\t |\n"); printf("| 6 \t\t Prato do Dia \t\t\t\t\t\t 8,50 euros\t |\n"); printf("| 7 \t\t Bebida \t\t\t\t\t\t 3,00 euros\t |\n"); printf("| 8 \t\t Guarnição \t\t\t\t\t\t 4,00 euros\t |\n"); printf("| 9 \t\t Sobremesa \t\t\t\t\t\t"); printf(" 3,50 euros\t |\n"); printf("|\t\t\t\t\t\t\t\t\t\t\t |"); printf("\n| Para SAIR, marque 10 \t\t\t\t\t\t\t\t |\n"); printf("|\t\t\t\t\t\t\t\t\t\t\t |"); escreveTraco(); printf("\n\nInsira o número do produto que deseja: \n"); do{ scanf("%d",&menu); switch(menu) { case 1: printf("Escolheu o menu 'Frango sem bebida e com acompanhamento'.\n"); printf("Quer adicionar mais algum produto? (S/N)\n"); scanf("%s", &letra); switch(letra){ case 'N': printf("\nTotal: 10,89 euros \nProceda ao pagamento...\n"); scanf("%f", &dinheiro); while(dinheiro<PrecoP1){ dinheiro_falta = PrecoP1 - dinheiro; printf("\nDinheiro insuficiente, falta(m) %.2f euros\n", dinheiro_falta); scanf("%f", &falta); dinheiro = dinheiro + falta; } troco = dinheiro - PrecoP1; printf("\nRetire o seu troco...\n%.2f euros", troco); printf("\n\nAguarde a confeção do seu pedido e depois dirija-se ao balcão para o levantar, seremos rápidos, OBRIGADO!\n\n"); case 'S': printf("Insira o numero do outro produto que quer adicionar: \n"); scanf("%d", &novo_produto); } break; case 2: printf("Escolheu o menu 'Frango com bebida e acompanhamento'.\n"); printf("\nTotal: 13,29 euros \nProceda ao pagamento...\n"); scanf("%f", &dinheiro); while(dinheiro<PrecoP2){ dinheiro_falta = PrecoP2 - dinheiro; printf("\nDinheiro insuficiente, falta(m) %.2f euros\n", dinheiro_falta); scanf("%f", &falta); dinheiro = dinheiro + falta; } troco = dinheiro - PrecoP2; printf("\nRetire o seu troco...\n%.2f euros", troco); printf("\n\nAguarde a confeção do seu pedido e depois dirija-se ao balcão para o levantar, seremos rápidos, OBRIGADO!\n\n"); break; case 3: printf("Escolheu o menu 'Frango com bebida, com acompanhamento e sobremesa'.\n"); printf("\nTotal: 15,00 euros \nProceda ao pagamento...\n"); scanf("%f", &dinheiro); while(dinheiro<PrecoP3){ dinheiro_falta = PrecoP3 - dinheiro; printf("\nDinheiro insuficiente, falta(m) %.2f euros\n", dinheiro_falta); scanf("%f", &falta); dinheiro = dinheiro + falta; } troco = dinheiro - PrecoP3; printf("\nRetire o seu troco...\n%.2f euros", troco); printf("\n\nAguarde a confeção do seu pedido e depois dirija-se ao balcão para o levantar, seremos rápidos, OBRIGADO!\n\n"); break; case 4: printf("Escolheu o menu 'Prato do dia com bebida, acompanhamento e sobremesa'.\n"); printf("\nTotal: 16,99 euros \nProceda ao pagamento...\n"); scanf("%f", &dinheiro); while(dinheiro<PrecoP4){ dinheiro_falta = PrecoP4 - dinheiro; printf("\nDinheiro insuficiente, falta(m) %.2f euros\n", dinheiro_falta); scanf("%f", &falta); dinheiro = dinheiro + falta; } troco = dinheiro - PrecoP4; printf("\nRetire o seu troco...\n%.2f euros", troco); printf("\n\nAguarde a confeção do seu pedido e depois dirija-se ao balcão para o levantar, seremos rápidos, OBRIGADO!\n\n"); break; case 5: printf("Escolheu uma unidose de 'Frango'.\n"); printf("\nTotal: 7,50 euros \nProceda ao pagamento...\n"); scanf("%f", &dinheiro); while(dinheiro<PrecoP5){ dinheiro_falta = PrecoP5 - dinheiro; printf("\nDinheiro insuficiente, falta(m) %.2f euros\n", dinheiro_falta); scanf("%f", &falta); dinheiro = dinheiro + falta; } troco = dinheiro - PrecoP5; printf("\nRetire o seu troco...\n%.2f euros", troco); printf("\n\nAguarde a confeção do seu pedido e depois dirija-se ao balcão para o levantar, seremos rápidos, OBRIGADO!\n\n"); break; case 6: printf("Escolheu uma unidose de 'Prato do dia'.\n"); printf("\nTotal: 8,50 euros \nProceda ao pagamento...\n"); scanf("%f", &dinheiro); while(dinheiro<PrecoP6){ dinheiro_falta = PrecoP6 - dinheiro; printf("\nDinheiro insuficiente, falta(m) %.2f euros\n", dinheiro_falta); scanf("%f", &falta); dinheiro = dinheiro + falta; } troco = dinheiro - PrecoP6; printf("\nRetire o seu troco...\n%.2f euros", troco); printf("\n\nAguarde a confeção do seu pedido e depois dirija-se ao balcão para o levantar, seremos rápidos, OBRIGADO!\n\n"); break; case 7: printf("Escolheu uma unidose de 'Bebida'.\n"); printf("\nTotal: 3,00 euros \nProceda ao pagamento...\n"); scanf("%f", &dinheiro); while(dinheiro<PrecoP7){ dinheiro_falta = PrecoP7 - dinheiro; printf("\nDinheiro insuficiente, falta(m) %.2f euros\n", dinheiro_falta); scanf("%f", &falta); dinheiro = dinheiro + falta; } troco = dinheiro - PrecoP7; printf("\nRetire o seu troco...\n%.2f euros", troco); printf("\n\nDirija-se ao balcão para levantar o seu pedido, OBRIGADO!\n\n"); break; case 8: printf("Escolheu uma unidose de 'Acompanhamento'.\n"); printf("\nTotal: 4,00 euros \nProceda ao pagamento...\n"); scanf("%f", &dinheiro); while(dinheiro<PrecoP8){ dinheiro_falta = PrecoP8 - dinheiro; printf("\nDinheiro insuficiente, falta(m) %.2f euros\n", dinheiro_falta); scanf("%f", &falta); dinheiro = dinheiro + falta; } troco = dinheiro - PrecoP8; printf("\nRetire o seu troco...\n%.2f euros", troco); printf("\n\nAguarde a confeção do seu pedido e depois dirija-se ao balcão para o levantar, seremos rápidos, OBRIGADO!\n\n"); break; case 9: printf("Escolheu uma unidose de 'Sobremesa'.\n"); printf("\nTotal: 3,50 euros \nProceda ao pagamento...\n"); scanf("%f", &dinheiro); while(dinheiro<PrecoP9){ dinheiro_falta = PrecoP9 - dinheiro; printf("\nDinheiro insuficiente, falta(m) %.2f euros\n", dinheiro_falta); scanf("%f", &falta); dinheiro = dinheiro + falta; } troco = dinheiro - PrecoP9; printf("\nRetire o seu troco...\n%.2f euros", troco); printf("\n\nDirija-se ao balcão para levantar o seu pedido, OBRIGADO!\n\n"); break; case 10: printf("Temos muita pena que não queira continuar a operação, OBRIGADO E VOLTE SEMPRE! \n"); break; default: printf("\nNão existe o producto escolhido, volte a introduzir o número do produto que deseja: \n"); } } while(menu>10); } Cumprimentos,
  19. Carmo Claro

    Menu

    Olá, estou a fazer um projeto em c++,"gestão de alunos" com vários menus, como fazer para voltar. Ex: 1- inserir dados; 2 - Consultar dados e 3- sair. obrigado
  20. Como faço pra esse código ler vários números até o usuário digitar -1 e no fim mostrar a soma dos divisores de cada um? #include <iostream> using namespace std; int main() { int valor,i, soma; soma = 0, i = 1; cin>>valor; while(i < valor and valor !=-1) { if (valor%i==0) { soma += i; } i++; } cout<<soma<<endl; return 0; }
  21. gonca16

    Converter

    Olá Como posso converter um int para string? Desde ja Obrigado
  22. gonca16

    Decifrar Mensagem

    Boa tarde Estou a tentar fazer um exercicio quero criar um programa que lê-se as combinaçoes dos teclados antigos dos telemoveis por exemplo 222 2 333 33 daria "cafe" como é que posso fazer isto ? Não existe nenhuma função que agrupe os numeros num array para ficar {"222","2","333","33"}, isto facilitaria bastante o problema. Desde Ja Obrigado
  23. Manipulação de Arquivos do Tipo Texto Ver Ficheiro Notes de aula sobre manipulação de arquivos de texto em C++. Universidade de São Paulo Departamento de Física e Matemática Autor: Prof. Dr. José Augusto Baranauskas Submetido por Erik Submetido em 09/11/2020 Categoria Textos Académicos Licença Website http://dcm.ffclrp.usp.br/~augusto/teaching/ici/ Submetido pelo Autor? Não
  24. Version 1.0.0

    31 downloads

    Notes de aula sobre manipulação de arquivos de texto em C++. Universidade de São Paulo Departamento de Física e Matemática Autor: Prof. Dr. José Augusto Baranauskas
  25. Sol

    Classes Combinadas

    Ola! Preciso de ajuda com meu programa. Por favor! Tenho 3 Classes: Complexo: que faz operações entre números complexos, Matriz: cria matriz de complexos e faz operações entre matrizes Por ultimo, criei a Classe sistema que possui métodos para calcular a resolução de um sistema linear pelo método iterativo de Gauss, sendo os elementos da Matriz (Sistema) todos complexos. Até ai ok. O meu bug esta a ser em manipular as coisas no Main.cpp Preciso: primeiro verificar convergencia(), depois se convergir faço o calculo pelo metodo Gauss(). Por ultimo exibir a solução dada pelo metodo resultados(). Com duas classes fui até bem. Com tres já estou a misturar as coisas. #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include"Complexo.h" #include"Matriz.h" #include"Sistema.h" `insira o código aqui`int main() { Matriz AB,X; Sistema Y; AB.lerMatriz(); AB.escreverMatriz(); Y = AB; // verificar convergencia da matriz A if (Y.convergencia()) { printf("\nSistema pode ser calculado pelo metodo iterativo de Gauss-Siedel\n"); } // se convergencia ok calcular gauss } #pragma once class Complexo { private: float re, im; public: Complexo(); // Construtor cria um número nulo Complexo(float r, float i); void atribuir(float r, float i); void lerComplexo(); // ler complexo do teclado void imprimir(); // escrever complexo para o monitor float real() { return re; } // devolve coeficiente real float imaginario() { return im; } // devolve coeficiente imaginário float modulo(); // devolve módulo do número float argumento(); // devolve argumento do número Complexo conjugado(); // devolve o conjugado do número Complexo simetrico(); // devolve o simétrico do número Complexo potencia(float exp); // devolve potência do número // operações entre 2 complexos Complexo operator +(const Complexo& c); // adição Complexo operator -(const Complexo& c); // subtração Complexo operator *(const Complexo& c); // multiplicação Complexo operator /(const Complexo& c); // divisão // operações entre um complexo (operador da esquerda) e um real (operador da // direita) Complexo operator *(float f); Complexo operator /(float f); }; #define _CRT_SECURE_NO_WARNINGS #include "Complexo.h" #include<stdio.h> #include<math.h> Complexo::Complexo() { re = 0; im = 0; } Complexo::Complexo(float r, float i) { re = r; im = i; } void Complexo::atribuir(float r, float i) { float novo_re = r; float novo_im = i; } void Complexo::lerComplexo() { printf("Parte real:"); scanf("%f", &re); printf("\n"); printf("Parte imaginaria:"); scanf("%f", &im); printf("\n"); } void Complexo::imprimir() // escrever complexo para o monitor { printf("%.1f +%.1fi\t", re, im); } float Complexo::modulo() // devolve módulo do número { float m; m = float(sqrt(pow(re, 2) + pow(im, 2))); return m; } float Complexo::argumento() // devolve argumento do número { float arg; arg = float(atan2(im, re)); return arg; } Complexo Complexo::conjugado() // devolve o conjugado do número { Complexo c; c.re = re; c.im = -im; return c; } Complexo Complexo::simetrico() // devolve o simétrico do numero { Complexo s; s.re = re * (-1); s.im = im * (-1); return s; } Complexo Complexo::potencia(float exp) // devolve potência do número { Complexo p; float mod; mod = float(pow(modulo(), exp)); p.re = float(mod * cos(exp * argumento())); p.im =float( mod * sin(exp * argumento())); return p; } // operações entre 2 complexos Complexo Complexo::operator +(const Complexo& c) // adição { Complexo res; res.re = re + c.re; res.im = im + c.im; return res; } Complexo Complexo::operator -(const Complexo& c) // subtração { Complexo res; res.re = re - c.re; res.im = im - c.im; return res; } Complexo Complexo::operator *(const Complexo& c) // multiplicação { Complexo res; res.re = re * c.re - im * c.im; res.im = re * c.im + im * c.re; return res; } Complexo Complexo::operator /(const Complexo& c) // divisão { Complexo num, den, res; num = Complexo(re, im); den = c; num = *this * den.conjugado(); den = den * den.conjugado(); return Complexo(num.re / den.re, num.im / den.re); } // operações entre um complexo (operador da esquerda) e um real (operador da // direita) Complexo Complexo::operator *(float f) { Complexo res; res.re = re * f; res.im = im * f; return res; } Complexo Complexo::operator /(float f) { Complexo res; res.re = re / f; res.im = im / f; return res; } #pragma once #include "complexo.h" class Matriz { friend class Sistema; private: Complexo** elems; // elementos da matriz int nlin, ncol; // número de linhas e colunas public: void inicia(); // função para iniciar matriz void delete_matriz(); // função para apagar matriz Matriz(); //um construtor por omissão(a ordem da matriz é definida posteriormente) Matriz(int lin, int col); //um construtor que recebe a ordem da matriz e cria uma matriz com elementos a zero Matriz(const Matriz& m2); //um construtor por cópia ~Matriz(); // Um destrutor para eliminar os dados dinâmicos da classe void lerMatriz(); void escreverMatriz(); bool podeSomar(const Matriz& m2); bool podeMultiplicar(const Matriz& m2); Matriz& operator=(const Matriz& m2); Matriz operator+(const Matriz& m2); Matriz operator*(const Matriz& m2); }; #define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <stdio.h> #include <string.h> #include <math.h> #include "Matriz.h" #include"Sistema.h" void Matriz::inicia() { elems = new Complexo * [nlin]; for (int i = 0; i < nlin; i++) { elems[i] = new Complexo[ncol]; } } void Matriz::delete_matriz() { for (int i = 0; i < nlin; i++) { delete[] elems[i]; } delete[] elems; } Matriz::Matriz() //um construtor por omissão(a ordem da matriz é definida posteriormente) { nlin = 1; ncol = 1; inicia(); } Matriz::Matriz(int lin, int col) //um construtor que recebe a ordem da matriz e cria uma matriz com elementos a zero { delete_matriz(); nlin = lin; ncol = col; inicia(); } Matriz::Matriz(const Matriz& m2) //um construtor por cópia { nlin = m2.nlin; ncol = m2.ncol; inicia(); for (int i = 0; i < nlin; i++) for (int j = 0; j < ncol; j++) elems[i][j] = m2.elems[i][j]; } Matriz::~Matriz() // Um destrutor para eliminar os dados dinâmicos da classe { delete_matriz(); } void Matriz::lerMatriz() { delete_matriz(); printf("Digite a ordem da Matriz Aumentada. Numero de linha e numero de colunas respectivamente\n\n"); printf("OBS: O numero de linhas da matriz aumentada corresponde ao numero de esquacoes do sistema\n"); printf("O numero de colunas = numero de linhas +1\n"); scanf("%d %d", &nlin, &ncol); inicia(); for (int i = 0; i < nlin; i++) { for (int j = 0; j < ncol; j++) { printf("\nDigite a posicao %dx%d da Matriz AB\n", i + 1, j + 1); elems[i][j].lerComplexo(); } } } void Matriz::escreverMatriz() { printf("\n"); for (int i = 0; i < nlin; i++) { for (int j = 0; j < ncol; j++) { elems[i][j].imprimir(); } printf("\n"); } } bool Matriz::podeSomar(const Matriz& m2) { return (nlin == m2.nlin && ncol == m2.ncol); } bool Matriz::podeMultiplicar(const Matriz& m2) { return (ncol == m2.nlin); } Matriz& Matriz::operator = (const Matriz& m2)// Operador Igual { delete_matriz(); nlin = m2.nlin; ncol = m2.ncol; inicia(); for (int i = 0; i < nlin; i++) { for (int j = 0; j < ncol; j++) { elems[i][j] = m2.elems[i][j]; } } return *this; } Matriz Matriz::operator + (const Matriz& m2) { Matriz mat(nlin, ncol); for (int i = 0; i < nlin; i++) { for (int j = 0; j < ncol; j++) { mat.elems[i][j] = elems[i][j] + m2.elems[i][j]; } } return mat; } Matriz Matriz::operator*(const Matriz& m2) { Matriz mat(nlin, m2.ncol); for (int i = 0; i < nlin; i++) { for (int j = 0; j < m2.ncol; j++) { for (int k = 0; k < ncol; k++) { mat.elems[i][j] = mat.elems[i][j] + (elems[i][k] * m2.elems[k][j]); } } } return mat; } #pragma once #include "Complexo.h" #include "Matriz.h" class Sistema { friend class Matriz; private: int ordem; public: Sistema() { Matriz(); } Matriz Matriz_AB;// matriz aumentada Matriz X; // vetor de icognitas void gauss(); bool convergencia(); void resultados(); }; #define _CRT_SECURE_NO_WARNINGS #define max_iter 100 //número máximo de iterações admissível #define tol 0.0001 //erro máximo admitido #include<stdio.h> #include "Sistema.h" #include "Matriz.h" #include "Complexo.h" #include <math.h> void Sistema::gauss() { Matriz X(ordem, 1);//vector das incógnitas na iteração actual Complexo x_antigo; //valor da incógnita na iteração anterior Complexo soma; float erro_x = 0; // erro_x - o erro da incógnita float erro_iter = 0; //erro_iter - erro da iteração int niter = 0; //numero de iteracoes do { niter++; float erro_iter = 0; for (int i = 0; i < ordem; i++) { x_antigo = X.elems[i][0]; //soma =0 for (int j = 0; j < ordem; j++) { if (j != i) soma = soma + (Matriz_AB.elems[i][j] * X.elems[j][1]); } X.elems[i][1] = (Matriz_AB.elems[i][ordem]) - (soma) / Matriz_AB.elems[i][i]; erro_x = (X.elems[i][0] - x_antigo).modulo(); if (erro_x > erro_iter) erro_iter = erro_x; } } while (erro_x > tol && niter < max_iter);//ver erro x return X; } bool Sistema::convergencia() { Complexo soma; for (int i = 0; i < ordem; i++) { for (int j = 0; j < ordem; j++) { if (j != i) soma = soma + Matriz_AB.elems[i][j]; } if (Matriz_AB.elems[i][i].modulo() > soma.modulo()) return true; else return false; } } void Sistema::resultados() { for(int i=0;i<ordem;i++) X.elems[i][1].imprimir(); }
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.