Ir ao conteúdo
  • Cadastre-se

vangodp

Membro Pleno
  • Posts

    1.752
  • Cadastrado em

  • Última visita

Tudo que vangodp postou

  1. Comece pelo fácil... Faça a tal lista, meta uns dados nela. Logo liste os dados. Depois envie para o arquivo e tente ler também desde o arquivo. Tente ir escalando pouco a pouco.
  2. n tem logica incrementar antes de mostrar, deveria mostrar e depois incrementar
  3. pega uma caneta e resolve linha por linha. Tipo: a = 9; ptr1 = &a; //ptr1 aponta a ptr2 = &b; //ptr2 aponta b c = 7; *ptr2 = *ptr1 + c; //a = b+c; printf("a = %d\n", a); //9 printf("b = %d\n", b); //16 printf("c = %d\n", c); //7 por certo.... desapareceu o botao <>???
  4. não entendo... Por que tem uma função no .h? Seria possível explicar melhor o que quer conseguir?
  5. pode guardar em uma variavel do tipo size_t. Ex: size_t size = val.length(); http://www.cplusplus.com/reference/string/string/length/
  6. Se for para brincar é só por uma variável mais, algo como "string tipo" no qual você pode por tipo = "Pessoa" etc, e depois só pedir um método como getTipo que lhe retorne o tipo de classe que é. Se a coisa for em sério acho que você ta abordando isso de forma incorreta pois aniversario e idade é a mesma coisa, e email também pode ter um amigo. Acredito que todos esses dados deveria ser da classe pai, e também deveria ser uma classe abstrata. Em fim... sei como faria para mim mas fica difícil adivinhar sua necessidade. E certamente tem formas mais efetivas de se fazer isso. Mas se sua duvida é si existe alguma forma "mágica" de saber si é uma classes pai ou filha de tal, etc... pelo menos n conheço isso, e gostaria de saber também XDDD buscando um pouco encontrei isso: https://en.cppreference.com/w/cpp/concepts/derived_from
  7. Tentou resolver alguma coisa? onde tem a duvida?
  8. Poste sua tentativa para saber em que parte você tem duvida
  9. O pessoal do codeblocks esta migrando a ferramenta para o wxWidgets 3, que se encarrega de gestionar janelas botões etc(A interface gráfica), certas coisas não funcionam ou mostram avisos, mas isso não atrapalha em nada no seu programa ja que codeblocks "é só o editor", ele depende do mingw para compilar e esse ta certinho, pode fechar e continuar trabalhando. Eles estão trabalhando no CB constantemente e certamente para futuras versões isso já esteja solucionado. Você pode fazer duas coisas... ignorar isso ou buscar outro IDE.
  10. vangodp

    C++ Jogos 3D em C++

    Para c++ o mais correto seria usar SFML para 2d, ja que essa biblioteca esta orientada a objetos como o próprio c++. E também para 3D com o uso de opengl. Mas para fazer videogames tem uma ampla variedade de bibliotecas, programas, etc. se quiser lhe explico como fazer algumas movidas com sfml XDD
  11. costuma dar erro por "sujera" no buffer. São caracteres não consumidos costumam ficar no buffer e que dão lugar a erros em posteriores leituras, como por exemplo quando tentar ler strings ou chars. Uma forma de saltar esse problema é inserindo cin.sync(); após fazer uma leitura qualquer na qual posteriormente venha outra leitura de uma string ou char como falei antes, é dizer, você faz a leitura de um int no seu caso e logo de uma string. Pois bem... depois de ler o int, ponha cin.sync() logo na seguinte linha, isso syncroniza o buffer com o que você escreveu descartando os caracteres causantes de erros. Tenha em mente que cin.syn() pode falhar, e não é a única forma de saltar esse problema.
  12. Ta bom arf... é o que você diga. Só você n entendeu, mas como você ja sabe tudo n lhe vou explicar. hehehe
  13. A mesma coisa faz o push_back(Com certa diferença), pois vetores são um conjunto contíguos. Se fizer push_back e não conter espaço contiguo na memória que você acha que vai acontecer?? Primeiro devemos entender como funciona o vector internamente. Para que um vetor seja funcional precisamos somente de duas coisas, um ponteiro ao primeiro elemento e o numero de elementos, com isso saberemos o tamanho, e onde começa obviamente. porém vector(da STL) n é só isso... ele contem alguns elementos a mais, que entre ditos elementos estão o capacity e size. Quando criamos um vector ele começa tendo capacity 0 y size 0, cada vez que fazemos push_back( Ou emplaceback ou insert etc) passamos de capacity 0 a capacity 1, e o tamanho(size) passará a ser 1. Ao fazer uma nova chamada a new, que é o que faz e todas essas funções por nós de forma explicita, passaremos de capacity 1 a 2 e size 2, onde o dado seja inserido(inicio/meio/fim) não é o importante. O problema vem agora ao fazer um 3º puch_back, porque capacity não vai ser 3 si não 4, porque ele irá duplicando( 0, 1, 2, 4, 8, 16 ), é dizer... a partir da terceira chamada a new(chamar a puch_back, emplace_back, etc) teremos uma capacidade de 4 elementos no vetor, e só teremos um size 3, ou seja teremos uma capacidade de 4 elementos mas teremos somente 3 elementos no vector, e teremos um espaço a mais no vetor para uma futura chamada a new. Ao fazer novas chamadas a essas funções o programa terá cada vez maior custe, pois a reserva de elementos será cada vez maior mesmo você n usando esse espaço. Que pode sair mal? Como falei a reserva vai se duplicando cada vez que o size supere o capacity, n importa qual dessas funções você chamar. O que pode sair ruim é que em um determinado momento o vetor fique estrangulado por n ter mais para onde se expandir, coisa que ele solucionaria reservando o dobro do espaço em outro lugar e copiando todos os dados a essa nova posição, coisa que aumentaria o custe, pois sabemos que copiar dados n é gratis, leva um tempo, e dependendo do tamanho do vetor pode ficar chato, para isso existe funções como reserve, que você pode indicar um tamanho inicial caso souber quantos elementos vai usar desde o inicio. Então como falei o problema n era esse... o que faz o emplace_back é que você n precisa criar um objeto na pilha e depois fazer a inserção de dito objeto, o objeto será construido diretamente no heap, ja o push_back precisa de um objeto no qual você vai copiar ele no heap, por isso fai que: . Não sei se me expressei bem ou deu para entender, sou muito ruim escrevendo shuehsueh. Se n quiser ter problemas com o tal capacity talvez o que necessite é o list, porém o list dispersa os dados pela memória, coisa que aumenta o tempo ao percorrer toda a lista. Se alguém achar que estou errado ou quiser comentar e aportar algo que ignoro, que deixe seu ponto de vista aqui abaixo. Sorte!
  14. #include<iostream> #include<vector> using namespace std; int main(){ std::vector<std::string> v; string s; s = "Ola"; v.push_back( s.c_str() ); s = "Mundo"; v.push_back( s.c_str() ); v.push_back( "curel" ); for(auto a : v){ cout << a << " "; } return 0; } igual que com outros tipos de dados você precisa fazer o tal pushback para inserir. Logo você terá v[0], v[1], v[2]... como de um vetor normal se tratara só que é um container da stl. Não é o caso mas deixo a sugestão de investigar sobre emplaceback em vez de usar pushback.
  15. a forma correta de ler a seña de um arquivo é mais ou menos essa: #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char input[30]; char login[30]; FILE* f = NULL; f = fopen("login.txt", "r"); if ( f == NULL ){ perror("Erro"); getchar(); return 0; } printf("Digite seu login:\n"); scanf("%[^\n]%*c", input); while(fscanf(f, "%[^\n]%*c", login ) != EOF ) { if( strcmp(input, login) == 0 ){ printf("Login correto\n"); fclose(f); system("pause"); return 0; } } printf("errou"); return 1; } Supondo que no arquivo de senhas você tem uma senha por cada linha.
  16. Um fórum é para responder duvidas pontuais sobre seu programa e não para lhe fazer seus trabalhos, assim você n vai aprender a programar. Acredito que seja melhor você buscar algum video sobre o tema e "sujar as mãos". É o melhor conselho que posso lhe dar. Ou se preferir prepare a carteira para solicitar um programador que lhe faça o trabalho, que se supõe que seria você quem teria de faze-lo. Quando chegar na hora de buscar trabalho como fará?
  17. vamos falar do valor então antes
  18. Existe uma forma que si bem não é padrão pode funcionar... ou não XD. Depende si se cumpre uns requisitos como usar os seguintes padrões: C90, C99 ou C11, saber que isso que vou citar a continuação é uma extensão posix, que possivelmente só funcione com gcc, com outros compiladores n sei se vai dar certo. Com a versão do codeblocks 20.03 e o compilador que traz funciona perfeitamente. /* m assignment-allocation modifier, recognized in both C90, C99 and C11 modes, is a POSIX extension. */ #define _POSIX_C_SOURCE 200809L //#define _POSIX_C_SOURCE 200801L #include <stdio.h> #include <stdlib.h> #ifdef __GNUC__ #define ESTADO 1 #else #define ESTADO 0 #endif // __GNUC__ int main(int argc, char *argv[]){ printf("Estado(GNUC): %d\n", ESTADO); char *name; int age; printf("Enter name: "); scanf("%m[^\n]", &name); //printf("Enter age: "); //scanf("%d", &age); printf("Name: %s\n", name); //printf("Age : %d\n", age); free(name); exit(EXIT_SUCCESS); } Que faz isso exatamente...? Permite você usar um especificador de formato chamado %m que a diferença de outros como d% ou %c etc, lhe reserva memória dinamicamente e atribui essa memória ao ponteiro indicado como se você usara malloc, coisa que faz obrigatório o uso de free para liberar tal espaço posteriormente como podes ver no exemplo.
  19. Pelo começo omi. Acaso isso importa? Eu comecei ja faz mais de 8 anos e ainda to aprendendo. Se você começar pensando em quando vai terminar começo a sentir que programar n é pra você. Ou sim? Funções tem muitas, e pior ainda classes também(já que se trata de c++), mas você n precisa saber todas, você irá conhecendo elas conforme vão lhe fazendo falta. Eu sempre digo que use o que mais cômodo for para você. É o programador que faz o programa e n o programa que faz o programador. Se você tiver um bom computador talvez visual studio seja boa opção. Caso seu computador tenha modestas prestações codeblocks talvez seja boa opção. Por outra parte está a parte sobre trabalhar com vários sistemas operativos como linux/windows etc, neste caso talvez você tenha que trabalhar com mais de um ou optar por um programa que funcione em ambos. também ta a parte dos editor bombados com mil plugins como o caso do visual studio code, que se bem n é um compilador, uma vez instalados os "tropecentos" plugins vira um IDE bombado multilinguagem e multi sei lá que hsuhauehuhae se quiser trocar uma ideia pode entrar aqui: https://discord.gg/Xdtxz7W Até o lucca ta ai porém ja n fala nada XDDD.
  20. Em um principio deveria funcionar seguindo o conselho do lucca sobre por duas barras em vez de uma.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...