A. Pedro Postado Novembro 7, 2008 Denunciar Share Postado Novembro 7, 2008 (editado) Podem eliminar por favor....Resolvido...Muito obrigado a todos... Editado Novembro 12, 2008 por A. Pedro Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cleyvison Postado Novembro 8, 2008 Denunciar Share Postado Novembro 8, 2008 O que você já fez?Olá a todos necessitava de uma pequena ajuda.comecei agora com programação em C e foi-me pedido o seguinte trabalho:O programa deve ler um número inteiro positivo e escrever todas assomas de 3 parcelas distintas, a+b+c, cujo resultado seja esse número ecujas somas difiram, pelo menos, num número, independentemente daposição que ocupe.Por exemplo, se 12 for o inteiro lido, o programa deve escrever asseguintes somas1 + 2 + 91 + 3 + 81 + 4 + 71 + 5 + 62 + 3 + 72 + 4 + 63 + 4 + 5Note que a soma 1+9+2 deve ser considerada uma repetição de1+2+9 .por favor ajude-me e muito obrigado... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Risadão Postado Novembro 8, 2008 Denunciar Share Postado Novembro 8, 2008 (editado) Boa tarde A. Pedro,cara, fiz o programa aki em casa e deu certinho. Não vou postar o código pronto mas vou te dizer como se faz, porque seria muita moleza. Primeiro você deve declarar cinco variáveis, por exemplo A, B, C, R e NUM, onde NUM é o número que será digitado, A, B e C você vai usar para fazer 3 for's e R será o resultado da soma de A, B e C. O primeiro for deve ir de 1 até o NUM - 3, o segundo de 1 até NUM - 2 e o terceiro de 1 até NUM. Agora só fazer a soma e colocar duas estruturas de condição. A primeira: Se A != B && A != C && B != C && R == NUM e a segunda: Se A < B && A < C && B < C. Agora só mandar imprimir na tela que vai dar certinho! Qualquer dúvida tentarei esclarecer melhor, se ainda assim não der certo me fala que posto o código pra você. falou T+ . . . :D Editado Novembro 8, 2008 por Risadão Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 A. Pedro Postado Novembro 8, 2008 Autor Denunciar Share Postado Novembro 8, 2008 Boa tarde A. Pedro,cara, fiz o programa aki em casa e deu certinho. Não vou postar o código pronto mas vou te dizer como se faz, porque seria muita moleza. Primeiro você deve declarar cinco variáveis, por exemplo A, B, C, R e NUM, onde NUM é o número que será digitado, A, B e C você vai usar para fazer 3 for's e R será o resultado da soma de A, B e C. O primeiro for deve ir de 1 até o NUM - 3, o segundo de 1 até NUM - 2 e o terceiro de 1 até NUM. Agora só fazer a soma e colocar duas estruturas de condição. A primeira: Se A != B && A != C && B != C && R == NUM e a segunda: Se A < B && A < C && B < C. Agora só mandar imprimir na tela que vai dar certinho! Qualquer dúvida tentarei esclarecer melhor, se ainda assim não der certo me fala que posto o código pra você. falou T+ . . . :Dvaleu cara, mas não podia explicar um pouco melhor? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Risadão Postado Novembro 8, 2008 Denunciar Share Postado Novembro 8, 2008 (editado) E aí cara, tranquilo?Posso explicar melhor sim, vou postar o código e você vai intender!#include <iostream.h>int main(){ int a, b, c, R, NUM; cout << "Digite um numero: "; cin >> NUM; for (a = 1; a <= NUM; a++) { for (b = 1; b <= NUM; b++) { for (c = 1; c <= NUM; c++) { R = a + b + c; if (a != b && a != c && b != c && R == NUM) { if (a < b && a < c && b < c) cout << "\n" << a << " + " << b << " + " << c << " = " << R; } } } } system("PAUSE >= nul"); }[/CODEBOX]Os 3 for's serão as 3 parcelas. No primeiro e no segundo for não é necessário colocar de 1 até NUM -3 e de 1 até NUM - 2 porque você vai usar a estrutura de condição. O primeiro if é a condição para que não seja repetidos os número e tb para somente mostrar os resultados iguais ao número digitado, porque se o cara digitar 12 por exemplo, o programa começa indo de 1 + 1 + 1 até 12 + 12 + 12, ou seja, teria números repetidos e iria mostrar os resultados de 3 à 36, e só queremos os resultados iguais ao número digitado. O segundo if é a condição para que não se repita parcelas iguais, tipo 1 + 2 + 9 e 1 + 9 + 2....não sei se expliquei direito ou se conseguiu intender, mas é isso. Qualquer dúvida posta aí! falou T+ . . . abraços :D Editado Novembro 8, 2008 por Risadão Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 A. Pedro Postado Novembro 8, 2008 Autor Denunciar Share Postado Novembro 8, 2008 (editado) obrigado mais uma vez,estou usando o Dev.c++ e dá erro a compilar... o codigo tem de ser em C e não em c++ !!!!!!!1 :blush: Editado Novembro 8, 2008 por A. Pedro Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Risadão Postado Novembro 8, 2008 Denunciar Share Postado Novembro 8, 2008 (editado) Bom cara, nunca mexi com C, mas imagino que seje o seguinte:#include <stdio.h>main(){int a, b, c, R, NUM;printf("Digite um numero: ");scanf("%d", &NUM);for (a = 1; a <= NUM; a++){for (b = 1; b <= NUM; b++){for (c = 1; c <= NUM; c++){R = a + b + c;if (a != b && a != c && b != c && R == NUM){if (a < b && a < c && b < c)printf("\n%d + %d + %d = %d", a, b, c, R);}}}}system("PAUSE >= nul");}[/CODEBOX]Acho que em C seria isso aí, mas não tenho certeza quanto ao último printf! Tenta compilar aí e posta se deu certo!. falou . . . Editado Novembro 8, 2008 por Risadão Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 A. Pedro Postado Novembro 8, 2008 Autor Denunciar Share Postado Novembro 8, 2008 oi, dá erro em printfestou a dentar corrigir...se ajou a solução me diz... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cleyvison Postado Novembro 8, 2008 Denunciar Share Postado Novembro 8, 2008 (editado) Risadão, funciona do DEV C++ mas, primeiro tu disse onde estava o peixe, depois tu deu a vara e por nem deixou o cara pensar, ou melhor, pescar.....um abraço.......obs.: tomei a liberdade de indentar seu código.#include <stdio.h> main() { int a, b, c, R, NUM; printf("Digite um numero: "); scanf("%d", &NUM); for (a = 0; a <= NUM; a++) //ALTEREI AQUI POIS 0+0+12 =12 OU 0+1+11= 12 { for (b = 1; b <= NUM; b++) { for (c = 1; c <= NUM; c++) { R = a + b + c; if (a != b && a != c && b != c && R == NUM) { if (a < b && a < c && b < c) printf("\n%d + %d + %d = %d", a, b, c, R); } } } } system("PAUSE >= nul"); }Bom cara, nunca mexi com C, mas imagino que seje o seguinte:#include <stdio.h>main(){int a, b, c, R, NUM;printf("Digite um numero: ");scanf("%d", &NUM);for (a = 1; a <= NUM; a++){for (b = 1; b <= NUM; b++){for (c = 1; c <= NUM; c++){R = a + b + c;if (a != b && a != c && b != c && R == NUM){if (a < b && a < c && b < c)printf("\n%d + %d + %d = %d", a, b, c, R);}}}}system("PAUSE >= nul");}[/CODEBOX]Acho que em C seria isso aí, mas não tenho certeza quanto ao último printf! Tenta compilar aí e posta se deu certo!. falou . . . Editado Novembro 8, 2008 por cleyvison Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Risadão Postado Novembro 8, 2008 Denunciar Share Postado Novembro 8, 2008 (editado) Isso aí cleyvison, você tem razão, não pensei no 0 + 1 + 11 rsrs Vlw! A. Pedro, posta aí se funcionou! :D Editado Novembro 8, 2008 por Risadão Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cleyvison Postado Novembro 8, 2008 Denunciar Share Postado Novembro 8, 2008 Risadão e A. Pedro, testei aqui no dev c++ funcionou diretinho, quanto a estar so main() no meu compilador não deu erro. E não da erro no printf. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 A. Pedro Postado Novembro 8, 2008 Autor Denunciar Share Postado Novembro 8, 2008 funciona, obrigado,como poderei tambem aprenderC como voçes???????????? :rolleyes: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Durub Postado Novembro 9, 2008 Denunciar Share Postado Novembro 9, 2008 Brinque, se desafie a fazer coisas.Tenha um site de referência ao desenvolver seus programas.Em inglês: http://www.cplusplus.com/referenceAbraços. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 A. Pedro Postado Novembro 9, 2008 Autor Denunciar Share Postado Novembro 9, 2008 obrigado a todos mais uma vez...será que me podiam explicar, para compreender melhor, o que faz neste programa os 3 "for" e os 2 "if"obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Risadão Postado Novembro 10, 2008 Denunciar Share Postado Novembro 10, 2008 E aí A. Pedro, tranquilo?Bom, vou tentar explicar +/-. Os 3 for serão as três parcelas. Vamos pegar o número seis como exemplo. Eles vão começar a contar de 0 + 1 + 1 e vão até 6 + 6 + 6. Os 3 for serve pra isso, pra fazer as três parcelas, o primeiro indo de 0 até 6, o segundo indo de 1 a 6 e o terceiro tb de 1 a 6, porém, se colocar apenas os 3 for sem os 2 if apareceria todas as somas desde 0 + 1 + 1 até 6 + 6 + 6, os 2 if serve justamente pra isso, o primeiro pra só aparecer as somas que são iguais ao número digitado, por exemplo 0 + 1 + 1 = 2, então essa soma NÃO SERVE pra nós porque só queremos as somas que serão iguais a 6, por isso coloquei if (...R == NUM). O primeiro if tb utilizei pra não aparecer números repetidos, por exemplo 1 + 1 + 1. Por isso do if (a != b && a != c...), ou seja, só quando o A for diferente de B e C e o B diferente de C e a soma deles igual ao número digitado é que vai aparecer o resultado. Mas ainda assim teríamos o problema de aparecer somas repetidas, por exemplo 1 + 2 + 3 e 1 + 3 + 2. O segundo if na verdade apenas coloca as parcelas em ordem crescente if (A < B && A < C...). Se A < B e A < C e B < C então imprima A + B + C. Dessa forma não apareceria somas repetidas porque se tivesse lá 1 + 2 + 3 e 1 + 3 + 2 ele só iria imprimir 1 + 2 + 3 porque o A seria menor que B e C e B seria menor que C, no caso de 1 + 3 + 2 o B é maior que C então não vai imprimir essa soma. Não sei se deu pra você intender direitinho, mas é isso aí, qualquer outra dúvida é só postar aí.cleyvison, se tiver algum comentário ou algo a acrescentar na explicação posta aí. VLW! :) É isso aí, falou, T+ . . . abraços!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
A. Pedro
Podem eliminar por favor....
Resolvido...
Muito obrigado a todos...
Editado por A. PedroLink para o comentário
Compartilhar em outros sites
14 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.