
p4t0X
Membros-
Total de itens
151 -
Registro em
-
Última visita
Tudo que p4t0X postou
-
O problema é que o scanf pega o próximo caractere do stdin(que são todas as entradas do teclado), Quando você executa o scanf você aperta a tecla do caractere e depois o enter, esses 2 "comandos" vão pro stdin. O scanf pega o primeiro caractere do stdin. Dependendo do OS usado, existem soluções diferentes, em windows por exemplo você pode usar a função fflush(stdin) após um scanf; Em *NIX, você precisa ler o stdin até o final. Algo mais ou menos assim: int __c; while( (__c = fgetc(stdin)) != EOF && __c != '\n' ){} E executar isso após um scanf, para garantir que o próximo vai ser executado com segurança. Uma maneira fácil de comprovar isso, usando o código aí encima. A variável que "pula" é "tu", ao final do script, se você fizer assim: printf( "Final do programa, testar a variavel tu.%cSe tu for um newline(enter), essa linha vai estar embaixo da outra :)" , tu ); Note que se você usar a seguinte estrutura: scanf("\n%c" , &tu); Deve funcionar também! Bom, acho que é isso :S, se tiver alguma merda escrita é só falar ;)
-
É tipo beeeem² simples o exercício... Só não gostei da sua postura, haha Se você tentar fazer e postar as suas dificuldades, ajudarei com prazer, agora fazer inteiro, sem ao menos você tentar, e pior ainda, pra HOJE, aí não :/
-
Boa sorte com o pedido, rsrs
-
Pense no operador & assim: Se um número A "conter" B, a expressão vai ser interpretada como true. Sempre usando potências de 2 Veja: 3&1 -> true (3=2+1) 6&4 -> true (6=4+2) 12&2 -> false (12=8+2)
-
Posta pelo menos um pedaço do código aí...
-
Qual erro que deu?! Compilação?! O valor na struct precisa existir antes da atribuição à variável "normal"!
-
Troque as aspas duplas por aspas simples (é caracter, duas é string)! E use dois iguais, um igual é de atribuição, dois é comparação if( esq == 'i' )...
-
Você viu que se você trocar: //Linha(504) aux = listacidade->ptInicio; Por aux = listaGanhadores; Funciona normalmente?!Aqui foi pelo menos... É bom dar uma olhada na função de adicionar daquela estrutura nova lá... Vou dar uma olhada, qualquer coisa eu dou um toque! EDITADO: Haha, descobri! Esquece o texto de cima! //Linha(402) listacidade = (stListagemGanhadores*)malloc(sizeof(stListagemGanhadores)); //Adicione isso depois da alocação da memória :) listacidade->ptInicio = NULL; Espero que funcione! ;) PS: Só tem um porém, quando 2 ou mais pessoas ganhar na mesma cidade, o sistema não vai funcionar :(. Você precisa fazer um sistema parecido com o que eu fiz com o listaGanhadores!
-
Ah, daí fica difícil :/ Se você estivesse afim de ir tentando eu até ajudava, enfim... Boa sorte aí, tomara que alguém faça pra você ^^
-
Aopa! :D Posso ajudar novamente ;)
-
Posta o que você já fez ae...
-
Coloca a linha do erro que ajuda! Uma alternativa, não tão boa é: printf("\e[H\e[2J"); Que é semelhante a: system( "clear" );
-
Boa tarde! Cite a fonte de onde foi retirado, se possível. E qual a dúvida em sí...
-
TIpo, eu somo todas e guardo qual é a maior e a menor, depois eu subtraio do total (é como se eu não tivesse somado). valor += num; //é igual a valor = valor + num; ;)
-
No fundo no fundo não ;)
-
Então se vai ter que fazer na mão mesmo, um exemplo: maior = N1; menor = N1; total = 0; total += N1; if( N2 > maior ){ maior = N2; }else if( N2 < menor ){ menor = N2; } total += N2; if( N3 > maior ){ maior = N3; }else if( N3 < menor ){ menor = N3; } total += N3; ............ Depois: total = (total - maior - menor )/4; Para fazer usando as 4 maiores notas, tente fazer algo similar...
-
#include <stdio.h> #include <stdlib.h> main() { int cod_id; float hs_trab,vl_ht,sal,sal_final,inss,irrf; printf("Digite o codigo de identificacao do funcionario:"); scanf("%i",&cod_id); printf("Digite o numero de horas trabalhadas:"); scanf("%f",&hs_trab); printf("Digite o valor da hora trabalhada:"); scanf("%f",&vl_ht); sal=(hs_trab*vl_ht); //INSS if(sal <= 800.45){ inss=(sal*7.56)/100; }else if(sal > 800.45 && sal <=900.00){ inss=(sal*8.65)/100; }else if(sal > 900.00 && sal <=1334.07){ inss=(sal*9)/100; }else if(sal > 1334.07){ inss=(sal*11)/100; } //IRRF if(sal <= 1164.00){ irrf=(sal*0)/100; }else if(sal >1164.00 && sal <=2326.00){ irrf=(sal*15)/100; }else if(sal > 2326.00){ irrf=(sal*27.5)/100; } //Mostre aqui os resultados printf( "Salario total: %.2f\nSalario com os impostos cobrado: %.2f\n", sal , sal-irrf-inss ); system("pause"); } ehsaiusheiha, eu rí da razão por editar :s
-
if(sal > 800.45)&&(sal <=900.00){ --> AGORA TEM ERRO AQUI <-- if( sal > 800.45 && sal <= 900.00 ){
-
É porque a variável valor não existe, troque por sal
-
Então, você já aprendeu vetor?! A cada checagem você precisa verificar se a nota foi válida, isto é, se ela pertence ao intervalo [1,10]. Você precisa garantir que a nota digitada está nesse intervalo, seria algo assim: N1 = 0; while( N1< 1 || N1 > 10 ){ printf( "Digite a PRIMEIRA nota: "); scanf( "%f" , &N1 ); } Fazendo isso para todas as notas. Agora, sugiro que você use vetor para resolver esse problema, vai ser MUITO² trabalhoso verificar as notas. Uma explicação simples de uso de um vetor: //Cria uma variavel capaz de armazenar 6 floats float notas[6]; int i; /* * As variáveis são acessadas de acordo com o indice. Lembrando que o indice SEMPRE começa no 0. * +---+---+---+---+---+---+ * | 0 | 1 | 2 | 3 | 4 | 5 | * +---+---+---+---+---+---+ * Sendo cada número uma variável do tipo float. * * Para ler uma entrada do teclado para uma variavel desse vetor, ficaria assim: * No caso, estou lendo para a primeira nota * scanf( "%f" , ¬as[0] ); * Para ler para a segunda, ficaria assim: * scanf( "%f" , ¬as[1] ); * E assim por diante.. */ //Usando temos varias facilidades, por exemplo para ler as 6 notas: for( i=0; i<6; i++ ){ //Como o indice do vetor começa no ZERO, e a nota começa no 1, mostramos ao usuário o indice atual+1 //Quando estiver na posição 0, que é a primeira nota, vai mostrar i para o usuário, porem vai guardar //na posição 0 do vetor printf( "Digite a %d nota: " , i+1 ); scanf( "%d" , ¬as[i] ); } Vê se com isso você consegue fazer! Qualquer coisa é só postar aí! :)
-
Ué, não entendi a dúvida :/ É idêntico ao de cima, só que antes de você calcular o desconto você subtrai esse valor! Lembrando que você deve usar o operador "E"(&&) e não o "OU"(||).
-
Quando der um erro, posta o erro também, fica muito mais fácil para encontrar! Outra coisa, quando chegar na nota de 1, não precisa fazer os cálculos! Afinal todo número dividido por 1 é o próprio número! E todo inteiro%1 é 0 No final das contas, a quantidade de cédulas de 1 real será a operação valor=(valor%2);//Aqui você já tem a quantidade de cédulas de 1 Real Embora do jeito que está atualmente vai funcionar numa boa! :) []'s EDITADO: Você precisa colocar os tipos das variáveis: printf("O valor decomposto é: %d %d %d %d %d %d %d\n",ced_100,ced_50,ced_20,ced_10,ced_5,ced_2,ced_1);
-
Até R$ 800,45 Desconto --> 7,56% De R$ 800,46 a R$ 900,00 Desconto --> 8,65% De R$ 900,01 a R$ 1.334,07 Desconto --> 9% De R$ 1.334,08 em diante Desconto --> 11% Seria algo assim if( valor <= 800.45 ){ //7.56% //Aqui você pode por assim também: if( valor > 800.45 && valor <= 900 ){ }else if( valor <= 900 ){ //8.65% }else if( valor <= 1334.07 ){ //9% }else { //11% } Uma lógica semelhante se aplica a 2 tabela de preços. Um bom conselho é fazer na ordem, porque daí você não precisa usar o limite inferior, segue um exemplo: if( valor <= 800.45 ){//Só vai entrar aqui se for menor ou IGUAL a 800.45 }else if( valor <= 900 ){//Só vai entrar aqui se for MAIOR a 800.45 e menor ou IGUAL a 900, se fosse menor iria entrar no 1º if }else if( valor <= 1334.07 ){//Só vai entrar aqui se for MAIOR que 900 e menor ou igual a 1334.07 }else {//Se for MAIOR que 1334.07 } /* * Basicamente essa maneira de fazer utiliza o if anterior para definir o limite anterior, só vai funcionar se for feito * em uma sequência lógica. Por exemplo: do maior pro menor, do menor pro maior. */ if( valo <=800.45 ){ }else if( valor>800.45 && valor<=900 ){ }else if( valor>900 && valor<=1334.07 ){ }else if( valor>1334.07{//Se for MAIOR que 1334.07 } /* * Faz exatamente a mesma coisa que o código acima, só que nesse caso os limites inferiores estão explicitamentes * declarados no if */ Acho que é isso, qualquer coisa dá um toque aí! ;)
-
Dá uma olhada na biblioteca Windows, lá tem o que você precisa. O nome da função é GetAsyncKeyState O que você poderia dar uma olhada também é na biblioteca SDL! Qualquer coisa dá um toque aí! ;) []'s