Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Ajuda com código


A. Pedro

Pergunta

14 respostass a esta questão

Posts Recomendados

  • 0

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 as

somas de 3 parcelas distintas, a+b+c, cujo resultado seja esse número e

cujas somas difiram, pelo menos, num número, independentemente da

posição que ocupe.

Por exemplo, se 12 for o inteiro lido, o programa deve escrever as

seguintes somas

1 + 2 + 9

1 + 3 + 8

1 + 4 + 7

1 + 5 + 6

2 + 3 + 7

2 + 4 + 6

3 + 4 + 5

Note que a soma 1+9+2 deve ser considerada uma repetição de

1+2+9 .

por favor ajude-me e muito obrigado...

Link para o comentário
Compartilhar em outros sites

  • 0

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 por Risadão
Link para o comentário
Compartilhar em outros sites

  • 0
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

valeu cara, mas não podia explicar um pouco melhor?

Link para o comentário
Compartilhar em outros sites

  • 0

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 por Risadão
Link para o comentário
Compartilhar em outros sites

  • 0

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 por Risadão
Link para o comentário
Compartilhar em outros sites

  • 0

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 por cleyvison
Link para o comentário
Compartilhar em outros sites

  • 0

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!!!

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...