
PedroCunha
Membros-
Total de itens
282 -
Registro em
-
Última visita
Tudo que PedroCunha postou
-
Matrizes: erro ao extrair uma submatriz usando for
pergunta respondeu ao Diogo Rupolo de PedroCunha em C, C++
Olá! Primeiro vou postar o código, depois explico o que fiz: #include <iostream> using namespace std; int main () { int matriz1 [7] = {1,2,3,4,5,6,7}; int matriz2 [5] = {8,9,10,11,12}; int Temp [3]={}; int MatrizA2_final[8]={}; cout << "Matriz 1:" << endl; for (int a = 0; a < 7; a++) { cout << matriz1[a] << endl; } cout << "\n\n Matriz 2:" << endl; for (int b = 0; b < 5; b++) { cout << matriz2[b] << endl; } cout<<"\n Matriz Temp:"<<endl; for (int c = 4; c < 7; c++) { Temp[c-4]=matriz1[c]; cout << Temp[c-4] << endl; } cout<<"\n Matriz1 final: "<<endl; for (int d=0; d <4; d++) { cout << matriz1[d] << endl; } for (int e=0; e<5; e++) { MatrizA2_final[e] = matriz2[e]; } for (int f = 5; f < 8; f++) { MatrizA2_final[f]=Temp[f-5]; } cout<<"\n Matriz2 + matriz Temp: "<<endl; for (int i=0; i <8; i++) { cout << MatrizA2_final[i] << endl; } } Fiz pequenas alterações no código: 1ª -> Coloquei uma letra diferente em cada for loop para poder diferenciar melhor; 2ª -> Separei os dois for loop que compunham a formação da MatrizA2_final para a visualização ficar mais fácil; 3ª -> A razão do seu código não funcionar era que você estava igualando os valores da MatrizA2_final com os índices errados da matriz Temp. Veja só: #include <iostream> using namespace std; int main () { int matriz1 [7] = {1,2,3,4,5,6,7}; int matriz2 [5] = {8,9,10,11,12}; int Temp [3]={}; int MatrizA2_final[8]={}; cout << "Matriz 1:" << endl; for (int i = 0; i < 7; i++) { cout << matriz1[i] << endl; } cout << "\n\n Matriz 2:" << endl; for (int i = 0; i < 5; i++) { cout << matriz2[i] << endl; } cout<<"\n Matriz Temp:"<<endl; for (int i = 4; i < 7; i++) { Temp[i]=matriz1[i];//Aqui, você está começando a dar valores para a matriz Temp no índice 4. Mude para Temp[i-4] = Matriz[i] e pronto. cout << Temp[i] << endl;//Não se esqueça de mudar aqui para Temp[i-4] também, porque caso não o faça, não irá mostrar os valores certos na tela. } cout<<"\n Matriz1 final: "<<endl; for (int i=0; i <4; i++) { cout << matriz1[i] << endl; } for (int i=0; i <5; i++) { MatrizA2_final[i]=matriz2[i]; MatrizA2_final[i+3]=Temp[i];// Aqui você tenta igualar a MatrizA2_final com o índice 0,1,2,3,4. Entendeu o erro? :D } cout<<"\n Matriz2 + matriz Temp: "<<endl; for (int i=0; i <8; i++) { cout << MatrizA2_final[i] << endl; } } Att., Pedro -
Boa tarde Alexandre. Olha, eu acho que a razão da comparação com a tabela ASCII não ter funcionado foi porque o compilador do Dev-C++ provavelmente é um pouco mais antigo, porque aqui no Code::Blocks funcionou corretamente. Vou te apresentar duas formas funcionais do seu código. 1ª -> #include <stdio.h> #include <stdlib.h> float num1; float num2; float res; char ope1; int soma(); int subt(); int mult(); int divi(); int main () { printf("Digite o primeiro numero:"); scanf("%f", &num1); getchar(); printf("Digite a operacao desejada:"); scanf("%c", &ope1); getchar(); printf("Digite o segundo numero:"); scanf("%f", &num2); if(ope1 == 43) { soma(); } if(ope1 == 45) { subt(); } if(ope1 == 42) { mult(); } if(ope1 == 47) { divi(); } return 0; } int soma() { res = (num1 + num2); printf("%f", res); system("PAUSE"); return(0); } int subt() { res = (num1 - num2); printf("%f", res); system("PAUSE"); return(0); } int divi() { res = (num1 / num2); printf("%f", res); system("PAUSE"); return(0); } int mult() { res = (num1 * num2); printf("%f", res); system("PAUSE"); return(0); } 2ª -> #include <stdio.h> #include <stdlib.h> float num1; float num2; float res; char ope1; int soma(); int subt(); int mult(); int divi(); int main () { printf("Digite o primeiro numero:"); scanf("%f", &num1); getchar(); printf("Digite a operacao desejada:"); scanf("%c", &ope1); getchar(); printf("Digite o segundo numero:"); scanf("%f", &num2); if(ope1 == '+') { soma(); } if(ope1 == '-') { subt(); } if(ope1 == '*') { mult(); } if(ope1 == '/') { divi(); } return 0; } int soma() { res = (num1 + num2); printf("%f", res); system("PAUSE"); return(0); } int subt() { res = (num1 - num2); printf("%f", res); system("PAUSE"); return(0); } int divi() { res = (num1 / num2); printf("%f", res); system("PAUSE"); return(0); } int mult() { res = (num1 * num2); printf("%f", res); system("PAUSE"); return(0); } Quatro observações: 1ª -> Veja que adicionei os protótipos das funções no começo do código. Ao fazer isso, o compilador sabe sobre o que você está falando com você escreve por exemplo: soma; 2ª -> Adicionei o getchar() após o scanf para limpar o buffer. Caso contrário o programa não funcionaria corretamente; 3ª -> Mudei o nome da função int div para int divi pois aparentemente div é o nome de uma função da biblioteca cstdlib(stdlib.h); 4ª -> Adicionei o return 0 no final de main, pois main é uma integer function. Qualquer dúvida, estou à disposição. Att., Pedro
-
Não tenho certeza, mas acho que você teria que fazer por partes. Com algo do tipo de 3 ponteiros, apontando entre eles, até que o último aponte para todos. Mas essa é a área de especialidade do Marcelo Utikawa. Logo, logo ele deve postar aqui.
-
Duas coisas: 1ª -> Se você está fazendo o curso, você deveria fazer o trabalho, caso contrário você não estará aprendendo nada. O que podemos fazer por você é te ajudar com alguma dúvida que você possa ter. Só isso; 2ª -> O prazo seu é muito curto e o link postado não funciona.
-
Pelo que eu vi, você fez algumas coisas erradas. Primeiro: Veja sua declaração das matrizes: int mat1[1..5]; Essa declaração está errada. Para declarar um vetor de 5 linhas e 5 colunas, faça o seguinte: int mat1[5][5]; Depois, veja sua declaração do r1: r1 = mat1[4,1] + mat1[4,5]; Está errada. Faça da seguinte maneira: r1 = mat1[4][1] + mat1[4][5]; Faça essas alterações e me diga o que conseguiu, :D. Att., Pedro
-
Para criar ponteiros que apontam para outros ponteiros basta fazer o seguinte: int x = 0; int * y; int ** z; y = &x; z = &y; Acho que é isso mesmo, :D. Att., Pedro
-
Olá! Bom, a forma como eu gosto de fazer essas comparações é usando a tabela ASCII, que tem os valores inteiros que representam os caracteres em geral. Vou ter passar um link para a tabela e um pedaço de código de como eu faria essa comparação: TABELA ASCII if (ope1 == 43)// 43 é o valor ASCII para o sinal de + { soma(); } Qualquer dúvida é só perguntar. Att., Pedro EDIT: O porquê da sua comparação não funcionar é que você está usando aspas duplas (" ") ao comparar chars, quando você deveria usar aspas simples (' '). O seu código deveria ficar da seguinte maneira: if (ope1 == '+')//aspas simples { soma(); }
-
Gostaria da ajuda de vocês pra 2 Exercícios
pergunta respondeu ao Black Sabbath de PedroCunha em C, C++
Bom, antes de mais nada, uma observação em relação ao primeiro exercício: Pelo que eu li, a não ser que você tenha o valor de "v" com você, chegará em algo como um equação horária, veja: De qualquer forma, vamos fazer um programa que gere uma equação horária. Para isso, basta receber o valor de "t" e jogá-lo na fórmula, gerando assim a equação horária. Para o segundo programa, receba a idade do usuário e faça a seguinte conta: Idade_da_Pessoa = 2012 - Ano_de_Nascimento; Para descobrir se o usuário é maior de idade, basta usar um if: if (Idade_da_Pessoa > 18) { printf("Você já pode dirigir"); } Esse é um programa bem básico para essa função, que só funcionará corretamente no ano de 2012. Caso queira fazer um programa mais complexo, que usa funções da biblioteca time para receber as informações de data em tempo real, me avise que te ajudo a fazer, :D. Att., Pedro -
Isac, apesar de bom creio que o DevC++ não está sendo atualizado mais, logo não o recomendaria.
-
Duas coisas: 1ª -> O código que você está parecendo um código feito em C e não em C++; 2ª -> Para ordenar os números faça o seguinte: int Numeros[4]; for (int j = 0; j < 3; j++) { for (int i = 0; i < 3; i++) { if (Numeros[i] > Numeros[i+1]) { int temp = Numeros[i]; Numeros[i] = Numeros[i+1]; Numeros[i+1] = temp; } } } Att., Pedro
-
Boa tarde pessoal alguém pode me ajudar nos execicios
pergunta respondeu ao ewerton220179 de PedroCunha em C, C++
Post editado -> Códigos adicionados. -
Alternativo para dev C++ no linux-distro ubuntu
pergunta respondeu ao leandrog3 de PedroCunha em Tutoriais & Dicas - C, C++
O Code::Blocks deve funcionar perfeitamente, :D. Att., Pedro -
Provavelmente essa IDE que você está usando não tem um compilador integrado. Baixe o Code::Blocks, :D.
-
Atribuir o valor da escolha anterior( de um menu) a uma variável
pergunta respondeu ao gclassroom de PedroCunha em C, C++
No caso das variáveis char, você tem que igualar da seguinte forma: char Nome = 'Use a barra invertida e 0'; E para comprar duas variáveis char use strcmp e não if. Da seguinte maneira: if (strcmp(anterior, antes) == 0) {} Att., Pedro OBS.: O fórum está com um problema então não posso te mostrar como inicializar variáveis char, mas vou te passar um link para que você veja: CHAR CHAR -
Júlia, vou montar uma struct aqui só de exemplo, para você ver como funciona, certo? struct Exemplo { string Nome; }; struct Exemplo ExemploObjeto; //Objeto da struct. cout << "Qual é o seu nome? " << endl; getline(cin, ExemploObjeto.Nome); Att., Pedro
-
Boa tarde pessoal alguém pode me ajudar nos execicios
pergunta respondeu ao ewerton220179 de PedroCunha em C, C++
Não vou fazer os exercícios para você, mas vou te falar como fazer cada um: 1º -> Use um switch para determinar para quem o voto vai, e dependendo da escolha, incremente a variável que representa o candidato escolhido. Para mostrar a quantidade de votos basta jogar a variável na tela. Para o programa fechar só quando um número negativo for digitado, use um loop do-while ; 2º -> Use um loop do-while para receber os vinte números, depois, para descobrir se é positivo use um if básico e para descobrir se é ímpar basta utilizar o resto da divisão. Assim: if (Numero % 2 != 0) { //Número é impar } E depois, dependendo do resultado do if, incrementar uma variável (Positivos) ou outra (Ímpares). 3º -> Use um loop do-while para receber os valores e depois um if para determinar quem é menor de idade e quem recebe acima de R$ 3000. Att., Pedro Edit: Estava atoa e acabei fazendo os exercícios. Aqui estão eles: 1º -> #include <iostream> #include <locale> using namespace std; struct Votos { int Candidato1, Candidato2,Voto_em_Branco,Voto_Nulo; }; struct Votos VotosObj; void Perguntar_Candidato(); void Mostrar_Resultados(); void Perguntar_Candidato() { int opcao = 0; do { cout << "0 - Voto em branco\n" "1 - Candidato 1\n" "2 - Candidato 2\n" "3 - Voto nulo\n" << endl; cin >> opcao; cout << "\n"; switch (opcao) { case 0: { VotosObj.Voto_em_Branco++; break; } case 1: { VotosObj.Candidato1++; break; } case 2: { VotosObj.Candidato2++; break; } case 3: { VotosObj.Voto_Nulo++; break; } default: { VotosObj.Voto_Nulo++; break; } } } while (opcao >= 0); } void Mostrar_Resultados() { cout << "\n"; cout << "Candidato 1 - " << VotosObj.Candidato1 << " votos\n" "Candidato 2 - " << VotosObj.Candidato2 << " votos\n" "Voto em branco - " << VotosObj.Voto_em_Branco << " votos\n" "Voto nulo - " << VotosObj.Voto_Nulo<< " votos\n"; } int main() { setlocale(LC_ALL, "Portuguese"); Perguntar_Candidato(); Mostrar_Resultados(); cin.get(); return 0; } 2º -> #include <iostream> #include <locale> using namespace std; int Numeros[20]; void Perguntar_Numeros(); void Mostrar_Impares_e_Positivo(); void Perguntar_Numeros() { int i = 0; while (i < 20) { cout << "Digite um número: " << endl; cin >> Numeros[i]; i++; } } void Mostrar_Impares_e_Positivo() { cout << "Números positivos e ímpares são: " << endl; for (int i = 0; i < 20; i++) { if (Numeros[i] >> 0 && Numeros[i] % 2 != 0) { cout << Numeros[i] << endl; } } } int main() { setlocale(LC_ALL, "Portuguese"); Perguntar_Numeros(); Mostrar_Impares_e_Positivo(); cin.get(); return 0; } 3º -> #include <iostream> #include <locale> using namespace std; int Idades[10]; int Salarios[10]; void Perguntar_Idade_e_Salario(); void Mostrar_Menores_de_Idade_e_Salarios_Altos(); void Perguntar_Idade_e_Salario() { int i = 0; while (i < 10) { cout << "Qual é a idade da pessoa? " << endl; cin >> Idades[i]; cout << "\n"; cout << "Qual é o salário da pessoa? " << endl; cin >> Salarios[i]; cout << "\n"; i++; } } void Mostrar_Menores_de_Idade_e_Salarios_Altos() { int Menores_de_Idade = 0; float Salarios_Maiores_que_3000 = 0; for (int i = 0; i < 10; i++) { if (Idades[i] < 18) { Menores_de_Idade++; } } for (int j = 0; j < 10; j++) { if (Salarios[j] > 3000) { Salarios_Maiores_que_3000++; } } cout << "Existem " << Menores_de_Idade << " pessoa(s) menores de idade" << endl; cout << "e " << Salarios_Maiores_que_3000 << " pessoa(s) que recebem mais que R$ 3000,00." << endl; } int main() { setlocale(LC_ALL,"Portuguese"); Perguntar_Idade_e_Salario(); Mostrar_Menores_de_Idade_e_Salarios_Altos(); cin.get(); return 0; } Att., Pedro -
As aspas no scanf ficam assim scanf("%d%",&A); e não assim: scanf("%d%, &A"); Att., Pedro
-
Programa C para ler registros num arquivo
pergunta respondeu ao Israel Gonçalves de PedroCunha em C, C++
Em que você precisa de ajuda em particular? -
Para armazenar uma string em um um arquivo basta fazer o seguinte: fstream MeuArquivo.open("Meuarquivo.txt", ios:app | ios::in | ios::out); string Nome = "Pedro"; MeuArquivo << Nome; MeuArquivo.close(); Att., Pedro
-
Primeiro, crie o vetor e armazene as informações nele: string Nomes[5]; int i = 0; while (i < 5) { cout << "Digite um nome. " << endl; getline (cin, Nomes[i]); cout << "\n"; cin.sync(); i++ } Depois, compare os valores do vetor com o valor indicado pelo usuário: for (int i = 0; i < 5; i++) { if (Nomes[i] == Valor_Indicado_Usuario) { return i; break; } } if (i == 4) { cout << "Valor não encontrado. " << endl; Att., Pedro
-
interface gráfica em c puro
pergunta respondeu ao zzmelzz de PedroCunha em Tutoriais & Dicas - C, C++
O Gtk é muito utilizado com C, sendo a sua variação, o Gtkm, o utilizado com C++. -
Para verificar em qual posição está, basta percorrer todo o vetor, comparando seus índices com m , da seguinte forma: for (int i = 0; i < Tamanho_do_Vetor; i++) { if ( Vetor[i] == m ) { cout << " A posição no vetor é: " << i << endl; break; } } Att., Pedro
-
Algumas coisas: 1º -> Porque não faz a média da seguinte forma: media = (n1 + n2 + n3)/3; 2º -> Para checar se a média é maior ou menor que seis, use o if : if (media > 6) { printf("Você passou! Parabéns! "); } else { printf("Você não passou! Sinto muito! "); } Att., Pedro
-
Divida o exercício em partes. Primeiro receba os valores dos dois vetores: float Vetor1[5]; float Vetor2[5]; int i = 0; int j = 0; while ( i < 5) { cout << "Digite um valor para o vetor 1. " << endl; cin >> Vetor1[i]; cout << "\n"; cin.sync(); i++; } while ( j < 5) { cout << "Digite um valor para o vetor 2. " << endl; cin >> Vetor2[j]; cout << "\n"; cin.sync(); j++; } Depois, crie o vetor soma: float VetorSoma[5]; int a; for (a = 0; a < 5; a++) { float ValorVetor1SO = Vetor1[a]; float ValorVetor2SO = Vetor2[a]; VetorSoma[a] = ValorVetor1SO + ValorVetor2SO; } Depois, crie o vetor subtração: float VetorSubtraçao[5]; int b; for (b = 0; b < 5; b++) { float ValorVetor1S = Vetor1[b]; float ValorVetor2S = Vetor2[b]; VetorSubtracao[b] = ValorVetor1S - ValorVetor2S; } Depois, crie o vetor multiplicação: float VetorMultiplicaçao[5]; int c; for (c = 0; c < 5; c++) { float ValorVetor1M = Vetor1[c]; float ValorVetor2M = Vetor2[c]; VetorMultiplicacao[c] = ValorVetor1M * ValorVetor2M; } Depois, crie o vetor divisão: float VetorDivisao[5]; int d; for (d = 0; d < 5; d++) { float ValorVetor1D = Vetor1[d]; float ValorVetor2D = Vetor2[d]; VetorDivisao[d] = ValorVetor1D / ValorVetor2D; } Por fim, mostre seus respectivos valores na tela: { int a, b, c, d; cout << "VetorSoma: " << endl; for (a = 0; a < 5; a++) { cout << VetorSoma[a] << endl; } cout << "\n\n"; cout << "VetorSubtração: "<< endl; for (b = 0; b < 5; b++) { cout << VetorSubtracao[b] << endl; } cout << "\n\n"; cout << "VetorMultiplicação: " << endl; for (c = 0; c < 5; c++) { cout << VetorMultiplicacao[c] << endl; } cout << "\n\n"; cout << "VetorDivisão: " << endl; for (d = 0; d < 5; d++) { cout << VetorDivisao[d] << endl; } cout << "\n\n"; } Aqui está o código completo, feito por mim: #include <iostream> #include <locale> using namespace std; float Vetor1[5]; float Vetor2[5]; float VetorSoma[5]; float VetorSubtracao[5]; float VetorMultiplicacao[5]; float VetorDivisao[5]; void Perguntar_Vetores(); void Criar_Vetores(); void Mostrar_Vetores(); void Perguntar_Vetores() { int i = 0; int j = 0; while ( i < 5) { cout << "Digite um valor para o vetor 1. " << endl; cin >> Vetor1[i]; cout << "\n"; cin.sync(); i++; } while ( j < 5) { cout << "Digite um valor para o vetor 2. " << endl; cin >> Vetor2[j]; cout << "\n"; cin.sync(); j++; } Criar_Vetores(); } void Criar_Vetores() { int a; for (a = 0; a < 5; a++) { float ValorVetor1SO = Vetor1[a]; float ValorVetor2SO = Vetor2[a]; VetorSoma[a] = ValorVetor1SO + ValorVetor2SO; } int b; for (b = 0; b < 5; b++) { float ValorVetor1S = Vetor1[b]; float ValorVetor2S = Vetor2[b]; VetorSubtracao[b] = ValorVetor1S - ValorVetor2S; } int c; for (c = 0; c < 5; c++) { float ValorVetor1M = Vetor1[c]; float ValorVetor2M = Vetor2[c]; VetorMultiplicacao[c] = ValorVetor1M * ValorVetor2M; } int d; for (d = 0; d < 5; d++) { float ValorVetor1D = Vetor1[d]; float ValorVetor2D = Vetor2[d]; VetorDivisao[d] = ValorVetor1D / ValorVetor2D; } Mostrar_Vetores(); } void Mostrar_Vetores() { int a, b, c, d; cout << "VetorSoma: " << endl; for (a = 0; a < 5; a++) { cout << VetorSoma[a] << endl; } cout << "\n\n"; cout << "VetorSubtração: "<< endl; for (b = 0; b < 5; b++) { cout << VetorSubtracao[b] << endl; } cout << "\n\n"; cout << "VetorMultiplicação: " << endl; for (c = 0; c < 5; c++) { cout << VetorMultiplicacao[c] << endl; } cout << "\n\n"; cout << "VetorDivisão: " << endl; for (d = 0; d < 5; d++) { cout << VetorDivisao[d] << endl; } cout << "\n\n"; } int main() { setlocale(LC_ALL, "Portuguese"); Perguntar_Vetores(); cin.get(); return 0; } Qualquer dúvida, estou à disposição. Att., Pedro
-
Você está se esquecendo que ao usar o scanf você deve colocar o indicador de endereço antes da variável. Fica assim: //Exemplo printf ("Digite a altura"); scanf ("%d", &a); Att., Pedro