Sota Posted March 31, 2006 at 02:35 PM Report #20274 Posted March 31, 2006 at 02:35 PM Boas pessoal tou-me a iniciar em c e tive a fazer esse programa em que intruduzindo a sequencia de votos em que a conta como voto para candidadto a etc e 0 voto nulo e no final da sequencia termina com $. Eu csg compilar etc mas nao csg correr o programa da-me erro alguem me sabe explicar o que tou a fazer mal comp. sota #include<stdio.h> #define final "$" char v; int votosnulos; int votoa; int votob; int votoc; int main() { printf(" intruduza uma sequencia de votos \n"); scanf("%c", v); while (v!=final){ if (v==0) votosnulos=votosnulos+1; return votosnulos; if (v=='a') votoa=votoa+1; return votoa; if (v=='b') votob=votob+1; return votob; if (v=='c') votoc=votoc+1; return votoc; scanf("%c", v); } return printf("%d,%d,%d,%d,", votosnulos, votoa, votob, votoc); return 0; }
brink@ero Posted March 31, 2006 at 03:41 PM Report #20282 Posted March 31, 2006 at 03:41 PM Assim por alto vejo que esqueceste de inicializar as variáveis a 0... colocaste return no if? :bored: 😁 não percebi o que querias fazer com isso. Vê-lá se é isto que queres: #include<stdio.h> #include<windows.h> #define final 's' char v; int votosnulos=0,votoa=0, votob=0, votoc=0; int main() { printf(" intruduza uma sequencia de votos \n"); scanf("%c", &v); while (v!=final){ if (v=='0') votosnulos=votosnulos+1; if (v=='a') votoa=votoa+1; if (v=='b') votob=votob+1; if (v=='c') votoc=votoc+1; scanf("%c", &v); } printf("%d,%d,%d,%d,\n", votosnulos, votoa, votob, votoc); system("pause"); return 0; }
Sota Posted March 31, 2006 at 08:36 PM Author Report #20307 Posted March 31, 2006 at 08:36 PM como disse ainda tou aapreder c nao tenho mtas bases mas obrigado acabei de aprender umas coisinhas mas tenho so um problema ele não está a fazer o printf nao me mostra o resultados das somas
brink@ero Posted March 31, 2006 at 10:53 PM Report #20327 Posted March 31, 2006 at 10:53 PM Já corrigi 😁
Sota Posted April 1, 2006 at 12:21 AM Author Report #20336 Posted April 1, 2006 at 12:21 AM so uma coisa para que serve o system o que ele faz. O meu compilador nao reconheçe windows.h onde posso sacar? comp e obrigado pela ajuda;)
brink@ero Posted April 1, 2006 at 10:08 AM Report #20358 Posted April 1, 2006 at 10:08 AM É só para que no final apareça um mensagem "Prima qualquer tecla para continuar..." Apaga essa instrução e o include windows.h, isso foi uns extras que eu fiz.
Gurzi Posted April 1, 2006 at 10:10 AM Report #20359 Posted April 1, 2006 at 10:10 AM quando tu dizes : printf(" intruduza uma sequencia de votos \n"); scanf("%c", &v); isto só vai aceitar um voto ... definiste v como char mas só com 1 posição. é mesmo isso que queres? tipo no primeiro printf aquela pergunta no programa todo só se vai realizar uma vez, por isso os whiles seguintes n tem logica
saramgsilva Posted April 1, 2006 at 11:02 AM Report #20382 Posted April 1, 2006 at 11:02 AM como estao a usar scanf("%c",&v.); keria avisar... para deixar 1 espaço entre " e o % : assim scanf(" %c",&v) as x isto da erros marados...tv resulte 😁 www.saramgsilva.com As minhas apps no WP7 Marketplace Youtube : Galinho - Windows Phone 7.5
brink@ero Posted April 1, 2006 at 11:12 AM Report #20388 Posted April 1, 2006 at 11:12 AM quando tu dizes : printf(" intruduza uma sequencia de votos \n"); scanf("%c", &v); isto só vai aceitar um voto ... definiste v como char mas só com 1 posição. é mesmo isso que queres? tipo no primeiro printf aquela pergunta no programa todo só se vai realizar uma vez, por isso os whiles seguintes n tem logica Está dito: "intruduza uma sequencia de votos", não "intruduza o seu voto" E dentro do while tens o scanf("%c", &v); Ele só quer contar os votos, não é necessário registar a sequencia de votos num char[N], ainda proxima porque se fosse assim, ele ou usava memória dinâmica ou tinha sempre um n.º limitado de votos possíveis de realizar.
Gurzi Posted April 1, 2006 at 11:17 AM Report #20394 Posted April 1, 2006 at 11:17 AM não percebi niente :X então ele faz a pergunta introduza a sequência de votos mas só vai guardar o primeiro valor que introduzir : imagina que o output é este: Introduza uma sequencia de votos: A V --> 'A'; a variavel v vai ficar com o caracter 'A' e depois entra no while e ele vai ver se o final é igual ao que está dentro do V e vai sempre retornar o valor 1 , porque o v nunca vai ser igual ao &final mas ok 😁
brink@ero Posted April 1, 2006 at 11:20 AM Report #20400 Posted April 1, 2006 at 11:20 AM não percebi niente :X então ele faz a pergunta introduza a sequência de votos mas só vai guardar o primeiro valor que introduzir : imagina que o output é este: Introduza uma sequencia de votos: A V --> 'A'; a variavel v vai ficar com o caracter 'A' e depois entra no while e ele vai ver se o final é igual ao que está dentro do V e vai sempre retornar o valor 1 , porque o v nunca vai ser igual ao &final mas ok 😁 Já executas-te o código? Eu já! Volto a repetir: Existe dentro do while um scanf("%c", &v); Por isso o programa vai estar sempre a escuta até que tecles a letra s!
Sota Posted April 1, 2006 at 03:19 PM Author Report #20441 Posted April 1, 2006 at 03:19 PM desculpaem so tive tempo de ler agora a finalidade do progrma é para que eu intruduzinho os seguiinte: "aabbaa00cc$ " em a letra a simboliza que 1 voto no candidato a b simbuliza um voto no candidado b e 0 voto nulo e no e que aprensente no fim o numero de votos do cadidado a o numero de votos nulos(0) etc o programa n me da erros so que nao me faz o printf no final ou seja nao me está aparecer o numero de votos em a etc PS : ainda nao exprementei com windows.h porque ele diz que nao conheçe:S obg e comp
Gurzi Posted April 1, 2006 at 03:31 PM Report #20447 Posted April 1, 2006 at 03:31 PM que forma de programar weird :X
Sota Posted April 1, 2006 at 03:38 PM Author Report #20449 Posted April 1, 2006 at 03:38 PM epah agr faals-te xines lololo ?
brink@ero Posted April 1, 2006 at 06:02 PM Report #20481 Posted April 1, 2006 at 06:02 PM que forma de programar weird :X Estas a falar comigo? É que o programa não é meu! Eu só corrigi o essencial! Se fosse eu a fazer o programa era feito a minha maneira! desculpaem so tive tempo de ler agora a finalidade do progrma é para que eu intruduzinho os seguiinte: "aabbaa00cc$ " em a letra a simboliza que 1 voto no candidato a b simbuliza um voto no candidado b e 0 voto nulo e no e que aprensente no fim o numero de votos do cadidado a o numero de votos nulos(0) etc o programa n me da erros so que nao me faz o printf no final ou seja nao me está aparecer o numero de votos em a etc PS : ainda nao exprementei com windows.h porque ele diz que nao conheçe:S obg e comp Não fez porque eu substitui o '$' por 's'. LoL (está no define)
Warrior Posted April 1, 2006 at 09:03 PM Report #20511 Posted April 1, 2006 at 09:03 PM Como eu resolveria: #include <stdio.h> #define final '$' int main() { char c; int v[26],i; for (i=0;i<=26;i++) v[i]=0; scanf("%c",&c); while (c!=final) { if (c=='0') v[0]++; else v[(int)(c)-96]++; scanf("%c",&c); } printf("Nulos -> %d\n",v[0]); for (i=1;i<=26;i++) if (v[i]) printf("%c -> %d\n",(char)(i+96),v[i]); system("pause"); return 0; } Podem existir 26 candidatos (de 'a' a 'z') não se ficando limitado aos ifs. Se quiseres considerar o caso do 'A' ser igual ao 'a', limitas-te a fazer um c=tolower(c) logo após a leitura.
motherFFH Posted April 2, 2006 at 02:55 PM Report #20587 Posted April 2, 2006 at 02:55 PM Viva pessoal, sou novo por aqui e acho este forum à maneira. 😛 Gostei ali da solução do warrior, mas tem um pequeno bug, o array "v" deve set int v[27] em vez de 26. A minha solução é esta (mas eu sou um bocado tarado, aviso já 😁 ) : #include <stdio.h> const char votes[] = "0abc"; const char final = '$'; int v[sizeof(votes)/sizeof(*votes)-1]; int main() { char c; int i; while ((scanf("%c", &c), c) != final) { char *s=strchr(votes,c); if (!s) continue; v[s-votes]++; } printf("Nulos -> %d\n",v[0]); for (i=1;i<sizeof(v)/sizeof(*v);i++) printf("%c -> %d\n",votes[i], v[i]); return 0; }
Gurzi Posted April 2, 2006 at 05:45 PM Report #20602 Posted April 2, 2006 at 05:45 PM para ke isto ? const char votes[] = "0abc"; e o k faz? e pk usas os sizeof ?
motherFFH Posted April 2, 2006 at 07:54 PM Report #20631 Posted April 2, 2006 at 07:54 PM Ok, em "votes" está uma lista de todos os caracteres de entrada aceites (excepto o $). Com base nisto, geramos em "v" um array com o mesmo número de elementos, excepto o \0, daí os sizeofs... Esse array vai ter o contador de cada letra. No corpo do código é encontrar o char de input no tal array "votes", e incrementar o index correspondente em "v". Francamente gosto bastante de C, e escrevi muitas linhas de código em C e tal. Mas já não tocando em C há uns bons anitos, quando olho para isto, dou razão aos que dizem que programar em C é dar tiros nos pés. Ou dito de outra forma, só para homens de barba rija :-) Hoje em dia os meus vectores de desenvolvimento são (java OU .net) + python.
entering Posted April 3, 2006 at 12:11 PM Report #20691 Posted April 3, 2006 at 12:11 PM #include<windows.h> se o objectivo é poderes usar o system então deves incluir o stdlib.h e não a windows.h além do mais se é so para fazer um PAUSE simplesmente faz um printf e um getchar devido a compatibilidades pois o system não faz nada mais que mandar PAUSE para a consola se usar outro OS não existe o comando PAUSE
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