AprendendoC Posted April 23, 2012 at 02:40 PM Report #450743 Posted April 23, 2012 at 02:40 PM do{ printf("*========================*\n"); printf("| M - Maculino |\n"); printf("| F - Feminino |\n"); printf("| E - Encerrar Programa |\n"); printf("*========================*\n"); fflush(stdin); scanf("%c", &sexo); fflush(stdin); switch(sexo) { case 'M': case 'm': masc++; break; case 'F': case 'f': fem++; break; case 'E': case 'e': system("close"); break; default: printf("Erro!"); } pessoal e o seguinte eu queria fazer o progrma fechar qndo o usuario digita-se a letra 'E', mas nao to conseguindo... agradeço pela ajuda..
bsccara Posted April 23, 2012 at 02:46 PM Report #450747 Posted April 23, 2012 at 02:46 PM Troca o 'system("close")' por um 'return 0;'. Este não é código completo, pois não ?
AprendendoC Posted April 23, 2012 at 04:38 PM Author Report #450795 Posted April 23, 2012 at 04:38 PM não e todo código... tem mais uma parte... coloquei o return = 0 mas mesmo assim ele continua...
bsccara Posted April 23, 2012 at 05:01 PM Report #450807 Posted April 23, 2012 at 05:01 PM Puseste exactamente como indiquei ou puseste 'return = 0' ? O 'return' provoca a saída da função que o contiver. Presumo que o ciclo que mostras esteja dentro da função 'main', logo saíndo da 'main' o programa termina. Se não está o teu código está mal estruturado. De qualquer maneira coloca aqui o código da função que inclui este ciclo 'do'.
Kleves zenn Posted April 23, 2012 at 05:24 PM Report #450824 Posted April 23, 2012 at 05:24 PM Simplifica retirando “ fflush(stdin)” e “system("close")”, não há necessidade. :nono1: Apenas acrescenta while (sexo!=E||sexo!=e); depois de do{ }. 😉 😉
AprendendoC Posted April 24, 2012 at 02:18 PM Author Report #451117 Posted April 24, 2012 at 02:18 PM #include<stdlib.h> #include<stdio.h> #include<conio.h> main(void) { char sexo, resposta, continuar; int totalentre = 0, totals = 0, totaln = 0, mgp = 0, mngp = 0, homens = 0, homensn = 0, num, masc = 0, fem = 0; system("color 3f"); system ("title Isaias Darci Dieterich"); printf("*========================*\n"); printf("| Pesquisa de Satisfacao |\n"); printf("*========================*\n"); do{ printf("*========================*\n"); printf("| M - Maculino |\n"); printf("| F - Feminino |\n"); printf("| E - Encerrar Programa |\n"); printf("*========================*\n"); printf(" Selecione o Sexo: "); scanf("%c", &sexo); fflush(stdin); switch(sexo) { case 'M': case 'm': masc++; break; case 'F': case 'f': fem++; break; case 'E': case 'e': exit(0); // função que força o programa a encerrar quando o usuario teclar e Letra 'E'ou 'e'. break; default: printf("Erro!"); } printf("*========================*\n"); printf("| S - Sim |\n"); printf("| N - Não |\n"); printf("*========================*\n"); printf(" Gostou do Produto: "); scanf("%c", &resposta); fflush(stdin); switch(resposta) { case 'S': case 's': totals++; break; case 'N': case 'n': totaln++; break; default: printf("Valor Invalido!"); } printf("*========================*\n"); printf("| Pesquisa Concluida |\n"); printf("*========================*\n"); printf("| E - Encerrar |\n"); printf("| C - Nova Entrevista |\n"); printf("*========================*\n"); scanf("%c", &continuar); fflush(stdin); system("cls"); }while(continuar == 'c'); printf("\nTotal de Pessoas que nao gostaram do Produto: %d", masc); system("pause"); } se eu tirar o fflush(stdin), não consigo fazer a leitura da proxima pergunta... ai está todo o código que eu tnho at agora... ainda falta termina-lo... Pessoal consegui resolver o problema... coloquei a função exit(); que faz exatamente o que eu queria...
Solution pikax Posted April 24, 2012 at 10:53 PM Solution Report #451271 Posted April 24, 2012 at 10:53 PM Penso que o fflush(stdin) nao se deve usar muito. O programa salta a proxima pergunta porque o '\n' fica no buffer e quando pedes outro char, ele poe o valor do \n, basta meteres um espaco antes do "%c": scanf(" %c", &resposta); Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
AprendendoC Posted April 25, 2012 at 06:04 AM Author Report #451295 Posted April 25, 2012 at 06:04 AM Penso que o fflush(stdin) nao se deve usar muito. O programa salta a proxima pergunta porque o '\n' fica no buffer e quando pedes outro char, ele poe o valor do \n, basta meteres um espaco antes do "%c": scanf(" %c", &resposta); Pohh.. essa eu não sabia.... Valeu pela Dica... 😉
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now