Форум программистов, компьютерный форум CyberForum.ru

Scanf в цикле - C++

Восстановить пароль Регистрация
 
Mil_OK
1 / 1 / 0
Регистрация: 16.12.2012
Сообщений: 41
12.09.2013, 16:06     Scanf в цикле #1
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
 
int main()
    {
 
        int n,i,k;
        double a,r;
 
        freopen("input.txt","r",stdin);
        freopen("output.txt","w",stdout);
        
        scanf("%d",&n);
        r=1;
        k=0;
        a=0;
        
        for(i=1;i<=n;i++)
            {
                scanf("%f",&a);
                a=(a>0)?a:-a;
                if((a-((int)a))>((((int)a) + 1) - a))
                    {
                    if(((((int)a) + 1) - a)<r)
                        {
                            r=((((int)a) + 1) - a);
                            k=i;
                        }
                    }
                else 
                    {
                    if((a-((int)a))<r)
                        {
                            r=(a-((int)a));
                            k=i;
                        }
                    }
            }
        printf("%d",k);
        return 0;
    }
Имею следущее, в файле записано сначало число n, а потом на след строке записано n чисел через пробел, каждое их надо поочереди обрабатывать. Но почему то printf не считывает переменную.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2013, 16:06     Scanf в цикле
Посмотрите здесь:

C++ scanf в C
scanf ? C++
C++ scanf, char
scanf for double C++
scanf() C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
12.09.2013, 16:25     Scanf в цикле #2
Цитата Сообщение от Mil_OK Посмотреть сообщение
C++
1
scanf("%d",&n);
Попробуй
C++
1
scanf("%d %*[^\n]", &n);
Mil_OK
1 / 1 / 0
Регистрация: 16.12.2012
Сообщений: 41
12.09.2013, 16:37  [ТС]     Scanf в цикле #3
Цитата Сообщение от gray_fox Посмотреть сообщение
Попробуй
C++
1
scanf("%d %*[^\n]", &n);
Не сработало.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.09.2013, 17:19     Scanf в цикле #4
C++
1
2
3
4
for(i=0;i<n;i++)
        {
            scanf("%lf",&a);
...
Mil_OK
1 / 1 / 0
Регистрация: 16.12.2012
Сообщений: 41
12.09.2013, 17:35  [ТС]     Scanf в цикле #5
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
2
3
4
for(i=0;i<n;i++)
        {
            scanf("%lf",&a);
...
Не идёт, попробуйте у себя запустить со значениями
5
8.91 18.59 -63.15 82.03 34.32
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.09.2013, 17:58     Scanf в цикле #6
Цитата Сообщение от Mil_OK Посмотреть сообщение
попробуйте у себя запустить со значениями
5
8.91 18.59 -63.15 82.03 34.32
Попробовал. В файл записалось 3.
Mil_OK
1 / 1 / 0
Регистрация: 16.12.2012
Сообщений: 41
12.09.2013, 19:12  [ТС]     Scanf в цикле #7
А у меня не хочет работать
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.09.2013, 19:20     Scanf в цикле #8
Цитата Сообщение от Mil_OK Посмотреть сообщение
А у меня не хочет работать
В программировании чудес не бывает. Среда какая? ОС?

Добавлено через 2 минуты
Для чистоты эксперимента, этот код попробуйте:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
 
int main()
    {
 
        int n,i,k;
        double a,r;
 
        freopen("input.txt","r",stdin);
        freopen("output.txt","w",stdout);
        
        scanf("%d",&n);
        r=1;
        k=0;
        a=0;
        
        for(i=0;i<n;i++)
            {
                scanf("%lf",&a);
                
                a=(a>0)?a:-a;
                if((a-((int)a))>((((int)a) + 1) - a))
                    {
                    if(((((int)a) + 1) - a)<r)
                        {
                            r=((((int)a) + 1) - a);
                            k=i;
                        }
                    }
                else 
                    {
                    if((a-((int)a))<r)
                        {
                            r=(a-((int)a));
                            k=i;
                        }
                    }
            }
        printf("%d",k);
        return 0;
    }
Добавлено через 1 минуту
Файл input.txt, где находится?
Mil_OK
1 / 1 / 0
Регистрация: 16.12.2012
Сообщений: 41
12.09.2013, 19:35  [ТС]     Scanf в цикле #9
alsav22, visual studio 10, win7.

Сейчас закрыл студию, потом открыл, создал новый проект, вставил ваш код, и всё заработало, чудеса
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.09.2013, 19:39     Scanf в цикле
Еще ссылки по теме:

C++ Не работает scanf в цикле
C++ fprintf scanf
C++ Scanf

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
alsav22
12.09.2013, 19:39     Scanf в цикле
  #10

Не по теме:

Цитата Сообщение от Mil_OK Посмотреть сообщение
чудеса
В программировании чудес не бывает.

Yandex
Объявления
12.09.2013, 19:39     Scanf в цикле
Ответ Создать тему
Опции темы

Текущее время: 08:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru