-
Total de itens
884 -
Registro em
-
Última visita
Tudo que vangodp postou
-
Codeblocks sem duvida. É um IDE muito decente e leviano.
-
por que vc não posta seu código? Assim fica difícil dizer em que parte vc está tendo problemas
-
por que vc não posta seu código? Assim fica difícil dizer em que parte vc está tendo problemas
-
Listar pastas e subpastas
pergunta respondeu ao Allan.Cunha de vangodp em Tutoriais & Dicas - C, C++
E seu código?- 1 resposta
-
- listar pastas e subpastas
- listas
- (e %d mais)
-
Vc tem problema de lixo no buffer. Procure no google "Como limpar o buffer em C++". Busque videos e tutoriais. Aprenda como trabalha o buffer.
- 1 resposta
-
- for
- loop infinito
-
(e %d mais)
Tags:
-
Cheguei tarde! >_<
-
Beleza! Vou dar uma olhada. Obrigado pela info.
-
E que biblioteca é essa? >_<
-
Acho que esse tipo de problema vc pode encontrar exemplos tanto em código como explicativos se buscar no google:
-
Use o botão <> para por o código. Algumas partes ficam alteradas.
-
Sou nova em C++ e queria uma ajuda nesse código
pergunta respondeu ao stereobaby de vangodp em Grupo de Estudos
vc ja deve ter visto a expressão i++ certo? Quer dizer que supondo que i tenha um valor de 5 i aumente seu valor em uma unidade(passa a valer 6). A expressão i++ também pode ser feita tal como i = i + 1. A forma correta de dizer isso é que a i lhe atribuímos o valor de i +1, isso é o que quer dizer i=i+1. Sendo assim i = i + 5 é a mesma coisa, quer dizer que a i lhe atribuímos o valor de i mais cinco, que de forma parecida a i++ também pode ser feito de forma mais curta tal como i += 5. Se i++ aumenta em 1 unidade, i += 5 incrementa em 5 unidades. Vc sempre pode prever o resultado se imprimi-lo. int i = 10; i = i + 5; //10 + 5 cout << i << endl; //15 i += 10; //15 +10 cout << i << endl; // 25 i++; cout << i << endl; // 26 faça a prova! Existem outros operadores como /=, *=, -= etc. alguns usos são: Em vez de fazer i = i / 10; é a mesma coisa fazer i /= 10; Em vez de fazer i = i * 10; é a mesma coisa fazer i *= 10; Em vez de fazer i = i - 10; é a mesma coisa fazer i -= 10; Espero ter deixado claro. Lembre que vc sempre pode imprimir qualquer valor e comprovar o resultado com por um cout. Sorte. -
Oportunidade de Serviço - Home Office
tópico respondeu ao Angel Wars de vangodp em Classificados & Serviços
Podia dar mais detalhes sobre o de " trabalhar em Home Office ".- 2 respostas
-
- home office
- vetor
-
(e %d mais)
Tags:
-
Na linha ( a % b == 0 ) ? printf ( "%d Sao multiplos: \n" ) : printf ( "%d Nao sao multiplos" ) vc especificou que ia imprimir um inteiro em cada printf %d, porem não informou quais inteiros deveriam ser imprimidos. Ou bem vc deve remover esses especificadores %d ou bem indicar qual numero quer imprimir.
-
Executar programa externo C++ (RESOLVIDO)
pergunta respondeu ao amp35br de vangodp em Grupo de Estudos
Use remove para eliminar o arquivo.- 4 respostas
-
- gnuplot
- programa externo
-
(e %d mais)
Tags:
-
É só criar a matriz e começar a preencher com números aleatorios. Vc precisa de uma variável que é um contador na qual vc pode chamar "int gerados" que começa valendo 0. A cada numero gerado a variável "gerados" incrementa. A cada numero gerado vc precisa comparar com os outros gerados anteriormente e somente guardar se for diferente a todos os anteriores gerados, caso contrario deverá ser gerado outro. O problema é que ao ser uma matriz aumenta a complexidade, porem se souber que no fundo uma matriz é um vetor em realidade vc pode aproveitar isso para fazer as comparações mais facilmente. Tente fazer o exemplo, mais tarde ponho um exmplo de como seria mais ou menos aqui, agora não posso.
-
Executar programa externo C++ (RESOLVIDO)
pergunta respondeu ao amp35br de vangodp em Grupo de Estudos
Não sei usar muito bem o tal gnuplot, mas depois de fazer umas provas me funcionou dessa forma: #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main () { //criamos o ponteiro FILE *teste; //abrimos o arquivo para escritura. Cada abertura o arquivo novo sobreescreve o antigo teste = fopen ( "testefile.txt", "w" ); //Comprovamos se abriu if ( teste == NULL ) { perror ( "Erro: " );//<- para comprocar é com perror e não com printf getchar(); exit ( 1 ); } //gerando o arquivo de dados for ( int i = 0; i < 20; i++ ) { int a = i; int b = i + i; int c = i * i; fprintf ( teste, "%d \t %d \t %d \n", a, b, c ); } //Importante! Devemos fechar o arquivo para que as mudanças sejam guardadas corretamente. fclose ( teste ); //system ( "gnuplot liveplot.gnu" ); //Se quiser executar diretamente o txt use essa linha //system("gnuplot -p -e \"plot 'testefile.txt'\""); //Se queremos ler o arquivo liveplot.gnu usamos o comando: system("gnuplot \"liveplot.plt\""); //note que mudei o formato do arquivo para .plt pois em windows esse formato é um dos associados com o programa. getchar(); return 0; } tive que mudar o nome de liveplot.gnu a liveplot.plt na hora de chamar, pois como ja comentei o formato plt é reconhecido no windows, e não sei se vc está usando windows. De todas formas como falei não sei muito bem usar o tal gnuplot muito bem, só tinha curiosidade mesmo. >_<- 4 respostas
-
- gnuplot
- programa externo
-
(e %d mais)
Tags:
-
Na verdade eu nem sei o que é o que faz seu programa. Vejo como umas "tropecentas" variáveis por todas as partes mas não sei qual o objetivo do seu programa. Talvez se vc descrever um pouco o que anda buscando lhe serei de maior ajuda.
-
Use o botão <> para compartilhar seu código... aumentará as chances de obter resposta, lhe asseguro.
-
De uma lida aqui como limpar o buffer: https://forum.imasters.com.br/topic/336835-tutorial-systempause-e-fflushstdin/
-
Amigo... tomei a liberdade de fazer umas mudanças no seu código, umas para facilitar o entendimento e outras simplesmente para que o programa funcionasse. Para facilitar o entendimento da questão eliminei todas as funções deixando somente os construtores, o problema como bem comentas, está nos construtores e não nas funções. Depois é só voltar a inserir as funções. Aparte das funçoes que foram retiradas modifiquei o construtor da classe Pessoa. Troquei: Pessoa(string n, int i,string s){ setNome(n); setIdade(i); setSexo(s); } Por: Pessoa ( string n, int i, string s ) { nome = n; idade = i; sexo = s; } Os motivos são óbvios... como falei antes retirei todas as funções pelo qual o primeiro construtor daria problemas. Bom.... vamos a ver se damos luz ao problema. Primeiro vc deve saber que vc tem 2 coisas diferentes nas sua classe Livro. Vc tem um objeto do tipo Pessoa adicionado mediante "Agregação" que é: Pessoa leitor; Que esta dentro da classe Livro. E vc também recebe o livro por herança. class Livro: public Pessoa Para resolver o problema bastaria vc usar a "Lista de Inicialização" da sua classe e inicializar ambos objetos em ordem de procedência, é dizer.... primeiro o que vc recebe por herança e depois os outros, porem sempre em ordem na qual foram declarados. #include <iostream> #include <string> using namespace std; class Pessoa { public: Pessoa ( string n, int i, string s ) { nome = n; idade = i; sexo = s; } private: string nome, sexo; int idade; }; class Livro: public Pessoa { public: Livro ( string n, int t, string a, Pessoa l ) : Pessoa(l), leitor(l) { totalPag = t; nome = n; autor = a; } private: string nome, autor; int totalPag, pagAtual; bool aberto; Pessoa leitor; }; int main() { Pessoa *p1 = new Pessoa ( "willy", 31, "M" ); return 0; } A lista de inicialização é a parte: : Pessoa(l), leitor(l) Pessoa(l) é o que vc recebeu por herança, também poderia estar como Pessoa::Pessoa(l). Depois esta o construtor do objeto leitor(l). Também poderia ser usado a Lista de Inicialização para as outras variáveis tipo: Livro ( string n, int t, string a, Pessoa l ) : Pessoa(l), nome(n), autor(a), totalPag(t), pagAtual(0), aberto(false), leitor(l) {} Porem note que estão na ordem na qual foram declaradas começando com a variável que foi declarada primeira. A forma por Lista de inicialização é inicializada antes que as demais que se encontram dentro dos parêntesis {} por isso é muito usado para os construtores, o resto pode ir dentro dos parêntesis. Imagine que vc precisa de um objeto inicializado antes que outras variáveis. Se vc usar os parêntesis em vez de usar a Lista de Inicialização vc estará primeiro declarando e depois inicializando. #include <iostream> using namespace std; class Passaro { public: Passaro ( string umNome ) { cout << "Passaro ja tem nome?: " << seuNome << endl; seuNome = umNome; cout << "Agora sim: " << seuNome << endl; } private: string seuNome; }; int main (){ Passaro p("Picapau"); cin.ignore(); return 0; } Esse é o exemplo sem a Lista de Inicialização, então quando entrar nos parêntesis só vai passar a ter nome quando chegar na linha seuNome = umNome. Porem da seguinte forma usando lista de inicialização vc verá que antes de entrar nos parêntesis o pássaro já tem nome. #include <iostream> using namespace std; class Passaro { public: Passaro ( string umNome ) : seuNome(umNome) { cout << "Passaro ja tem nome?: " << seuNome << endl; } private: string seuNome; }; int main (){ Passaro p("Picapau"); cin.ignore(); return 0; } Por isso é bom sempre usar lista de inicialização com classes herdadas, pode ser que seu programa necessite que as variáveis estejam inicializadas antes de entrar nos parêntesis do construtor.
-
Veja um exemplo de uma calculadora mecânica sem proteção alguma o que aconteceria ao dividir por zero: Trabalharia infinitamente >_<
-
Para não lhe deixar sem alguma explicação leia aqui: https://motherboard.vice.com/pt_br/article/por-que-nao-podemos-dividir-por-zero Nesse video vc tem uma boa resposta... Ao dividir qualquer numero por zero vc obtém infinito, o que quer dizer que supera e muito a capacidade de armazenamento de qualquer variável, isso causa crash no sistema, o sistema não seria capaz de alojar isso na memoria, provavelmente isso causaria que o sistema trabalhasse infinitamente tentando resolver o problema, porem certamente o computador tenha algum sistema de proteção para quando detectar esse problema simplesmente de um aviso e não realize a operação, se não que de um aviso em vez falho igual fizemos com nosso programa. Será por essa razão que existe tantos memes? https://www.google.es/search?newwindow=1&client=firefox-b&biw=1366&bih=631&tbm=isch&sa=1&q=jesus+can+divide+by+zero+meme&oq=jesus+can+divide+by+zero+meme&gs_l=img.3...7645.14768.0.14943.24.24.0.0.0.0.305.2884.0j17j1j1.19.0....0...1c.1.64.img..6.7.1293...0j0i19k1j0i7i30i19k1j0i7i30k1j0i7i5i30k1j0i8i30k1j0i8i7i30k1.WsvtFBIDRS8 https://www.google.es/search?newwindow=1&client=firefox-b&biw=1366&bih=631&tbm=isch&sa=1&q=dividir+por+zero&oq=dividir+por+zero&gs_l=img.3..0i30k1.1752636.2317068.1.2317234.19.16.0.3.3.0.171.1516.0j12.12.0....0...1c.1.64.img..4.15.1514.0..0j0i67k1.1RsYA4RSajA#imgrc=_ Como eu sou ruim de matemáticas, melhor aceito que divisão por zero == "vai dar merda no meu programa" e simplesmente não faço nunca! Fui! >_<
-
em C/C++ qualquer numero que dividir por zero vai causar um crash do seu programa. Prove abrir a calculadora do windows e faça a mesma coisa. Vc vai ver algo como isso: Somente chuck norris pode dividir por zero >_< O resto dos mortais devemos fazer algo como: #include<stdio.h> int main(void) { int n1 = 0; int n2 = 0; float n3 = 0.0; printf("\nValor de 1: "); scanf("%d", &n1); printf("\nValor de 2: "); scanf("%d", &n2); printf("\nValor de 3: "); scanf("%f", &n3); if ( n1<1 ){ printf("\n\nResultado 1: indefinido"); }else{ printf("\n\nResultado 1: %.6f", n3 / n1); } if ( n1<1 ){ printf("\n\nResultado 2: indefinido"); }else{ printf("\n\nResultado 2: %.6f", n2 / n3); } if ( n1<1 ){ printf("\n\nResultado 3: indefinido"); }else{ printf("\n\nResultado 3: %.6f\n\n", n1 / n3); } getchar(); return 0; }
-
c++ Classe de composição/agregação
pergunta respondeu ao xtremekaffeine de vangodp em Grupo de Estudos
Não se esquente. Talvez eu não tenha entendido muito sua consulta devido ao meu desconhecimento sobre java, meu contato com java se resume a algumas semanas de prova, o suficiente para saber que java é bastante mais limitado ao que se refere a poo que c++. A ver se chegamos a entender onde falha o que comentas. Se com "é composta" vc se refere que dentro de visualização vc tem 2 objetos dos tipos vídeo e gafanhoto sim, correto. Dai quando vc instância um objeto da classe Visualizacao vc recebe 2 parametros, o gafanhoto e o vídeo que deveria assistir o gafanhoto. Certo? Então no seu construtor vc está copiando o gafanhoto e o video para o gafanhoto e para o video que estão dentro de visualização. Talvez o que vc não entenda é que vc tem 2 gafanhotos, o que vc passa para visualização e o que esta dentro de visualização. Dai certamente vem sua confusão, ou ao menos isso é o que eu to achando que é. Porque acho que vc queria que os dados se gravaram no gafanhoto que vc passa como dados também ou sei lá, mas isso não é o que acontece. O gafanhoto modificado é o que esta dentro de visualização. prove usar os geters de visualização para comprovar os dados, tipo cout << vis[0].espectador.getTotAssistido();. Isso vai imprimir o gafanhoto que ta dentro de visualização. Se quiser analisar melhor o código entre aqui no discord:https://discord.gg/CtfUywV Podemos discutir melhor e/ou talvez fazer uma tela compartilhada para solucionar esse problema e aplicar alguma solução. -
porque scanf quer saber a direção da variável e não o valor. Ou seja se você já estudou ponteiros você sabe que se passar por valor você passa uma copia, então se scanf guarda-se o valor guardaria em uma copia não na autentica variável. já se passamos a direção da variável original essa será modificada esteja onde estiver. E por se sua duvida é que com arrays é ou não obrigado a por, sim é obrigado. quando eu faço vetor[10] eu to entregando o valor da 10 casinha, se faço &vetor[10] eu to entregando a direção da décima casinha do vetor, e poderia ser modificada em qualquer parte do código incluindo outras funções, etc. Provavelmente só por por & seu problema se solucione, pois scanf esta esperando um inteiro sim, mas o inteiro que diga a direção de &numeroTel[linha] e você está indicando um valor numeroTel[linha], ele vai tomar esse valor como se fosse a direção e tantar por lá os dados causando violação de segmento, você esta saindo fora do segmento que lhe foi designado. Outra coisa diferente são arrays de chars, nesse caso não é necessário por & adiante. Para ficar mais fácil decorar lembre que não deve se por & adiante de strings ou ponteiros no scanf.