-
Total de itens
884 -
Registro em
-
Última visita
Tudo que vangodp postou
-
pois bool b = (1==EASY);, se for correto b vai conter 1(true). Porem sua duvida vem relacionado ao objeto do tipo dif, pois esse tipo de variável especial só pode conter os valores que estão dentro das chaves EASY, NORMAL, HARD.. para isso você precisa usar os identificadores EASY, NORMAL e HARD que foram declarados se não seria possível por qualquer valor, e para isso já está os inteiros. a única vantagem que vejo nesses enum é para coisas como: enum Cores{ AZUL, BRANCO, VERDE, AMARELO }; int n = 1; switch (n) { case AZUL: cout << "AZUL" << endl; break; case BRANCO: cout << "BRANCO" << endl; break; case VERDE: cout << "VERDE" << endl; break; case AMARELO: cout << "AMARELO" << endl; break; default: break; } É bem mais fácil que lembrar de numeros 0. 1, 2...: int n = 1; switch (n) { case 0: cout << "AZUL" << endl; break; case 1: cout << "BRANCO" << endl; break; case 2: cout << "VERDE" << endl; break; case 3: cout << "AMARELO" << endl; break; default: break; } E para coisas como essa: enum Cores{ AZUL, BRANCO, VERDE, AMARELO }; Cores branco = BRANCO; int cor = 1; if ( cor == branco){ cout << "BRANCO" << endl; } Certamente é mais cômodo em alguns casos recordar de nomes que de valores.
- 8 respostas
-
- enumeradores
- utilidade
-
(e %d mais)
Tags:
-
Se tentar fazer dif myDif = 1; para que precisamos de enumerados? Um int cumpriria perfeitamente esse papel não acha? Um enumerado você só pode por o valor que declarar entre as chaves, se não fosse assim podíamos por qualquer valor igual que um inteiro. Um enum se supõe que deve ser seteado em tempo de compilação, e da forma que você diz seria possível fazer em tempo de execução. Busque também sobre enum class.
- 8 respostas
-
- enumeradores
- utilidade
-
(e %d mais)
Tags:
-
você pode jogar esses valores em um array. array[0]= EASY; array[1]= NORMAL; array[2]= HARDCORE; ou array[0]= 0; array[1]= 1; array[2]= 2; É a mesma coisa.
- 8 respostas
-
- enumeradores
- utilidade
-
(e %d mais)
Tags:
-
Servem para enumerar coisas de forma mais ou menos organizadas: #include <iostream> using namespace std; enum Dif { EASY, // Aqui é onde dif toma valor 0, poderia fazer EASY = 10, então NORMAL tomaria 11, HARDCORE 12 e INSANE 13, ou poderia indicar todos os valores. NORMAL, HARDCORE, INSANE }; int main () { int dificuldade = 3; if ( dificuldade == EASY ) { cout << "Escolhido: EASY" << endl; } else if(dificuldade == NORMAL ) { cout << "Escolhido: NORMAL" << endl; }else if(dificuldade == HARDCORE ) { cout << "Escolhido: HARDCORE" << endl; }else if(dificuldade == INSANE ) { cout << "Escolhido: INSANE" << endl; }else{ cout << "não existe essa opcao" << endl; } Dif d; //Dif é o tipo d é a variavel do tipo Dif d = NORMAL; //<-sempre temos que indicar o valor cout << "a: " << d << endl; cout << "b: " << HARDCORE << endl; //Podemos usar diretamente como se de constante se tratasse //Não posso fazer algo como NORMAL = outro_valor cin.ignore(); return 0; } Outro exemplo: #include <iostream> using namespace std; enum op { SAIR, OPCAO1, OPCAO2, OPCAO3 }; // | // | int main () { // v op my_op = OPCAO1; int opcao = 1; if ( opcao == my_op ){ cout << "iguais" << endl; }else{ cout << "diferentes" << endl; } //Igual que if ( opcao == OPCAO1 ){ cout << "iguais" << endl; }else{ cout << "diferentes" << endl; } cin.ignore(); return 0; } Para fazer um menú como esse: #include <iostream> using namespace std; enum op { SAIR, OPCAO1, OPCAO2, OPCAO3 }; int main () { int opcao; bool sair = false; while ( !sair ) { cout << "Escolha opcao"; cin >> opcao; cin.sync(); switch ( opcao ) { case SAIR: sair = true; cout << "saindo" << endl; break; case OPCAO1: cout << "opcao1" << endl; break; case OPCAO2: cout << "opcao2" << endl; break; case OPCAO3: cout << "opcao3" << endl; break; default: cout << "default" << endl; break; } } cin.ignore(); return 0; } valeu!? Resumindo... myDif só pode tomar um dos valores do enunciado dif EASY, NORMAL, HARDCORE, INSANE. Ou você pode usar diretamente esses valores de dif como se fossem constantes. mydif é uma porção de memória reservada, como int por exemplo, se você não der um valor vai conter lixo ou pode que NULL, acho que com isso já respondo sua duvida do por que se deve inicializar.
- 8 respostas
-
- enumeradores
- utilidade
-
(e %d mais)
Tags:
-
Dependendo do caso é e não é. No primeiro caso você pode executar mais códigos antes ou depois do if aninhado sendo o resultado da segunda condicional falsa, porem com o segundo if se alguma das condicional for falsa você não executará código algum. Ou seja que no primeiro caso você pode executar código apesar de que a segunda condicional seja falsa, porem no segundo caso não se executará nenhum código. Pode lhe dar a impressão caso não incluir códigos adicionais, porem claramente não são, e nem se parecem a mesma coisa. Serão dados casos muito concretos para aplicar uma ou a outra forma de se resolver um problema. Na programação existem muitas coisas 'parecidas' porem a linguagem esta criada por autênticos gênios da programação, se encontrar bugs no linguagem você vai levar um premio hahah.
-
que o resto leva nulls
-
já respondi no outro tópico... A ver se seu amigo não lhe reprova desta vez. Veremos a ver quem te salva na hora de buscar um trabalho. >_<
-
Posições repetidas em um vetor de n posições
pergunta respondeu ao emanoellucas de vangodp em C, C++
#include<stdio.h> int main(){ int vetor[]={ 1, 1, 2, 2, 3, 1, 3, 0, 0, 10}; int repetidos[10] = {0}; unsigned int i, j, contador = 0; for ( i=0; i < sizeof(vetor)/sizeof(int); i++ ) { repetidos[i] = 0; } for ( i=0; i < sizeof(vetor)/sizeof(int)-1; i++ ) { for ( j = i+1; j<sizeof(vetor)/sizeof(int); j++) { if ( vetor[i] == vetor[j]){ repetidos[i] = 1; repetidos[j] = 1; } } } for ( i=0; i<sizeof(vetor)/sizeof(int) ; i++ ) { if( repetidos[i] == 1 ){ contador++; } } printf("repetidos = %d", contador); return 0; } -
Alterando endereços armazenados nos ponteiros em funções C
pergunta respondeu ao Mortanius de vangodp em Grupo de Estudos
Com memória dinâmica sim você pode faze-lo, todo o problema está a causa da pilha, o ultimo prato a ser inserido será o primeiro em ser retirado, então realmente não podemos manipular essas direções, porem se usar malloc para reserva de memória sim você será possível fazer o que quer. -
Alterando endereços armazenados nos ponteiros em funções C
pergunta respondeu ao Mortanius de vangodp em Grupo de Estudos
Fácil... arrays são um tipo de ponteiros constantes, na realidade não são nem considerados ponteiros, não foram pensados para ser 'trocados'. você pode ler esse tópico(em inglês) para obter uma serie de idéias de como solucionar o problema: http://stackoverflow.com/questions/3393518/swap-arrays-by-using-pointers-in-c Sorte. -
São tantos erros que desisti no meio do caminho. você não presta atenção nos avisos do compilador? Se aprender a interpretar esses erros certamente você seria capaz de consertar o programa. você tenta ler strings com & adiante, depois tenta ler floats com o especificador %f, a mesma coisa com inteiros, troca o maiúsculas por minúsculas na hora de chamar funções entre outros muitos erros. Simplesmente acho que você precisa prestar mais atenção vei. Todas essas funções da a impressão que você foi programando sem ir resolvendo os problemas, dai se acumularam tantos que realmente da até vontade de começar de zero novamente.
- 2 respostas
-
Procure em caso de não estar usando um projeto compilar com o arquivo main.cpp selecionado, se tentar compilar quando estiver editando o .h ou o outro cpp o compilador vai tentar compilar somente um deles, por isso recomendo a criação de um projeto, porem você nem falou que IDE ta usando.
-
crie uma estrutura com esses dados. Logo dentro de main faça um vetor de structs de X posições. Faça um laço while na qual de condição você cria uma variável chamada 'sair' do tipo int e lhe inicialize com o valor de 0, então ponha no while de condição o seguinte while (sair != 1), isso fará o programa continuar até que 'sair' seja 1. Logo ponha um menu dentro do while informando das opções que dispõe o usuário, tipo 1cadastrar, 2porcentual homens, 3porcentual de mulheres, 4pessoas que ganham mais de 500, 5pessoas que tenham 1 ou mais filhos e as que 6nasceram depois de 2000, não se esqueça de por 0Sair, nessa sair você deverá dentro de switch mudar o valor de sair para 1 =). Dai é só ir preparando caso por caso e ir escrevendo os tais códigos. Para o caso 1 é só somar o total de casos e usar regra de 3.... Se homens+mulheres é o 100% mulheres é X% por exemplo. a formula é pegar mulher multiplicar por 100 e dividir por 1000, isso daria o % das mulheres. A mesma coisa deve er feita para porcentagem de homens: Se homens+mulheres é o 100% homens é X%. A formula é pegar (homens*100)/1000. Basicamente isso é a mesma coisa para todos os porcentagens, porem algumas formulas você terá que usar contadores, tipo para o porcentual de pessoas que nasceram depois do 2000 você terá que contar as pessoas que nasceram antes e depois dai você faz a mesma coisa... antes+depois-->100% depois-->X% float resultado = (depois*100)/1000; Fácil não? É só contar, pessoas que tem menos de 1 filho e pessoas que tem mais, ou pessoas que ganham menos de 500 e pessoas que ganham mais de 500... é só aplicar a formula, são puros contadores. Esses serão os casos, aplicar os contadores e logo após aplicar a regra de tres em cada case ou if conforme seu agrado. Tente faze-lo.
-
main.cpp #include <iostream> #include "aluno.h" #include "aluno.cpp" // só se for sem projeto caso contrario comentar essa linha using namespace std; int main (){ EstagioAluno a; a.hello(); //provando! getchar(); return 0; } Aluno.h #ifndef ALUNO_H #define ALUNO_H #include <iostream> #include <fstream> using namespace std; class EstagioAluno { private: int matricula; char nomeCompleto [50]; char tipoEstagio[13]; char nomeEmpresa[20]; char cnpj[20]; char nomeSupervisor[50]; char dataInicio[11]; char dataFim[11]; char dataEntregaRelatorioParcial[11]; char situacao[11]; int horasPrevistas; int horasTotalizadas; char parecerFinal[401]; public: void PreencherEA(); void ImprimirEA(); void writeEA ( ofstream &arq ); void readEA ( ifstream &arq ); void hello(); }; #endif // ALUNO_H aluno.cpp <--arrumado! #include <iostream> #include "aluno.h" using namespace std; void EstagioAluno::PreencherEA(){ //Escreva o código para essa função } void EstagioAluno::ImprimirEA(){ //Escreva o código para essa função } void EstagioAluno::writeEA ( ofstream &arq ){ //Escreva o código para essa função } void EstagioAluno::readEA ( ifstream &arq ){ //Escreva o código para essa função } void EstagioAluno::hello(){ cout << "Ola mundo" << endl; } Crie um projeto que contenha esses 3 arquivos. Se criar o tal projeto borre a linha #include "aluno.cpp" do arquivo main.cpp, caso não criar um arquivo deixe a tal linha. Falou? >_<
-
você deveria ler esse post incluindo o comentário de todos os usuários, certamente vai te facilitar e muito a vida na programação. http://forum.imasters.com.br/topic/336835-tutorial-systempause-e-fflushstdin/ Certamente seu problema é que você tem lixo no buffer. você pode buscar no google "Como limpar o buffer em C" ou aprender a usar o especificador %*c para solucionar o problema, nesse link acho que explica.
-
Duvida de como fazer entrada de dados através de um arquivo de texto!
pergunta respondeu ao Thiago Freitas de vangodp em C, C++
//criando um arquivo e receber os numeros desejados printf("Quantas linhas possuira o arquivo?"); scanf("%d", &t); Vou fazer uma pergunta.... você realmente gosta da programação e quer aprender realmente a ser um bom programador? Não faz falta me responder, responda para voz. Se a resposta for sim não faça isso nunca mais: scanf("%d", &t); int matriz[t][2]; Isso não faz parte do padrão de C, não sei da onde você tirou isso mas seja da onde for corte pelo sano, antes de adquirir más costumes. Para reservar um vetor ou uma matriz dinamicamente você DEVE usar malloc, é um conselho. Agora depende de vc, agora você tem 2 opções, a primeira é continuar fazendo isso "int matriz[t][2];", e a segunda é usar malloc que sim faz parte do C padrão que garante seu programa funcionar em qualquer maquina, da sua forma pode que funcione porem é uma "gambiarra". >_< #include <stdio.h> #include <stdlib.h> int passos = ; //Funcao selection sort para organizar os numeros do arquivo void selecao ( int Vet[], int n ) { int Menor, aux; int i, j; for ( i = ; i < n; i++ ) { Menor = i; for ( j = i + 1; j < n; j++ ) { if ( Vet[Menor] > Vet[j] ) Menor = j; passos++; } if ( i != Menor ) { aux = Vet; Vet = Vet[Menor]; Vet[Menor] = aux; passos++; } } } int main() { int l, k, i, t; //criando um arquivo e receber os numeros desejados printf ( "Quantas linhas possuira o arquivo?" ); scanf ( "%d", &t ); FILE *fp1 = fopen ( "ProjetoComp.txt", "w" ); if ( fp1 == NULL ) { printf ( "não foi possivel abrir o arquivo\n" ); getchar(); return ; } //int matriz[t][2]; int **matriz = (int**)malloc( sizeof(int**) * t ); for(i=; i<t; i++ ) matriz[i]=(int*)malloc(sizeof(int*)*2); for ( k = ; k < t; k++ ) { printf ( "Informe os elementos da %da. linha:\n", ( k + 1 ) ); for ( l = ; l < 2; l++ ) { scanf ( "%d", &matriz[k][l] ); fprintf ( fp1, "%d\t", matriz[k][l] ); } fprintf ( fp1, "\n"); printf ( "\n" ); } fclose ( fp1 ); //abrindo o arquivo criado para ler e realizar a ordenacao FILE *fp2 = fopen("ProjetoComp.txt","r"); if(fp2 == NULL){ printf("não foi possivel abrir o arquivo\n"); getchar(); return ; } k=; while ( fscanf(fp2, "%d %d%*c", &matriz[k][], &matriz[k][1] ) != EOF ){ printf("linha %d %d %d\n", k, matriz[k][], matriz[k][1]); k++; } int *vetor = (int*)malloc( (sizeof(int*) * t) * 2 ); printf("\n\nTam of vetor: %d\n\n", ((sizeof(int*) * t) * 2)); k=; for(l=; l<t; l++){ for( k=k, i= ; i<2; k++, i++ ){ vetor[k] = matriz[l][i]; printf("%d, ", vetor[k]); } } printf("Sorting!\n"); //selecao( vetor, t*2 ); // Aqui você precisa chamar a função, mas a função não esta funcionando, só falta arrumar a função que organiza. for (i=; i<t*2 ; i++ ) { printf("%d, ", vetor[i]); } fclose(fp2); for(i=; i<t; i++ ) free(matriz[i]); free(matriz); free(vetor); return ; } Seguindo mais ou menos a sua lógica eu joguei as variaveis no arquivo, depois eu fiz a leitura delas em uma matrz e depois eu passei a matriz para um vetor. Só falta arrumar a função que organiza a parada e tudo certo. Tente arrumar ela. sorte- 6 respostas
-
- arquivo
- arquivo de texto
- (e %d mais)
-
Calculadora Infinita,parâmetros
pergunta respondeu ao Beatriz Barbosa de vangodp em Grupo de Estudos
seu programa está incompleto... coisas como while(j>){ dam erro, outras como int i=,j=,cont=,contt=,aux=,auxx=;. Talvez na hora de copiar tenha sido borrado alguns caracteres. -
pode tirar esses fflush
-
não entendo nada com o que você quer dizer com preciso dividir o campo for(h=1 ; h<=20 ; h++) em 30, 30 e 40%, explique-se melhor se for possível.
-
Perdão... a pagina com as possíveis teclas está aqui: https://msdn.microsoft.com/es-es/library/windows/desktop/dd375731%28v=vs.85%29.aspx
-
Duvida de como fazer entrada de dados através de um arquivo de texto!
pergunta respondeu ao Thiago Freitas de vangodp em C, C++
ok a ver se entendi? O arquivo é algo parecido a isso: 11 42 43 44 75 45 ... Se for assim de uma mostra, ou incluso se puder colar umas duas ou três linhas desse arquivo seria melhor. Também precisaria saber se você vai carregar o arquivo inteiro na memória para organizar ele ou você organizaria ele no mesmo arquivo ou em outro arquivo diferente etc. Vou dar uma dica... se o arquivo for muito grande melhor organizar ele no mesmo arquivo ou em outro, porem se for poucas linhas pode carregar ele na memória, será mais fácil assim, porem não será o correto, o correto é sempre prescindir da memória e preferir arquivos. Imaginou subir toda a BD do facebook na sua RAM?kkkk.- 6 respostas
-
- arquivo
- arquivo de texto
- (e %d mais)
-
Duvida de como fazer entrada de dados através de um arquivo de texto!
pergunta respondeu ao Thiago Freitas de vangodp em C, C++
Se explicar melhor a estrutura do arquivo talvez seja possível lhe ajudar. Como seria esse arquivo? que guardaria? É binario ou de texto? você tem que organizar o arquivo de texto?- 6 respostas
-
- arquivo
- arquivo de texto
- (e %d mais)
-
use sprintf. é como o printf porem em vez da saida ser na tela você precisa indicar o buffer onde você quer guardar o resultado. sprintf == string print format ah! e tambem existe outra chamada fprintf, a saida dessa é direta ao arquivo. fprintf == file print format