Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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);
}
}
}
}
}
}
}>
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.
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.
>
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.
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
Valeu, Victor! Obrigado pela dica e pelo sermão!
Resolvido!
Pq o buffer de linhas do console não está suportando tantas linhas.
Redirecione o output para um arquivo e veja se mostra todos.