Jump to content

Search the Community

Showing results for tags 'c++'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Bem-vindos ao Portugal-a-Programar
    • Sugestões, Críticas ou Dúvidas relativas ao P@P
    • Acerca do P@P
  • Comunidade a Trabalhar
    • Wiki P@P
    • Apresentação de Projectos de Programação
    • Downloads
  • Revista PROGRAMAR
    • Revista PROGRAMAR
  • Desenvolvimento Geral
    • C
    • C++
    • Java
    • Haskell
    • 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
    • Automação Industrial
    • Matemática
    • Dúvidas e Discussão de Programação
    • Notícias de Tecnologia
  • Outras Áreas
    • 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...

Found 1,702 results

  1. 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(); }
  2. Luis Briga

    Dificuldade num exercício de funções

    Boas, estou com um problema no código ao chamar uma função para o programa principal. O exercício pretende que o utilizador introduza 5 números e usando uma função que ao ser chamada verifique se o array dos números lido é positivo, se não for, o programa acaba, usando um return ou exit(). O meu problema é que ao chamar essa função para o programa principal não faz absolutamente nada, é como se não estivesse ali. O meu código é o seguinte: Agradeço a quem possa ajudar #include <stdio.h> #include <iostream> #include <locale.h> int positivo (int A[5]) { int i; if ((A[i])<0){ printf ("\n Erro... Isso não é um número positivo!"); scanf ("%d",&A[i]); } } int main () { setlocale (LC_ALL,"Portuguese"); int num[5],i; for (i=1;i<=5;i++) { printf ("\n Número %d: ",i); scanf ("%d",&(num[i])); positivo (num); } for (i=1;i<=5;i++) { printf ("\n %d",num[i]); } }
  3. Fábio Costa

    C++ & directX

    Boas... C++ & dirextx são as melhores plataformas para o desenvolvimento de jogos 3d? se nao, quais? Como interligar? Obrigado
  4. 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!
  5. 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; }
  6. 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"); }
  7. steaxlex

    ANSWERED 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á.
  8. 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; } } } }
  9. 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"); } }
  10. Arthur Rennan da Silva

    Código nao é executado como Planejado

    #include <stdio.h> #include <locale.h> #include <windows.h> #include <ctype.h> #include <iostream> using namespace std; /* Zona de Variaveis */ int vetor[5][5];//vetor com limite de 5linhas com 5 de colunas (1 numeros pares,2 numeros impares,3 nulo,4 positivos,5 negativos) int verificador,i; /* Corpo Principal */ main(){ setlocale(LC_ALL, "Portuguese"); printf("Olá usuário vamos classificar um número?\n"); for(i=0; i<5; i++){ cout<<"\nIntroduza Número: "; cin>>verificador; //scanf("%d",&verificador); if((verificador%2)==0){ verificador=vetor[i][1]; }else { verificador=vetor[i][2]; } if(verificador=NULL){ //Considerei o Nulo como uma variavel que nao tenha definido valor e nao o zero verificador=vetor[i][3]; } if(verificador<0){ verificador=vetor[i][5]; } if(verificador>0){ verificador=vetor[i][4]; } if(verificador==0){ printf("Erro 404\n"); } } cout<<"Que tipos de números quer verificar?! \n1- Numeros pares \n2- Numeros Impares \n3- Nulo \n4- Numeros positivos \n5- Numeros negativos"; } Entao, eu gostaria de saber porque qualquer numero que introduzo ele assume como 0 e vai para o ultimo IF dizendo a mensagem que fiz?!
  11. Lucas Júlio de Souza

    Posso colocar uma condição no case?

    Queria saber se posso colocar uma condição no case. Ex: int a,b; cin>> a; Switch(a) {Case a==b: Cout<<"a é igual a b.";}
  12. Luis Briga

    ANSWERED Arrays de caracteres

    Olá, sou um aluno de informática de 11º ano e neste momento estou a estudar a linguagem de programação c++. Tenho um exercício cujo objetivo do programa é ler um número inteiro e converte-lo para números romanos usando obrigatoriamente arrays . Tentei resolver mas apenas consegui usando o comando switch, e queria conseguir resolver o exercício usando arrays (strings). O meu código (usando o comando switch) é o seguinte: Agradecia imenso a quem me pudesse ajudar. Cumprimentos. #include <stdio.h> #include <locale.h> int main (){ setlocale (LC_ALL,"Portuguese"); int numero, unidades, dezenas, centenas, milhares; printf ("\n Indique um número: "); scanf("%d",&numero); unidades = numero % 10; numero /= 10; dezenas = numero % 10; numero /= 10; centenas = numero % 10; numero /= 10; milhares = numero % 10; numero /= 10; switch (milhares){ case 1: printf ("M"); break; case 2: printf ("MM"); break; case 3: printf ("MMM"); break; } switch (centenas){ case 1: printf("C"); break; case 2: printf("CC"); break; case 3: printf("CCC"); break; case 4: printf("CD"); break; case 5: printf("D"); break; case 6: printf("DC"); break; case 7: printf("DCC"); break; case 8: printf("DCCC"); break; case 9: printf("CM"); break; } switch (dezenas){ case 1: printf("X"); break; case 2: printf("XX"); break; case 3: printf("XXX"); break; case 4: printf("XL"); break; case 5: printf("L"); break; case 6: printf("LX"); break; case 7: printf("LXX"); break; case 8: printf("LXXX"); break; case 9: printf("XC"); break; } switch (unidades){ case 1: printf("I"); break; case 2: printf("II"); break; case 3: printf("III"); break; case 4: printf("IV"); break; case 5: printf("V"); break; case 6: printf("VI"); break; case 7: printf("VII"); break; case 8: printf("VIII"); break; case 9: printf("IX"); break; } return 0; }
  13. Pedro Pinto

    Programa euromilhões em c++

    Boa tarde. Gostaria que me ajudassem a corrigir este algoritmo. Tenho de fazer um programa que simule o euromilhões e ainda verificar quantos números acertei e atribuir prémios respetivos. Os contadores parecem não estar a funcionar corretamente. O algoritmo é o seguinte: #include <iostream> #include <stdio.h> #include <time.h> #include <stdlib.h> using namespace std; int z; int y; int numeros[5]; int i; int estrelas[2]; int c; int w,u; int contador=0; int contador2=0; void chave_aleatoria(int numeros_chave[]) { srand(time(NULL)); cout << "os numeros sao"<<endl; for(z=0;z<5;z++) { numeros_chave[z]= 1+rand() % 50; cout << numeros_chave[z] << endl; if (numeros==numeros_chave[z]) { contador++; } } } void chave_aleatoria2(int estrelas_chave[]) { srand(time(NULL)); cout << "as estrelas sao"<<endl; for(y=0;y<2;y++) { estrelas_chave[y]= 1+rand() % 12; cout << estrelas_chave[y] << endl; if (estrelas[c]==estrelas_chave[y]) { contador2++; } } } int main() { char a; for (i=0;i<5;i++) { do { cout << "Introduza um numero "<< endl; cin >> numeros; a='n'; for (a=0;a<i;a++) { if (numeros[a]==numeros) { a='s'; } } } while (numeros<1 || numeros>50 || a=='s'); } for (c=0;c<2;c++) { do { cout << "Introduza uma estrela " << endl; cin >> estrelas[c]; a='n'; for (a=0;a<i;a++) { if (estrelas[a]==estrelas[c]) { a='s'; } } } while (estrelas[c]<1 || estrelas[c]>12 || a=='s'); } int numeros_chave[5]; chave_aleatoria(numeros_chave); int estrelas_chave[2]; chave_aleatoria2(estrelas_chave); if (contador==2 && contador2==0) { cout << "acertou 2 numeros e por isso venceu o decimo terceiro premio"; } if (contador==2 && contador2==1) { cout << "acertou 2 numeros e 1 estrela e por isso venceu o decimo segundo premio"; } if (contador==1 && contador2==2) { cout << "acertou 1 numero e 2 estrelas e por isso venceu o decimo primeiro premio"; } if (contador==3 && contador2==0) { cout << "acertou 3 numeros e por isso venceu o decimo premio"; } if (contador==3 && contador2==1) { cout << "acertou 3 numeros e 1 estrela e por isso venceu o nono premio"; } if (contador==2 && contador2==2) { cout << "acertou 2 numeros e 2 estrelas e por isso venceu o oitavo premio"; } if (contador==4 && contador2==0) { cout << "acertou 4 numeros e por isso venceu o setimo premio"; } if (contador==3 && contador2==2) { cout << "acertou 3 numeros e 2 estrelas e por isso venceu o sexto premio"; } if (contador==4 && contador2==1) { cout << "acertou 4 numeros e 1 estrela e por isso venceu o quinto premio"; } if (contador==4 && contador2==2) { cout << "acertou 4 numeros e 2 estrelas e por isso venceu o quarto premio"; } if (contador==5 && contador2==0) { cout << "acertou 5 numeros e por isso venceu o terceiro premio"; } if (contador==5 && contador2==1) { cout << "acertou 5 numeros e 1 estrela e por isso venceu o segundo premio"; } if (contador==5 && contador2==2) { cout << "acertou 5 numeros e 2 estrelas e por isso venceu o primeiro premio"; } if (contador==0 && contador2==0) { cout << "nao acertou nenhum numero nem nenhuma estrela e por isso nao tem premio"; } if (contador==0 && contador2==1) { cout << "acertou apenas 1 estrela e por isso nao tem premio"; } if (contador==0 && contador2==2) { cout << "acertou apenas 2 estrelas e por isso nao tem premio"; } if (contador==1 && contador2==0) { cout << "acertou apenas 1 numero e por isso nao tem premio"; } if (contador==1 && contador2==1) { cout << "acertou apenas 1 numero e 1 estrela e por isso nao tem premio"; } cout << endl; system("pause"); } Agradecia se me dessem uma ajuda Abraço, Pedro
  14. light_Show_#55

    Euromilhões

    A alguma coisa que se pode simplificar ou melhorar ? #include <iostream> #include <stdlib.h> #include <time.h> using namespace std; //as posições foram retiradas do seguinte site: https://www.jogossantacasa.pt/web/SCCartazResult/ //parti do principio que o euromilhões tem 5 números e 2 estrelas ... int main() { srand ( time(NULL)); // fim da geração da seed... int n[7],i; for(i=0;i<5;i++) { n=rand()%(50) + 1; } for(i=5;i<7;i++) { n=rand()%(12) + 1; } //fim da geração da chave... int num_uti[7]; cout << "Tenha atencao que os numeros sao de 1 a 50 e as estrelas sao de 1 a 12..."; for(i=0;i<5;i++) { cout << "\nQual e o numero que desja colucar em " << i +1 << " lugar no euromilhoes ? "; cin >> num_uti; while((num_uti<1) || (num_uti > 50)) { cout << "\nErro... Volte a colocar o numero que deseje em " << i +1 << " lugar no euromilhoes ? "; cin >> num_uti; } } for(i=5;i<7;i++) { cout << "\nQual e a estrela que desja colocar em " << i -4 << " lugar do euromilhoes ? "; cin >> num_uti; while((num_uti< 1) || (num_uti> 12)) { cout << "\nErro... Volte a colocar a estrela que deseja em " << i -4 << " lugar no euromilhoes ? "; cin >> num_uti; } } //fim da inserção da chave do utilizador... int prem_n=0; for(i=0;i<5;i++) { if(n == num_uti) { prem_n++; } } //fim da quantificação do numero de "números" certos... int prem_est=0; for(i=5;i<7;i++) { if(n == num_uti) { prem_est++; } } //fim da quantificação do numero de "estrelas" certos... int lugar_do_podio=0; switch (prem_n) { case 5 : if(prem_est==2) { lugar_do_podio=1; } else { if(prem_est==1) { lugar_do_podio=2; } else { lugar_do_podio=3; } } break; case 4 : if(prem_est==2) { lugar_do_podio=4; } else { if(prem_est==1) { lugar_do_podio=5; } else { lugar_do_podio=7; } } break; case 3 : if(prem_est==2) { lugar_do_podio=6; } else { if(prem_est==1) { lugar_do_podio=9; } else { lugar_do_podio=10; } } break; case 2 : if(prem_est==2) { lugar_do_podio=8; } else { if(prem_est==1) { lugar_do_podio=12; } else { lugar_do_podio=13; } } break; case 1 : if(prem_est==2) { lugar_do_podio=11; } break; } //fim da verificação dos dados com as suas posições respetivas... if(lugar_do_podio>0) { cout << "A sua aposta esta em " << lugar_do_podio << " lugar...\n"; } else { cout << "A suma aposta não tem premio ...\n"; } //fim da localização da aposta no pódio... cout << "Obrigado por usar este simulador do euromilhoes...\n" ; system("pause"); }
  15. Olá, Fiz um código para eliminar uma linha na base de dados atraves do datagridview, porém apago todos os dados. O que mudo no código para eliminar apenas a linha que pretendo? //definir a query string query = "DELETE FROM produtos"; //abrir a ligação à BD if (a.open_connection()) { //criar o comando e associar a query com a ligação através do construtor MySqlCommand cmd = new MySqlCommand(query, a.connection); if (dataGridView1.SelectedRows.Count == 0) { MessageBox.Show("Nenhum registro selecionado", "Atenção"); return; } else dataGridView1.Rows.RemoveAt(dataGridView1.CurrentRow.Index); //executar o comando cmd.ExecuteNonQuery(); //fechar a ligação à BD a.close_connection(); } MessageBox.Show("Dados eliminados com sucesso"); }
  16. Boa tarde pessoal, estou precisando de ajuda com a declaração de uma variável int... Tenho um array de 10 posições do tipo 'const ' e preciso usar cada uma das posições para definir o tamanho de uma variável array int... Mas não está funcionando... O que eu fiz : #define _GNU_SOURCE // necessário porque getline() é extensão GNU #include<stdio.h> #include<stdlib.h> #include<string.h> #include<iostream> #include<fstream> #include<math.h> #include <limits> #include <windows.h> const int IND_TAM=5, /* ESTE EU VOU MUDAR 'A MÃO' EM CADA EXECUÇÃO */ MAX_TAM[10]={10,15,200,300,320,410,770,400,220,90} int VETOR_INTERNO[MAX_TAM[IND_TAM]], CONTADOR_INTERNO, CONTADOR_EXTERNO; .... Mas o Code Blocks emite erro... "VETOR_INTERNO NÃO FOI DECLARADO" Tem como resolver ? ? ? Abraços, Hélio
  17. Boas pessoal, é possível criar uma função numa class A que devolva um ponteiro para um objeto instanciado da class B ? Exemplo: class Autodromo { private: string nome; Pista pista; public: Autodromo::Autodromo(string nome, int maxCarros, int comprimento) : nome(nome), pista(maxCarros, comprimento) {} Pista* getPista() const; }; class Pista { int maxCarros; int comprimento; int segundo; public: Pista(int maxCarros, int comprimento); }; Eu tentei criar a função // Autodromos.h Pista* getPista() const; // Autodromos.cpp Pista* Autodromo::getPista() const { return *pista; } mas não consigo devolver um ponteiro para o objeto pista da classe Autodromo. Sempre que compilo, aparece-me o erro: - no operator "*" matches these operands
  18. MrCookie20

    Problema num trabalho académico

    Boa noite, Estou atualmente a fazer um trabalho académico no âmbito da cadeira de programação em que consiste saber a média e o desvio padrão de determinados custos, o meu problema é que eu desenvolvi uma forma para calcular o desvio padrão e ao que aparenta ela por vezes funciona corretamente mas tem vezes que surge este número "-2147483648", já andei às voltas e não consegui achar uma solução para isto, se alguém poder me ajudar por favor mande-me mensagem privada, pois não queria, por agora, disponibilizar o meu trabalho publicamente.
  19. este é um programa que é pedido num exercício de calculo de taxas. Eu fiz o programa e ele não me dá erro de sintaxe algum, mas ao entrar um valor ele não corre no resto do programa e fica sei lá "estúpido"...nem entra no while! segue o código: #include <iostream> const double Tax1=0.10; const double Tax2=0.15; const double Tax3=0.20; const int FirstStep=5000; const int SecondStep=15000; const int ThirdStep=35000; int main() { using namespace std; double income,remain,tax=0.0; printf("Enter your income: "); scanf("%lf",&income); while(income>FirstStep) { if(income>ThirdStep) { tax=(income-ThirdStep)*Tax3; income=ThirdStep; } else if(income<=ThirdStep&&income>SecondStep) { tax+=(income-SecondStep)*Tax2; income=SecondStep; } else if(income<SecondStep&&income>FirstStep) { tax+=(income-SecondStep)*Tax1; income=FirstStep; } } remain=income-tax; printf("Your income was of %g.\nTaxes=%g\nAfer Taxes" " you win just %g\n",income,tax,remain); return 0; } Não consigo perceber o erro... Precisa de alguma decrementação obrigatória??? Não sei; agradecia muito uma ajuda da comunidade. obrigado desde já. Um abraço ao HHH!!!
  20. Queria saber como mostrar que nao existe uma informaçao inserida pelo utilizador? Tem aqui o meu codigo #include<stdio.h> #include<stdlib.h> #include<locale.h> int na=0; //ajuda para o numero do empregado struct Empregado{ char nome[50]; char departamento[50]; int nr; }; void listar(){ FILE*fp=fopen("empregados.bin","rb"); struct Empregado emp; if(fp){ fread(&emp, sizeof(emp), 1, fp); while(!feof(fp)){ printf("Nr empregado: %d\n", emp.nr); printf("Nome empregado: %s\n", emp.nome); printf("Departamento: %s\n",emp.departamento); printf("----------------------------------------\n"); fread(&emp, sizeof(emp), 1, fp); } } fclose(fp); } void consultar(){ FILE*fp=fopen("empregados.bin","rb+"); struct Empregado emprr; int numeroPesquisado; printf("Insira o número do empregado: "); scanf("%d",&numeroPesquisado); fseek(fp,(numeroPesquisado-1)*sizeof(emprr), SEEK_SET); numeroPesquisado=emprr.nr; fread(&emprr,sizeof(emprr),1,fp); printf("Nr: %d\n",emprr.nr); printf("Nome: %s\n",emprr.nome); printf("Departamento: %s\n",emprr.departamento); fread(&emprr,sizeof(emprr),1,fp); fclose(fp); } void registar(){ FILE*fp=fopen("empregados.bin","ab+"); struct Empregado empr; na++; empr.nr=na; printf("O número do empregado é %d\n ",empr.nr); printf("Insira o nome do empregado: "); scanf("%s",empr.nome); printf("Insira o departamento do empregado: "); scanf("%s",empr.departamento); fwrite(&empr,sizeof(empr),1,fp); fclose(fp); } int menu(){ FILE*file=fopen("empregados.bin","wb+"); setlocale(LC_ALL,"Portuguese"); int opcao; while(1){ puts("-----------------------------"); puts("1-Registar Empregado"); puts("2-Consultar Empregado"); puts("3-Listar Empregados"); puts("4-Sair"); puts("-----------------------------"); scanf("%d",&opcao); puts("-----------------------------"); switch(opcao){ case 1: registar(); break; case 2: consultar(); break; case 3: listar(); break; case 4: exit(0); break; default: puts("Opção inválida"); } } } int main(){ menu(); }
  21. aafd

    float calculado não entra no if

    olá, preciso de ajuda. Não estou a conseguir entrar no condicional "if" com um número flutuante obtido após uma operação. No código abaixo quando declaro o valor 0.05 entra no "if", mas quando faço a obtenção do 0.05 através de uma subtração de dois float não entra no "if" e preciso de operar valores para resolver o meu exercício. #include<iostream> using namespace std; int main(){ float v1=2; float v2=1.95; float diferenca = v1-v2; cout << diferenca << endl; if (diferenca == 0.05){ cout << "entrou"<< endl; // NAO ESTA A ENTRAR ! } }
  22. Jose Orlando

    erro quando digito 0

    #include <iostream> #include <cstdlib> using namespace std; int main(){ int num1,num2,soma,sub,mult,div; cout << "digite um valor:"; cin >> num1; system("cls"); cout << "digite outro valor:"; cin >> num2; system("cls"); soma=num1+num2; sub=num1-num2; mult=num1*num2; div=num1/num2; cout << "resultado!\n" << "soma:" << soma << endl << "subtracao:" << sub << endl << "multiplicacao:" << mult << endl << "divisao:" << div; return 0; }
  23. henry

    Converter C para Python

    Olá, sou um principiante na linguagem Python e estou com dificuldade para converter este código para o Python. Eu não farei uso do Python para o futuro, porém preciso excepcionalmente deste código em Python. Existe algum conversor Online para isso? Agradeço. O código: #include <stdio.h> int main(void) { int pos[3], neg[3], posCount = 0, negCount = 0; for (int i = 0; i < 3; i++) { int valor; printf("Informe um valor: "); scanf("%d", &valor); if (valor < 0) neg[negCount++] = valor; else pos[posCount++] = valor; } printf("Os números positivos digitados foram: "); for (int i = 0; i < posCount; i++) printf("%d ", pos); printf("\nOs números negativos digitados foram: "); for (int i = 0; i < negCount; i++) printf("%d ", neg);
  24. JoãoInacio

    login

    olá a todos estou com grandes dificuldades a fazer uma query. cout << "utilizador:"<<endl; cin >> utilizador; cout << "palavra pass:" <<endl; cin >>password; agora os problemas chegam "SELECT * FROM contas WHERE nome='utilizador' And pass='password'"; não consigo fazer com que a pesquisa seja feita com sucesso espero que seja fácil de entender mas resumidamente aquilo que eu queria fazer era fazer com a pesquisa em mysql recebece os valores das variáveis
  25. ivo

    Questão de linguagem em C

    Boa noite, Gostaria de saber se o código está correto ... Considere o programa em C ilustrado na Figura a seguir. Esse programa implementa um relógio via software e escreva a hora, minuto e segundo na tela a partir do instante 00:00:00. Modifique esse programa de modo que o usuário digite via linha de comando a hora (em argv[1]), o minuto (em argv[2]) e o segundo (em argv[3]) em que o programa deve parar. Caso seja necessário, use a função atoi() para converter os elementos argv[] em inteiros. O programa deve ser finalizado e imprimir uma mensagem de advertência caso a hora e/ou minuto e/ou segundo estejam fora da faixa 00:00:00 a 23:59:59. Obs.: o programa deve ser feito exatamente conforme o enunciado. O aluno obterá nota zero na questão se o programa não executar. O programa deve ser salvo como um arquivo .c e não .cpp. #include <stdio.h> #include <stdlib.h> int main() { int horas,min,seg; long int result_em_segundos; printf("\nDiga que horas, quantos minutos e quantos segundos respectivamente: "); scanf("%d%d%d",&horas,&min,&seg); horas=60*60*horas; min=60*min; printf("O resultado em segundos e de %d \n",horas+min+seg); system("PAUSE"); }
×
×
  • 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.