Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jabba Hutt

[Resolvido] Permutação em C

Recommended Posts

Tenho aqui um programa que faz permutação de N(n° escolhido pelo usuário) elementos de 5 em 5 e me mostra as combinaçoes que cuja soma seja igual a X(n° escolhido pelo usuário). Ele roda perfeitamente, calcula e tudo. Mas quando termina a execução NÃO está mostrando TODOS os resultados na tela.

Se você digitar 50 numeros distintos, ele só mostra 296 linhas, sendo que ele ate calculou todos os resultados mas só mostrou 296 deles.Pensei que teria que aumentar as dimensoes da tela ou o buffer.Mas nao resolveu.

Se alguem rodar o programa verá o problema que estou falando.Observe que ele não mostrará todos as combinações.

 

#include <stdio.h>

int main(){
    int n,i,i1,i2,i3,i4,i5,soma,X;
    int m[50];
    printf("Informe a soma X:");
    scanf("%d",&X);
    printf("Informe a quantidade (maior que 5) de numeros que serao digitados: ");
    do{
        scanf("%d",&n);
        if (n<=5) {
            printf("Informe um valor maior que 5: ");
        }
    }while(n<=5);
    for (i=0;i<n;i++){
        printf("Digite o %do. numero: ",i+1);
        scanf("%d",&m[i]);
    }
    for (i1=0;i1<n-4;i1++){
        for (i2=i1+1;i2<n-3;i2++){
            for (i3=i2+1;i3<n-2;i3++){
                for (i4=i3+1;i4<n-1;i4++){
                    for (i5=i4+1;i5<n;i5++){
                        soma = m[i1] + m[i2] + m[i3] + m[i4] + m[i5];
                        if (soma == X) {
                            printf("%d + %d + %d + %d + %d e' igual a %d\n",m[i1],m[i2],m[i3],m[i4],m[i5],X);
                        }
                    }
                }
            }
        }
    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pq o buffer de linhas do console não está suportando tantas linhas.

Redirecione o output para um arquivo e veja se mostra todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pq o buffer de linhas do console não está suportando tantas linhas.

Redirecione o output para um arquivo e veja se mostra todos.

 

Como redireciono o output para um arquivo? Estou usando o Code::Blocks.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usando o code::blocks não sei.

De duas uma, ou você usa funções no seu código C para escreverem num arquivo, ou você redireciona na linha de comandos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usando o code::blocks não sei.

De duas uma, ou você usa funções no seu código C para escreverem num arquivo, ou você redireciona na linha de comandos.

 

Continuo às escuras... me dá uma dica de como fazer isso, Victor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pesquisou sobre redirecionar o output na linha de comandos?

Você pesquisou sobre funções para trabalhar com arquivos em C?

 

Cara, eu dei a direção que você deve ir, mas você tem que andar com as suas próprias pernas.

A partir de um certo nível, achar a direção pra ir ja é difícil, imagina então sair andando...

 

Mas não tem problema, eu quebro o teu galho dessa vez.

Para trabalhar com arquivos em C, você precisa dar uma olhada nas funções:

fprintf, fputs, fputc, fgets, fscanf, fopen e fclose.

 

Para redirecionar o output na linha de comandos é simples, basta usar o caractere '>'

Isto é, imaginemos que o programa "teste" dá-nos um output qualquer, a sua linha de comandos ficaria assim:

--> Windows:

teste > meuarquivo.txt
--> *nix:
./teste > meuarquivo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.