Ir para conteúdo

POWERED BY:

Arquivado

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

aloh10

Usando freopen

Recommended Posts

Escreva um programa que lê dois números inteiros (sendo o primeiro menor do que o segundo) e calcula:

• A soma de todos os números ímpares dentro do intervalo fechado desses dois números .

• A soma de todos os números pares dentro do intervalo fechado desses dois números.

 

e1.txt = 2 11

s1.txt = 35 30

 

Não tah aparecendo a saída, alguém pode me dizer oq tah faltando nesse código?

 

#include <stdio.h>

int main(void) {
       int x, y, i, si = 0, sp = 0;

       freopen("e1.txt", "r", stdin);
       freopen("s1.txt", "w", stdout);

       scanf("%d %d", &x, &y);


       for (i = x; i <= y; i++) {
               if (i % 2) {
                       si += i;
               } else {
                       sp += i;
               }
       }

       printf("%d %d", si, sp);

       fclose(stdin);
       fclose(stdout);
       return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não altere stdin ou stdout, pois estes são usados por funções padrões como: puts, gets, printf, scanf.

 

Use fopen, veja:

#include <stdio.h>

int main(void) {
       FILE* f1,* f2;
       int x, y, i, si = 0, sp = 0;

       f1 = fopen("c:\\s1.txt", "r"); // no Linux: /home/user/
       if(f1 == NULL)
           return 1;

       f2 = fopen("c:\\e1.txt", "r");
       if(f2 == NULL)
       {
           fclose(f1);
           return 2;
       }

       fscanf(f1, "%d", &x);
       fscanf(f2, "%d", &y);


       for (i = x; i <= y; i++) {
               if (i % 2) {
                       si += i;
               } else {
                       sp += i;
               }
       }

       printf("%d %d", si, sp);

       fclose(f1);
       fclose(f2);
       return 0;
}

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.