Ir ao conteúdo
  • Cadastre-se

JaoProgramador

Membro Júnior
  • Posts

    10
  • Cadastrado em

  • Última visita

Reputação

6
  1. Deixa eu ver se entendi: <int y=9; (Float) y/2; // isso faz y virar float, momentaneamente. (Float*) y/2 // iSso faz y virar float, momentaneamente. Acho que na prática é o mesmo efeito? você consegue me dar um exemplo q eles tem diferenca? > adicionado 5 minutos depois A minha duvida é em relação a posição do asterisco, por exemplo: int vari*; ou (int*)malloc... Isso é novo pra mim. Isso é um ponteiro? É um cast? Não entendi. Já isso: int *vari; Eu entendo. Resumindo a duvida esta no asterisco. estar posicionado atras ou na frente.
  2. int inteiro; inteiro = (float*)inteiro; Eu entendi que o cast sem aquele asterisco, mascara uma variavel naquela linha. Eu não entendi é esse asterisco, pois, acho que ele não é um ponteiro, já que ele esta depois de float e não antes. Então não sei o que é isso nem pra que serve. Um exemplo pratico que vejo é quando colocamos um ponteiro pra apontar pra "area do malloc": int *pt; pt = (int*)malloc... eu sei que é desnecessario o cast antes do malloc mas vamos fingir que é necessário nessa questao.
  3. O que significa esses argumentos? Por que são ponteiros (*format *str , por exemplo.)? O que é o file? Por que tem que ser const char e nao só char?
  4. @arfneto Muito obrigado pela sua vontade de ajudar. você é 10. Você não tem ideia de como esse assunto de buffer de entrada e saida me pegou de surpresa, porque imagina só, se poe no meu lugar: Eu tava criando esse codigo que eu citei, e tava estudando sobre ponteiro para incrementar esse programa, e DE REPENTE, a variavel nao consegue ser lida. O negocio foi estão inesperado, que pra eu saber o que PERGUNTAR no forum demorou 2 dias, literalmente. Eu nao tinha palavras pra isso. Porque na minha cabeça, nao existia isso de dar erro na hora de ler, era como se essas funções nativas, fossem perfeitas. Entao pra mim ta sendo difícil entender isso tudo, eu leio o que você me fala, leio umas paginas do assunto, mas parece que ainda tem uma neblina que me impede de entender. Vou continuar tentando entender isso. adicionado 0 minutos depois @AdrianoSiqueira Aqui pra mim apareceu só as funções prototipadas, nao apareceu o codigo da funcao... adicionado 4 minutos depois @arfneto Outra coisa... Eu sinto uma falta de um material de aprendizado, como apostila, ou um curso em video, tanto faz a plataforma... Sinto uma falta de um material de aprendizado completo, detalhista, sabe? Porque as videos aulas que vejo no youtube sao mt superficiais. Se tiver algum livro ou um site que você acha mt bom pra aprender me passa por favor.
  5. @arfneto Em especifico o meu programa a parte do do while nao tava dando por que? adicionado 0 minutos depois @herbertbahia Então, essa biblioteca <conio.h> nao funciona, pesquisei na net e vi falando que ela nao é nativa da linguagem C. E tambem nao achei como importar bibliotecas, se é que isso é possivel...
  6. Achei essa funcao do flush mt complexa, acho que nao consigo entender isso ainda... Preciso de mais base...@arfneto
  7. Vou colocar uma parte do programa, a parte que estou em duvida mas tem mais código pra cima e pra baixo do que vou mostrar. #include <stdio.h> #include <string.h> #include <stdlib.h> char cont; do{ printf("Digite o voto: "); scanf("%i",&voto); fflush(stdin); switch (voto){ case 1: tDV.c[0]+=1; break; case 2: tDV.c[1]+=1; break; case 3: tDV.c[2]+=1; break; case 4: tDV.c[3]+=1; break; case -1: tDV.nulos+=1; break; case 0: tDV.brancos+=1; break; default: printf("Escolha invalida!\nTente novamente!\n"); goto tentenovamente; } i++; printf("Quer continuar? [S/N]"); //scanf(" %c",&cont); // printf("\n%%c: %c\n",cont); getchar(); cont=getchar(); //printf("\n%%c: %c\n",cont); } while (cont=='S'); O que acontece é que eu não consigo fazer esse do-while funcionar, pelo o que eu pesquisei é um problema relacionado ao buffer de teclado que fica logo apos os comandos de leitura(ex: scanf, getchar() ), alias, coloquei o ffush(stdin) porque dizem que limpa o buffer, mas não deu certo mesmo assim. Quando chega la no getchar, ele le a variavel cont e imediatamente finaliza o programa em vez de continuar executando o longo codigo que tem abaixo. obs: Não reparem nos comentarios dentro do codigo, são testes que fui fazendo com o programa. Código completo: #include <stdio.h> #include <string.h> #include <stdlib.h> struct tiposDeVoto{ int nulos; int brancos; int c[4]; }tDV={0,0,{0,0,0,0}}; struct porcVotos{ float nulos; float brancos; float c[4]; }pV={0.0,0.0,{0.0,0.0,0.0,0.0}}; int main(){ /*Em uma eleição para governador concorrem 4 candidatos (1, 2, 3 e 4). No dia da eleição cada um dos N eleitores votaram: • 1, 2, 3 ou 4 para cada candidato. • 0 (zero) para voto em branco. • -1 para voto nulo. Considere que: • O candidato ganha a eleição se fizer 51% ou mais do total de votos. • Se não houver ganhador, os dois melhores irão para o segundo turno. Faça um programa em C que calcule e imprima: • O candidato vencedor (se houver), seguido da porcentagem de votos obtida. Se não houver vencedor, imprima os candidatos que irão ao segundo turno com a respectiva porcentagem de votos obtida. • A porcentagem obtida pelos demais candidatos. • A porcentagem de votos em branco e nulos.*/ tentenovamente: printf("----------------------------\n"); printf(" Urna eleitoral "); printf("\n 1- Tiago\n 2- Pedro\n 3- Alvaro\n 4- Chaves\n 0- Voto em branco\n -1- Voto nulo\n"); printf("------------------------------\n"); int voto=0,i=0; char cont; do{ printf("Digite o voto: "); scanf("%i",&voto); fflush(stdin); switch (voto){ case 1: tDV.c[0]+=1; break; case 2: tDV.c[1]+=1; break; case 3: tDV.c[2]+=1; break; case 4: tDV.c[3]+=1; break; case -1: tDV.nulos+=1; break; case 0: tDV.brancos+=1; break; default: printf("Escolha invalida!\nTente novamente!\n"); goto tentenovamente; } i++; printf("Quer continuar? [S/N]"); //scanf(" %c",&cont); // printf("\n%%c: %c\n",cont); getchar(); cont=getchar(); //printf("\n%%c: %c\n",cont); } while (cont=='S'); int totalDeVotos=i+1; pV.brancos=tDV.brancos/totalDeVotos; pV.nulos=tDV.nulos/totalDeVotos; for (int k=0;k<4;k++) pV.c[k]=(float)tDV.c[k]/totalDeVotos; int vencedor=0; if(pV.c[0]>0.51 && pV.c[0]>pV.c[1] && pV.c[0]>pV.c[2] && pV.c[0]>pV.c[3]){ vencedor=1; printf("Tiago e o vencedor da eleicao com %0.2f %% dos votos",(pV.c[0]*100)); } if(pV.c[1]>0.51 && pV.c[1]>pV.c[0] && pV.c[1]>pV.c[2] && pV.c[1]>pV.c[3]){ vencedor=1; printf("Pedro e o vencedor da eleicao com %0.2f %% dos votos",(pV.c[1]*100)); } if(pV.c[2]>0.51 && pV.c[2]>pV.c[0] && pV.c[2]>pV.c[1] && pV.c[2]>pV.c[3]){ vencedor=1; printf("Alvaro e o vencedor da eleicao com %0.2f %% dos votos",(pV.c[2]*100)); } if(pV.c[3]>0.51 && pV.c[3]>pV.c[0] && pV.c[3]>pV.c[2] && pV.c[3]>pV.c[1]){ vencedor=1; printf("Chaves e o vencedor da eleicao com %0.2f %% dos votos",(pV.c[3]*100)); } return 0; }
  8. @Simon Viegas Eu sei mas a questão é que se o usuario colocar 5.5 ele quer 5.5 e não só 5. Queria mostrar q o q ele quer nao é possivel.
  9. @Simon Viegas valeu, ajudou demais adicionado 0 minutos depois @devair1010 valeu, ajudou demais adicionado 31 minutos depois Vocês sabem como faz pra invalidar uma entrada real, por exemplo só quero que entre numeros inteiros. Se vir um numero real aí eu mostro uma mensagem.
  10. Segue em anexo a imagem, e destacado em vermelho a minha dúvida. Acontece que eu quero que não seja possível colocar números na variável cargo, pois o algoritmo funciona colocando números, por causa da última estrutura condicional O que eu fiz de errado e como seria uma solução sem alterar muito meu algoritmo e seguindo a minha linha de raciocínio. adicionado 4 minutos depois Esse é o erro que dá. adicionado 34 minutos depois atualizando - consegui fazer porém mudei totalmente o código. quero uma solução com a estrutura condicional "se".

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!