-
Total de itens
884 -
Registro em
-
Última visita
Tudo que vangodp postou
-
Ok... tinha passado por alto que static se inicializa automaticamente. você está usando windows certo? O problema é que MinGW depende do runtime da msvcrt.dll(win32). Mesmo que o compilador GCC suporta C99-ismos long long, o runtime que está processando a sequência de formato não compreende o especificador de formato "%lld", você teria que usar "%I64d" para long long e "I64u" para long long unsigned. troque: scanf("%lld",numeroTel[linha]); por scanf("%I64d", &numeroTel[linha]); Na realidade você deveria ler telefones com array de chars, igualmente números de documentos etc. O problema é que %I64d e %I64u não são suportados pelo padrão, você teria um programa que só funciona no windows, teria de se usar estratégias mais agressivas para poder fazer o código portável. Algo parecido a isso: #ifdef win #define scanf ( "%I64d", &numeroTel[linha] ); #elif scanf ( "%lld", &numeroTel[linha] ); #endif Toda essa manobra seria a coisa de usar long long int para ler o telefone quando deveria ser usado arrays de chars. Pense que é mais fácil processar strings que long long int, se mais tarde necessitar aplicar cálculos você sempre pode converter de array a int a long ou o que quiser. Em fim... boa sorte.
-
você declarou linha como uma variável estática inteira porem não deu valor, está tomando valor de lixo da memória. antes de guardar o telefone faça a prova, troque scanf("%lld",numeroTel[linha]) por printf("%d", linha) e veja que certamente linha é maior que 200 e por isso seu programa ta dando problema de segmento, porque você ta tentando acessar um casinha muito maior que 200 que foi o que você declarou.
-
c++ Classe de composição/agregação
pergunta respondeu ao xtremekaffeine de vangodp em Grupo de Estudos
Claro que não. Vamos a ver... acho que você está mal interpretando a programação orientada a objetos. Uma coisa é um barco e outra coisa é a ideia do que seria um barco, ou os planos para construir um barco. Quando eu estou definindo uma classe eu estou definindo a ideia de como será o barco, realmente eu não estou criando o barco, se não os planos de como seria um barco. O barco eu crio quando declarar a variável do tipo barco que é o objeto criado a partir da classe barco. Modificar um barco não tem porque modificar os planos de um barco. Vamos imaginar que Ferrari criou um projeto de um carro muito exclusivo, somente sairão 2 unidades. Imagine que você comprou um desses modelos(rapaz de sorte >_<), o outro modelo comprou seu vizinho XD. Dai imagine que seu vizinho quer fazer tunning de sua ferrari(Seria um louco). você acha que se o vizinho modificar seu carro todos serão modificados? Ou ainda pior... se ele por umas rodas de bmv(Brazilia meio velha) na Ferrari dele o projeto da fábrica deveria ser modificado? Não né! Ele pode fazer as baianadas que ele quiser com o carro dele, nem o projeto nem seu carro se verá afetados, ele está modificando um objeto, os outros continuam intactos, e a Ferrari continuará pondo rodas super esportivas. Deu para entender? Se quiser modificar um objeto e quiser que todos sejam iguais use estáticas que são compartilhadas caso contrario cada classe terá seu quite de variáveis independentes. Sobre a direção dos vídeos pensei que você iria me passar sobre o vídeo de composição, não o curso completo heheh. Se continuar com duvidas entre no discord; https://discord.gg/CtfUywV -
c++ Classe de composição/agregação
pergunta respondeu ao xtremekaffeine de vangodp em Grupo de Estudos
Vamos começar pelo mais fácil, variáveis membro estáticas. Acho que seu problema é que você não entendeu o uso que tem as variáveis estáticas. Vamos imaginar que você tem um video-club de aluguel de filmes. Vamos imaginar que lá tem vários filmes, mas para nosso exemplo vamos ter somente 2 filmes, Matrix e Star Wars, porem serve para quantos filmes você quiser. Vamos imaginar que por alguma estranha razão o usuário quer saber quantas vezes se alugaram cada um dos filmes. Vou deixar de lado tantas funções dentro das classes que lhe vou passar a continuação como exemplo, vou apenas me centrar em variáveis estáticas de forma que não vou ficar desenvolvendo métodos geters e seters que seria o correto para um exemplo funcional, declararei como publicas as variáveis estáticas com o simples motivo de facilitar a compreensão do problema. Bom... como falei imaginemos que queremos saber quantas vezes se alugou cada filme, uma forma simples poderia ser: #include <iostream> using namespace std; class Filme { public: int contador; Filme(){this->contador = 0;} }; int main (){ Filme matrix; //Criamos o filme Matrix matrix.contador++; //E alugamos o filme cout << "Matrix: " << matrix.contador << endl; //vamos comprovar quantas vezes o filme foi alugado matrix.contador++; //Alugamos o filme novamente cout << "Matrix: " << matrix.contador << endl; //E voltamos a comprovar //Agora vamos criar o filme Star Wars Filme starWars; starWars.contador++; //E alugamos a fita >_< //vamos ver quantas vezes se alugou cada uma das fitas individualmente cout << endl; cout << "Matrix: " << matrix.contador << endl; cout << "Star Wars: " << starWars.contador <<endl; cin.ignore(); return 0; } Como podemos ver nesse exemplo em cada filme queríamos ver quantas vezes foi alugado individualmente, mas e se por outra razão eu quero saber o numero de alugueis geral, é dizer... Como eu faria para saber quantas vezes foram alugados ambos filmes juntos? Se eu aluguei Matrix 2 vezes e Satr wars 1 esse valor seria 3 correto? Vamos ver o exemplo: #include <iostream> using namespace std; class Filme { public: static int contador; }; int Filme::contador = 0; //Variaveis estáticas devem ser inicializadas int main (){ Filme matrix; //Criamos o filme Matrix matrix.contador++; //E alugamos o filme cout << "Matrix: " << matrix.contador << endl; //vamos comprovar quantas vezes o filme foi alugado matrix.contador++; //Alugamos o filme novamente cout << "Matrix: " << matrix.contador << endl; //E voltamos a comprovar //Agora vamos criar o filme Star Wars Filme starWars; starWars.contador++; //E alugamos a fita >_< //vamos ver quantas vezes se alugaram as fitas cout << endl; cout << "Matrix: " << matrix.contador << endl; cout << "Star Wars: " << starWars.contador <<endl; cin.ignore(); return 0; } Como podemos ver o contador de matrix e starWars é o mesmo literalmente. Mesmo que você incremente matrix, starWars vai ter o mesmo valor e vice-versa. Variáveis estáticas membro é um tipo de variável compartilhada entre todos os objetos, literalmente é uma só variável porem que ambos objetos tem acesso. Se eu quero contar cada objeto de forma individual eu uso int porque internamente cada objeto tem sua variável contador, se eu incrementar o contador do obeto A o contador do objeto B não se verá afetado, porem com estáticas se eu aumentar o contador do objeto A o contador do objeto B também se verá afetado, porque se trata da mesma variável compartilhada entre A e B, internamente só existe um contadar quando é estático, isso serve para quando necessitamos por exemplo saber quantas vezes todos objetos foram alugado no total e n4ao individualmente por exemplo. Outros exemplos poderiam ser uma garagem, imagine que tenho carro A e carro B, dai quero saber se uma garagem está ocupada, por um dos carros, era só ter uma variável tal que static boll ocupado;, se um dos carros está na vaga, ocupado = true;, o outro carro deverá buscar outra vaga. São muitos os usos que podem ser dados a variáveis estáticas porem lembre disso... variáveis estáticas é um tipo de variável compartilhada entre todos os objetos se eu modificala no objeto A essa será tambem modificada nos objetos B, C, D, etc, porque ela é a mesma variável para todos os objetos(compartilhada). -
c++ Classe de composição/agregação
pergunta respondeu ao xtremekaffeine de vangodp em Grupo de Estudos
darei uma olhada e se vejo algo comento -
c++ Classe de composição/agregação
pergunta respondeu ao xtremekaffeine de vangodp em Grupo de Estudos
tá... mas porque você não deixa o projeto completo comprimido em rar em vez de fotos? E onde ficou o link? O.o -
Ajuda em C para urna eletrônica
pergunta respondeu ao Pietro Geovanne de vangodp em Tutoriais & Dicas - C, C++
Por isso switch é melhor para construir menus, porque tem a opção default, que caso o usuário introduza algo diferente ao desejado cai no default. que se estiver bem configurado pode indicar ao usuário que volte a introduzir um valor correto. Para saber se o usuário entrou com um numero e não uma letra seria melhor usar o valor de retorno do scanf. A coisa é que acabo de responder isso em outro fórum e não vou escrever novamente tudo aqui, mas vou lhe passar a direção sobre o tema. Minhas aportações tratam sobre esse questão, porem a pesquisa do usuário(dono do tema) não trata só etse problema, mas você pode ler diretamente minhas respostas que vão ligadas a sua consulta saltando outras consultas, ou simplesmente ler todas as respostas incluídas de outros usuários. Lhe recomendo ler todo o tema para se saber do que se trata e aumentar as opções que dispões para resolver o problema. Depois de saber do que se trata a consulta de este usuário, você se dará conta que a mesma solução que sugeri para ele serve para resolver perfeitamente seu problema. Depois de ler o tema volte aqui e pergunte se continuar com duvidas e lhe responderei sem problemas. http://www.clubedohardware.com.br/forums/topic/1209614-caracter-digitado-no-scanf-d/- 1 resposta
-
- linguagem c
- limitar entrada de dados
- (e %d mais)
-
[AJUDA] Qual maneira eficiente de aprender c++
pergunta respondeu ao xchaffer de vangodp em Grupo de Estudos
O conselho pode parecer muito tonto porem é justo nos dias que mais escrevo código que mais aprendo. Participe em fóruns de programação ativamente, perca 10 minutos lendo as duvidas de outros usuários e as soluções que dão outros programadores, isso será de muita ajuda também. Este fórum é bastante bom, e este outro também. -
[AJUDA] Qual maneira eficiente de aprender c++
pergunta respondeu ao xchaffer de vangodp em Grupo de Estudos
Praticando e muito, é a única maneira. O livro já pode ser muito bom, mas se não por em pratica o aprendido de nada serve, pode estar seguro que a melhor forma de aprender a programar é programando. Busque vídeos, livros etc e ponha a mão na massa. -
A importância e dificuldade da interface gráfica C
pergunta respondeu ao MerquiDantes11 de vangodp em Grupo de Estudos
Digamos que a própria linguagem é o problema. C é uma linguagem antiga e não suporta interfaces gráficas de forma nativa, você deveria usar uma biblioteca para isso, e justo esse é o maior problema... que para C existem poucas, porem sim existem, um exemplo é GTK+. Para criar interfaces gráficas de usuário em C primeiro devemos saber algumas coisas. Quem proporciona as ferramentas para isso é o próprio sistema. O sistema operativo é que m diz e sempre tem a ultima palavra, sobre que partes do sistema podemos tocar ou não, isso é assim a causa de manter um nível de segurança das informações contidas nos computadores e manter o sistema funcionando corretamente. Para criar uma janela por exemplo você deve se comunicar com a API do sistema para expressar seu desejo de criar uma janela, a sua vez o sistema necessita uma serie de informações para poder criar a tal janela, essas devem ser passadas para o programa através de parâmetros de funções por exemplo. Isso não é o importante aqui, o importante aqui é dizer que cada sistema operativo proporciona sua API aos programadores, e que dependendo do sistema são diferentes. Se aprender usar a API do windows, se quiser passar esse programa para o linux você deverá aprender a usar a API do linux. Se quiser passar esse programa para outros sistemas você deverá saber usar todas essas APIs, isso pode chegar a ser uma autentica encheção de saco. >_< A solução é você utilizar uma biblioteca gráfica de terceiros. Se quiser criar uma janela é só dizer a biblioteca e a biblioteca fará o resto por vc, e isso será sempre igual esteja no sistema que estiver, porque a é a biblioteca que se encarrega de se comunicar com a API corretamente por vc. A vantagem é que você só tem que aprender a usar uma biblioteca e seu programa funcionará em todos os sistemas que a biblioteca for compatível. Infelizmente Hoje em dia as bibliotecas estão todas sendo feitas para C++, a causa da orientação a objetos. Em C++ existem bibliotecas muito potentes como Qt, e algumas também razoavelmente boas como wxwidgets entre muitas outras que existem. Talvez seja hora de aprender C++. >_< Investigue sobre a API do sistema e investigue sobre bibliotecas de interfaces gráficas para C que alguma coisa você encontra. -
A biblioteca Grafo.h não funciona
pergunta respondeu ao gabi_da_net de vangodp em Tutoriais & Dicas - C, C++
você tem ela junto na mesma pasta? -
O flag hex está atingindo além da variavel num. Ele está atuando sobre num2 também, e por isso mostra coisas "estranhas", o programa só está fazendo o que você mandou. você está pensando que flag hex tem efeito somente sobre uma variavel(num) porem ele terá efeito em todas as seguintes variaveis até encontrar std::cout.unsetf (std::ios::basefield); Em outras palavras... o programa está mostrando ou tantando mostrar num2 como hex. >_< #include <iostream> #include<stdio.h> #include<math.h> #include<iomanip> using namespace std; int main() { int num = 15; int num2 = 20; float pi = M_PI; printf ( "exemplos com printf \n\n" ); printf ( "o valor de num é: %07i", num ); printf ( "\no valor de pi é: %.2f", pi ); printf ( "\no valor de pi é: %07.2f", pi ); cout << "\n\nExemplos com cout\n\n"; cout.precision ( 3 ); cout << "valor de pi com 3 digitos totais é: " << pi << endl; cout.precision ( 1 ); cout << "valor de num em hexadecimal é: " << hex << num << endl; std::cout.unsetf (std::ios::basefield); //Solução cout << "valor de num2 com espacamento a esquerda: " << setw ( 10 ) << num2 << endl; return 0; }
-
Procure organizar um pouco seu código se não é fadah! struct Parlamento P = { "Portugal" , { //3 Partidos, um em cada linha. |Deputado numero: 1 |Deputado numero: 2 |Deputado numero: 3 |Deputado numero: 4 {/*Partido 1...*/ "PS" , "Partido Socialista" , 3, {/*Lista deputados partido 1...*/ { "111961", "Antonio", 'M', "Porto" }, { "112365", "Ivo" , 'M', "Aveiro" }, { "111888", "Ângelo" , 'M', "Lisboa" }, { "123888", "Xuxa" , 'F', "Lisboa" } /*...Final lista deputados partido 1*/} /*...Final partido 1*/}, {/*Partido 2...*/ "PSD" , "Partido Social Democrata", 3, {/*Lista deputados partido 2...*/ { "111963", "Antonio", 'M', "Porto" }, { "112364", "Ivo" , 'M', "Aveiro" }, { "131889", "Ângélico", 'M', "Bragança" }, { "141889", "Obama" , 'M', "Bragança" } /*...Final lista deputados partido 2*/} /*...Final partido 2*/}, {/*Partido 3...*/ "CDS-PP" , "Partido Popular" , 3, {/*Lista deputados partido 3...*/ { "112889", "Susana" , 'F', "Braga" }, { "112879", "Susana", 'F', "Braga" }, { "112899", "Susana" , 'F', "Braga" }, { "312899", "Tiririca", 'M', "Braga" } /*...Final lista deputados partido 3*/} /*...Final partido 3*/} } }; Eu deixo na sua mão corrigir se os campos de dados estão corretos.
-
Busque exercícios para resolver. Essa pagina é bem interessante: https://www.urionlinejudge.com.br Nela você tem um repertório de exercícios que vão incrementando o nível gradualmente. Primeira você precisa se registrar. Logo após se registrar você precisa configurar alguns dados mas, o mais importante é o linguagem que mais gostar, neste caso c++. Isso você pode fazer aqui: https://www.urionlinejudge.com.br/judge/pt/account Uma vez registrado e configurada sua linguagem você deverá ir a essa tela que passará a ser a tela inicial: https://www.urionlinejudge.com.br/judge/pt/ Nessa tela você deve escolher "Problemas": Dai você entrará nessa pagina: https://www.urionlinejudge.com.br/judge/pt/categories Selecione uma categoria conforme a seus conhecimentos, recomendo começar pela iniciante(1) e resolver seus 188 problemas, depois passar a 2(AD-HOC), logo a 3, etc, porem não é preciso seguir uma ordem, a ideia é você resolver o máximo numero de exercícios possíveis. Se escolher um deles(vou escolher o 1 para o exemplo) você vai cair aqui: Como você pode ver existem vários exercícios para resolver. Escolhemos o primeiro: Acima diz o nível que você precisa ter para resolver o problema, é um problema extremamente básico. O problema pede para você escrever um programa que que dado duas variáveis com qualquer valor você deve soma-las e atribuir o valor da soma em uma 3 variável. Então você pode ver os casos de teste, se eu somar 10+9 o resultado que terá X seria 19. você deve prestar atenção na entrada e saída. A entrada diz que você contém 2 valores inteiros. int a = 10; int b = 9; Esse será um dos casos Dai você precisa resolver tal como o enunciado requer. int x = a+b; E por ultimo resolvemos a saída. cout << x << endl; Uma vez resolvido o problema no seu compilador você escolha a opção "Enviar" ao lado esquerdo: você vai cair nessa tela: 1º averigue se a linguagem é C++. Recomendo que esteja ativado c++11. 2º cole seu código aí como vemos na foto 3º quando estiver 100% seguro envie o código com um botão que aparece em verde abaixo(enviar): 4º uma vez enviado o programa dirá que seu código foi enviado corretamente dai você precisa esperar pelo "julgamento". Seu código passará pelo programa ou pessoas que julgarão seu problema e dirão se você errou ou acertou. Caso tenha errado o programa pode retornar dicas. Agora vamos ver o que aconteceu com o programa: 1º clicamos aqui e ler toda a pagina para saber como é o processo de "julgamento", como ele funciona: Ele aparece logo depois de enviar o código ao lado esquerdo. 2º Se já lemos o anterior agora vamos ver o que aconteceu com nosso código. Clicamos na parte superior em "Submissões" e escolhemos Todas: Aparecerá isso: Como podemos averiguar eu tive uma "Wrong answer (100%)" em vermelho, que quer dizer "Resposta errada (100%)", se fizer click aí te leva ao código. Na verdade eu errei a propósito pois eu não cumpri com o que se pede. O erro está que a entrada deve ser feita por teclado, e eu fiz tal como: int a = 10; int b = 9; Lembra? Vamos tentar novamente e agora sim vamos conseguir: Bom... depois de ter uns 4 erros mais por ignorância minha hsueushes por fim consegui. O problema eram os seguintes: 1º usei cin e esqueci de declarar as variaveis A e B. 2º depois declarei X e tentei imprimir x. Que noob sou né kkk 3º dai arrumei o anterior e ainda assim não funcionou. A saida devia ser X = 19 e eu simplesmente imprimi 19 4º Foi o já nem lembro hsuheuhse Bom... o caso é que devemos prestar atenção na entrada e saída, se é exatamente o que se pede. A entrada tem que ser assim: Ou seja... O programa primeiro deve pedir um valor e na linha de abaixo outro. Isso deve se repetir no nosso IDE. Veja como seria: Correto? E a saída: O programa completo é: Lembre que a entrada e a saida devem ser exatamente como na descrição: Agora resolva os outros 200 exercícios >_<. Quando tiver duvidas pergunte aqui. Resumindo.... a única forma de melhorar é praticando. Valeu? O código que usei foi: #include <iostream> using namespace std; int main (){ int A; int B; cin >> A; cin >> B; int X = A + B; cout << "X = " << X << endl; return 0; } Por se interessa. Agora tente subir no ranking >_<, crava lá mais uma bandeirinha brasileira.
-
void* é um ponteiro genérico o que quer dizer que praticamente pode apontar a qualquer tipo de dado. Coisa que você poderia fazer é: #include<stdio.h> #include <stdlib.h> // eliminei todos os dados que não serão uteis para o exemplo struct reb_particle { void* ap; //ponteiro generico, aponta a qualquer tipo de dado, incluindo outras struturas }; //Dados que serão apontados por ap typedef struct Dados{ double beta; }Dados; int main(){ struct reb_particle obj; // 1º criamos um objeto normal da estrutura, vamos a chamar obj Dados *dados = ( Dados* ) malloc ( sizeof( Dados ) ); // Criamos dinamicamente os dados que expandirão a estrutura reb_particle obj.ap = (void*)dados; // Fazemos que o ponteiro generico ap aponte aos dados que queremos adicionar a reb_particle ((Dados *)obj.ap)->beta = 3.14; // Agora para entender essa linha leia abaixo: //1º Como ap é um ponteiro a void, cada vez que vamos usar precisamos fazer o cast ao tipo de dados que ap aponta: // (Dados *)obj.ap //2º Alem disso devemos resaltar a prioridade do cast antes de acessar a qualquer membro de "Dados" // ((Dados *)obj.ap) //3º Agora sim podemos acessar aos membros. Isso sim... lembrando que ap aponta a uma estrutura que foi criada dinamicamente, então devemos usar -> // ((Dados *)obj.ap)->beta // Com isso podemos alterar os membros de dados apontados por ap tal como: ((Dados *)obj.ap)->beta = 10.90; // Imprimir printf("%lf", ((Dados *)obj.ap)->beta); return 0; } De uma boa repassada e se não entender pergunte.
-
Se você recebeu float a,float b,float c,float d por parametro por que você usa n1+n2+n3+n4 para fazer o calculo dentro da sua função? Troque m=(n1+n2+n3+n4)/4; por m=(a+b+c+d)/4;. E já vai acostumando a nunca nunca nunca, usar variáveis globais. Quantos antes acostumar antes vai doer menos >_<. https://forum.zwame.pt/threads/c-variaveis-globais-porque-devemos-evitar-variavies-globais.794001/
- 1 resposta
-
- c
- procedimentos
-
(e %d mais)
Tags:
-
char nome[100]; scanf("%s", nome); //nomeArquivo.txt FILE *f = fopen(nome,"w");
-
não esquente... eu nem passei por uma escola hehusehuhshe
-
while(condiçao){ //Inicio ... }//fin E o do-while do{ //inicio ... }while; //fin procure usar o botao <> na hora de postar o código, e escolha C, assim você aumenta as chances de obter uma resposta.
-
while(Cart=!0)do { ??? Esse do aí ta fazendo o que?
-
a forma mais fácil é carregar tudo em memória, alterar e sobre escrever o arquivo.
-
Como faço para excluir um registro do banco em C
pergunta respondeu ao paulafabiana7 de vangodp em Grupo de Estudos
#include<stdio.h> #include <stdlib.h> int main() { FILE *file = fopen ( "prova.txt", "r+" ); if ( !file ) { perror ( "Erro: " ); getchar(); exit ( 1 ); } //Contamos numero de linhas int ch, num_lineas=0; while ( ( ch = fgetc ( file ) ) != EOF ){ if ( ch == '\n' ){ num_lineas++; } } //"Rebobinamos" >_< rewind(file); char matriz[(const int)num_lineas][100]; int i; while( fscanf(file,"%100[^\n]%*c", matriz[i]) != EOF ){ printf("%s\n", matriz[i]); i++; } fclose ( file ); //Aqui nesse ponto o array tem todo o arquivo dentro é só manipula-lo e voltar a guardar com o atributo w ao abrir com fopem return 0; } -
Como faço para excluir um registro do banco em C
pergunta respondeu ao paulafabiana7 de vangodp em Grupo de Estudos
Carregue tudo em uma matriz, edite e volte a sobrescrever o arquivo, seria a forma mais fácil. Quando tiver mais experiência existem formas mais efetivas que podem ser usadas, porem acho que seria muito hard para lhe encaminhar ainda a elas. -
Um ponteiro não guarda informações, um ponteiro aponta a outra variável que está em outra parte. Para fazer consultas você deve ter mais de uma estrutura, você precisa de um conjunto de estruturas, esse conjunto de estruturas bem poderia ser um array de structs, neste caso seria possível você criar uma variável auxiliar que por exemplo represente o id e comparar com cada id do array de structs até achar o que você está buscando.