1 / 1 / 0
Регистрация: 16.12.2012
Сообщений: 41
1

Scanf в цикле

12.09.2013, 16:06. Показов 1928. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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 не считывает переменную.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.09.2013, 16:06
Ответы с готовыми решениями:

Не работает scanf в цикле
в коде int main() { int n,ip; printf(&quot;2-mernoe DPF\n&quot;); do { printf(&quot;\n 1-iz faila, ...

Как програмно в цикле не доходя до конца, пропустить шаг в цикле?
Как програмно в цикле не доходя до конца, пропустить шаг в цикле?

При склеивании строк в цикле, уже на пятом цикле возникает переполнение памяти
При склеивании строк в цикле, уже на пятом цикле возникает переполнение памяти. Что не так и как...

Переменная, которая только что использовалась в цикле в качестве счётчика в следующем цикле не используется
Помогите, пожалуйста. Вот отрывок программы (программа целиком- в архиве): procedure...

9
What a waste!
1607 / 1299 / 180
Регистрация: 21.04.2012
Сообщений: 2,728
12.09.2013, 16:25 2
Цитата Сообщение от Mil_OK Посмотреть сообщение
C++
1
scanf("%d",&n);
Попробуй
C++
1
scanf("%d %*[^\n]", &n);
0
1 / 1 / 0
Регистрация: 16.12.2012
Сообщений: 41
12.09.2013, 16:37  [ТС] 3
Цитата Сообщение от gray_fox Посмотреть сообщение
Попробуй
C++
1
scanf("%d %*[^\n]", &n);
Не сработало.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
12.09.2013, 17:19 4
C++
1
2
3
4
for(i=0;i<n;i++)
        {
            scanf("%lf",&a);
...
0
1 / 1 / 0
Регистрация: 16.12.2012
Сообщений: 41
12.09.2013, 17:35  [ТС] 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
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
12.09.2013, 17:58 6
Цитата Сообщение от Mil_OK Посмотреть сообщение
попробуйте у себя запустить со значениями
5
8.91 18.59 -63.15 82.03 34.32
Попробовал. В файл записалось 3.
0
1 / 1 / 0
Регистрация: 16.12.2012
Сообщений: 41
12.09.2013, 19:12  [ТС] 7
А у меня не хочет работать
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
12.09.2013, 19:20 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, где находится?
1
1 / 1 / 0
Регистрация: 16.12.2012
Сообщений: 41
12.09.2013, 19:35  [ТС] 9
alsav22, visual studio 10, win7.

Сейчас закрыл студию, потом открыл, создал новый проект, вставил ваш код, и всё заработало, чудеса
0
alsav22
12.09.2013, 19:39     Scanf в цикле
  #10

Не по теме:

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

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.09.2013, 19:39

Оптимизирует ли компилятор выражения в цикле типа 90*M_PI или каждую итерацию в цикле считает заново?
Занялся сабжем по проекту. IDE Builder 2010 1) Оптимизирует ли компилятор выражения в цикле типа...

scanf()
Посмотрите пожалуйста на код моей программы и объясните мне почему она не работает и что надо...

scanf в C
можна прочитать несколько значений использав всего раз scanf например : scanf (&quot;%d %d&quot;,&amp;a,&amp;b); ?...

Scanf в QT
Ребят,подскажите, почему после scanf переменная q не инициализируется, т.е после нажатия Enter не...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru