Ir para conteúdo
Fórum Script Brasil

gabriel chamon araujo

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Tudo que gabriel chamon araujo postou

  1. esse codigo é o correto: #include <stdio.h> int main() { int i; float tv = 0, tp = 0, tg = 0, pv, pp; char f; for(i = 1; i <= 3; i++){ do { printf("\nInsira a forma de pagamento \n\tDigite 'V' para venda a vista \n\tDigite 'P' para venda a prazo \nForma: "); fflush(stdin); scanf("%c", &f); if(islower(f)) f-=32; if((f!='P')||(f!='V')) puts ("Forma de pagamento invalida."); } while ((f!='P')||(f!='V')); switch (f){ case 'V': printf("\nInsira o valor do produto: R$ "); scanf("%f", &pv); tv += pv; break; case 'P': printf("\nInsira o valor do produto: R$ "); scanf("%f", &pp); tp += pp; break; } } tg = tp + tv; printf("\nTotal de vendas a vista: %0.2f", tv); printf("\nTotal de vendas a prazo: %0.2f", tp); printf("\n\nTotal geral da venda: %0.2f\n\n", tg); system("PAUSE"); return 0; } o que fiz: coloquei um teste dentro do for pra se ter certeza que o usuario digite V ou P. agora funciona tb com v e p minusculos, porque a funcao islower() me diz se o caractere é minusculo ou maiusculo e subtrai 32 pra converter o caractere pra maiusculo (consute a tabela ascII, na verdade caracteres são numeros lidos como char) rez a lenda que colocando scanf("%*c", &character); ele le o numero digitado, mas nunca consegui funcionar, então eu sempre coloco o fflush(stdin); que llimpra o buffer do teclado. saltava o segundo loop porque já estava armazenado o Carriage Return no buffer do teclado (que é um caractere SIM, de controle, mas é um caractere) e o programa já incluia na variavel
  2. Meu jovem! Ta pronto seu codigo: #include <stdio.h> int main () { struct info { int dep; char *name; float inss,sal_b,sal_l; }; struct info funcionario; int dep; int size=1; char c; float inss,sal_b,sal_l; printf("\n Digite o nome do funcionario: "); fflush(stdin); //limpa buffer do teclado funcionario.name=NULL; do { c=getchar(); //le cada caractere por vez e o inclue na variavel c if(!iscntrl(c)) { //testa se não for digitado enter size++; funcionario.name= (char *) realloc (funcionario.name, sizeof(char)*size); //aloca o vetor caractere na memora em tempo de execucao if (funcionario.name) funcionario.name[size-2]=c; //inclue na penultima posicao else exit(1); } }while (!iscntrl(c)); funcionario.name[size-1]=''; //ultima posicao da string deve ser caractere de finalizacao printf("\n Digite o numero de dependentes do funcionario: "); scanf("%d",&funcionario.dep); printf("\n Digite o salário bruto do funcionario: "); scanf("%f",&funcionario.sal_b); if (funcionario.sal_b<=300) funcionario.inss=sal_b*0.08; else if (funcionario.sal_b>300&&funcionario.sal_b<=700) funcionario.inss=sal_b*0.09; else if(funcionario.sal_b>700) funcionario.inss=funcionario.sal_b*0.10; funcionario.sal_l=funcionario.sal_b-funcionario.inss+(15*funcionario.dep)+40+100; printf("\n O funcionário %s recebe %.2f de salario liquido",funcionario.name,funcionario.sal_l); printf("\n\n"); return 0; } erros que vi! vamos por partes: 1. scanf sempre se utiliza de referencia: scanf("%d", numero); esta errado! falta o E comercial & scanf("%d", &numero); 2. em if, quando você quer associar duas premissas, sejam elas por OU ou E ex se num=0 OU num=2 em c ficaria: if(num==0||num1==2), se uma das duas condicoes for satisfeita, ta valendo. mesma coisa com o e if (num==0&&num1==2) só ta valendo se as duas forem verdadeiras 3. struct precisava de ser refinado muito. struct é um tipo de registro. depois de criado você precisa criar um novo registro do tipo que você fez. sintaxe: struct NOME_DO_TIPO { tipo1 variavel1; etc.. }; struct NOME_DO_TIPO NOME_DO_REGISTRO; percebe bem como foi feito no codigo. depois você retira o valor, le ou modifica ele utilizando a sintaxe NOME_DO_REGISTR.variavel1=argumento; 4. realloc é muito poderoso, mas precisa de pratica pra poder usar ele. recomendacoes: quando if possuir uma instrucao apenas não tem necessidade de colocar {} exemplo: if(num==2) num++; soma uma unidade a variavel se ela for igual a 2.# referencia que você pode pegar: http://www.ime.usp.br/~pf/algoritmos/aulas/stru.html http://www.cplusplus.com/reference/clibrary/cstdlib/realloc/ não sabe ingles? aprenda pra progamar, minha ultima recomendacao!! Salve Dennis Ritchie!
×
×
  • Criar Novo...