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

  1. 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()".
  2. Fabio Machado

    Contador de Panquecas

    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;
  3. 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 }
  4. 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
  5. 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
  6. 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; }
  7. Erik

    Dúvidas em Exceções com C++

    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) { } }
  8. 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 😄
  9. Fernando Couto

    Textura: imagem de fundo

    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
  10. Fernando Couto

    Rotação dum objeto

    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?
  11. OceanDean

    Como é que começo a aprender C++?

    Olá, quero tornar-me um criador de jogos. Depois de alguma pesquisa no youtube que descobri, que preciso estritamente de uma matemática. O que pode dizer sobre isto? De que tipo exacto de matemática preciso? a que nível?
  12. TiagoCP

    Máquina auto atendimento

    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,
  13. 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
  14. amelia

    Divisores de um números

    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; }
  15. gonca16

    Converter

    Olá Como posso converter um int para string? Desde ja Obrigado
  16. 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
  17. 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
  18. Version 1.0.0

    15 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
  19. 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. Main.cpp #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 } Complexo.h #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); }; Complexo.cpp #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; } Matriz.h #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); }; Matriz.cpp #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; } Sistema.h #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(); }; Sistema.cpp #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(); }
  20. Gpffg

    Curso programador

    Boas! Comecei a tirar um curso de programação e neste momento estou a aprender codigos em c++ mas estou com dficuldades em evoluir e gostaria de saber se havia algum curso de c++ gratuito! Obrigado!
  21. Gabriele

    Condição de paragem de ciclo

    Olá! Não sabia ao certo qual título colocar, então, perdão. Eu estou tentando editar esse software de forma que ele contenha mais de 3 jogadas (melhor de 3) e que o jogador possa "parar" de jogar quando quiser (quando digitar 4), de forma que ni final mostre o placar. Porém, assim que eu compilo o código, ele mostra apenas o primeiro printf. #include <stdlib.h> #include <stdio.h> #include <time.h> #define PEDRA 1 #define PAPEL 2 #define TESOURA 3 int pontosJogador; int pontosComputador; void jogo(); void imprimeItem(int item); int verifica(int p1, int p2); int main(){ srand(time(NULL)); //usado para gerar numeros diferentes printf(" PEDRA - PAPEL - TESOURA \n"); int i; for(i=0; i!=4; i=i){ while(i != 4){ } jogo(); printf("-------------------------------------------------------------------------------\n"); } printf(" Total de Pontos\n"); printf(" Voce: %d \n", pontosJogador); printf(" Computador: %d \n", pontosComputador); printf("\n Obrigado por jogar!"); system("pause>nul"); return 0; } void jogo(){ int itemJogador; int itemComputador; printf("\n Escolha 1.Pedra 2.Papel 3.Tesoura 4.Sair\n Sua escolha: "); scanf("%d", &itemJogador); //jogador faz sua escolha itemComputador = rand()%3+1; //computador faz sua escolha printf("\n Voce -> "); imprimeItem(itemJogador); printf(" x "); imprimeItem(itemComputador); printf(" <- Computador.\n"); int ganhador = verifica(itemJogador, itemComputador); printf("\n"); if(ganhador == 1){ printf(" VOCE GANHOU!\n"); pontosJogador++; } else if(ganhador == 2){ printf(" COMPUTADOR GANHOU!\n"); pontosComputador++; } else{ printf(" EMPATOU!\n"); } printf("\n"); } void imprimeItem(int item){ if(item == PEDRA){ printf("PEDRA"); } else if(item == PAPEL){ printf("PAPEL"); } else{ printf("TESOURA"); } } int verifica(int p1, int p2){ /*Função que verifica qual jogador ganhou e retorna 1 ou 2 retorna 0 ao empatar*/ int ganhador; if(p1 == p2){ //empate ganhador = 0; } if(p1==PEDRA && p2==TESOURA){ ganhador = 1; } if(p1==PEDRA && p2==PAPEL){ ganhador = 2; } if(p1==PAPEL && p2==PEDRA){ ganhador = 1; } if(p1==PAPEL &&p2==TESOURA){ ganhador = 2; } if(p1==TESOURA && p2==PAPEL){ ganhador = 1; } if(p1==TESOURA && p2==PEDRA){ ganhador = 2; } return ganhador; }
  22. Gabriele

    Código de repetição While

    Olá, eu estou tendo um problema com esse código. Eu não consegui notar onde ele tá erro (pois sou novata em programação), mas ele sempre pede um número e não faz o algoritmo novamente, apenas continua no loop da pergunta. Alguém pode me ajudar? Agradeço #include <stdio.h> #include <stdlib.h> main() { char ch; int num, i; i = 0; while (1){ printf("Digite um numero. \n"); scanf("%d", &num); while (i < 10) { i++; printf("\n %4d X %2d = %4d", num, i, i * num); } printf("\n\n\n"); } system("pause"); }
  23. steaxlex

    0,5 em número inteiro

    Boa tarde. Sou iniciante na programação (só sei linguagens) e em um dos exercicios que estava a fazer surgiu uma dúvida por causa de algo que já li. O exercicio é o seguinte: O resultado que me deu é 0.5 (no papel), mas como é pedido um número inteiro, 0.5 é igual a 0 ou a 1? Pergunto porgue se é um número inteiro terá de ser "arredondado", certo? 0.5 é arredondado para cima ou para baixo? Penso que será igual a 0, mas não tenho a certeza, apesar de fazer o "cout" no codeblocks e dar 0, sem qualquer erro. Pergunta básica, mas que para mim é de ajuda. Obrigado desde já.
  24. Diogo Carlos Almeida

    menus e sub menus

    estava a criar um projecto final de modulo e preciso usar ficheiros em linguagem c sobre qualuer assunto ou tema, até ai ok e surgio-me a necessidade de criar um sub menu para o menu inicial por exemplo um programa sobre as ligas de footbol portuguesas como menu (primeira liga ,liga nos,etc) e dentro das ligas as equipas. sendo que assim que seleciono uma opçao no menu "inicial" o programa fecha sem abrir o sub menu meu programa aqui: #include <stdio.h> #include <cstdlib> main() { int opcao; int opcaot; int opcaog; int opcaol; FILE *f; char c; printf("Menu:\n"); printf("1) Tour de France\n"); printf("2) Giro D'Italia'\n"); printf("3) La Vuelta\n"); printf("4) Sair\n "); scanf("%c", &opcao); switch(opcao) { case '1': switch(opcaot) { printf("Tour de France\n"); printf("1-tabela geral - camisola amarela\n"); printf("2-tabela de pontos - camisola verde\n"); printf("3-tabela da montanha - camisola da montanha\n"); printf("4-tabela da juventude - camisola branca\n"); printf("5-tabela de equipas\n"); printf("6-ciclista mais combativo - camisola vermelha\n"); scanf("%c", &opcaot); system("close"); break; case '2': printf("Giro D'Italia\n"); switch(opcaog) { printf("Giro DItalia\n"); printf("1-tabela geral - camisola amarela\n"); printf("2-tabela de pontos - camisola verde\n"); printf("3-tabela da montanha - camisola da montanha\n"); printf("4-tabela da juventude - camisola branca\n"); printf("5-tabela de equipas\n"); printf("6-ciclista mais combativo - camisola vermelha\n"); scanf("%c", &opcaog); system("close"); break; break; case '3': printf("La Vuelta\n"); switch(opcaol) { printf("La Vuelta\n"); printf("1-tabela geral - camisola amarela\n"); printf("2-tabela de pontos - camisola verde\n"); printf("3-tabela da montanha - camisola da montanha\n"); printf("4-tabela da juventude - camisola branca\n"); printf("5-tabela de equipas\n"); printf("6-ciclista mais combativo - camisola vermelha\n"); scanf("%d",&opcaol); system("close"); break; } break; case '4': printf("O programa sera encerrado\n"); break; system("close"); break; } } } }
  25. Ola! Estou com um TP da faculdade em que tenho duas classes: Complexo e Matriz. O programa final deve exibir a soma e a multiplicação de duas matrizes de numeros complexos. O programa nao da erro porem nao exibe a soma e a multiplicação das matrizes. Alguem poderia ajudar-me? #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 = pow(modulo(), exp); p.re = mod * cos(exp * argumento()); p.im = 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 { private: Complexo** elems; // elementos da matriz int nlin, ncol; // número de linhas e colunas public: 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" Matriz::Matriz() //um construtor por omissão(a ordem da matriz é definida posteriormente) { nlin = 0; ncol = 0; elems = NULL; } Matriz::Matriz(int lin, int col) //um construtor que recebe a ordem da matriz e cria uma matriz com elementos a zero { nlin = lin; ncol = col; elems = new Complexo* [nlin]; for (int i = 0; i < nlin; i++) { elems[i] = new Complexo[ncol]; for (int j = 0; j < ncol; j++) { elems[i][j]=Complexo(); } } } Matriz::Matriz(const Matriz& m2) //um construtor por cópia { Matriz(m2.nlin, m2.ncol); 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 { for (int i = 0; i < nlin; i++) delete elems[i]; delete[]elems; } void Matriz:: lerMatriz() { printf("Digite a ordem da matriz. Numero de linha e numero de colunas respectivamente\n"); scanf("%d %d", &nlin, &ncol); elems = new Complexo* [nlin]; for (int i = 0; i < nlin; i++) { elems[i] = new Complexo[ncol]; for (int j = 0; j < ncol; j++) { printf("\nDigite a posição %dx%d da Matriz\n",i+1,j+1); elems[i][j].lerComplexo(); } } } void Matriz::escreverMatriz() { 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) { if (nlin == m2.nlin && ncol == m2.ncol) return true; else return false; } bool Matriz::podeMultiplicar(const Matriz& m2) { if (ncol == m2.nlin) return true; else return false; } Matriz& Matriz::operator = (const Matriz& m2)// Operador Igual { Matriz(m2.nlin, m2.ncol); 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 res(m2.nlin,m2.ncol); for (int i = 0; i < nlin; i++) for (int j = 0; j < ncol; j++) { res.elems[i][j] = elems[i][j] + m2.elems[i][j]; } return res; } Matriz Matriz::operator*(const Matriz& m2) { Matriz res(m2.nlin,m2.ncol); // matriz resultado for (int i = 0; i < m2.nlin; i++) for (int j = 0; j < m2.ncol; j++) { res.elems[i][j] = m2.elems[i][j] + (elems[i][j] * m2.elems[i][j]); } return res; } #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include"Complexo.h" #include"Matriz.h" #include"Complexo.h" int main() { Matriz A, B, C; A.lerMatriz(); A.escreverMatriz(); B.lerMatriz(); B.escreverMatriz(); if ((A.podeSomar(B)) != 0) { C = A + B; C.escreverMatriz(); } else { printf("\nSOMA NAO PODE SER EFETUADA"); } if ((A.podeMultiplicar(B)) != 0) { C = A * B; C.escreverMatriz(); } else { printf("\nMULTIPLICACAO NAO PODE SER EFETUADA"); } }
×
×
  • 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.