Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
zaira001002
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 21
1

Подсчет количества смены знака в последовательности чисел

24.06.2016, 16:47. Просмотров 256. Ответов 3
Метки нет (Все метки)

Почему при наличии в файле чисел : 0 2 -4, выдает результат: count = 0 . То есть... Он возвращает мне ошибку , что в файле есть не число, там, где я делаю проверку на наличие символов ненужных в файле( я проверяла). Почему происходит такая вещь в программе? Вот если в файле будут числа: 0 2 -4 5 , то уже работает верно все). Где у меня ошибка? Вот код программы:
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
44
45
46
47
48
49
#include <stdio.h>
#include <math.h>
 
int process(FILE* file, int* kol_pol)
{
    // если файла не существует - возвращает значение -1
    if (file == NULL) return -1;
    int a; //число в файле
    int num1, num2;
    int otr1, otr2;
    fseek(file, 0, SEEK_SET);
    // Если в файле не число - то возвращает значение -1
    while (fscanf(file, "%d", &a) != EOF)
    {
        if (fscanf(file, "%d", &a) != 1) return -1;
    }
    // если в файле все числа, то найдем количество смены знака
    // считываем число с файла и определяем , положительное ли оно
    fseek(file, 0, SEEK_SET);
    fscanf(file, "%d", &a);
    num1 = a;
    (num1 >= 0) ? (otr1 = 1) : (otr1 = -1);
    while (fscanf(file, "%d", &a) != EOF)
    {
        num2 = a;
        (num2 >= 0) ? (otr2 = 1) : (otr2 = -1);
        if (otr1*otr2 == -1)  (*kol_pol)++;
        num1 = num2;
        otr1 = otr2;
    }
    return 0;
}
 
int main(void)
{
    int kol_pol = 0;
 
    FILE *fin;
 
    // ввод из файла
    fin = fopen ( "C:/c/test.txt", "r" );
    if (fin == NULL) printf("Error");
 
    process(fin, &kol_pol);
    printf("%s %d %s", "count = ", kol_pol, "\n");
    getchar();
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2016, 16:47
Ответы с готовыми решениями:

Подсчет количества чисел Фибоначчи в заданной числовой последовательности.
Дано 100 чисел от 1 до 50. Определить, сколько среди них чисел Фибоначчи и сколько чисел, первая...

Подсчет количества смен знаков последовательности
из промежутка чисел 5, 5, 6, -3 подсчитать смены знаков (с + на -, с - на +) вот некоторые мысли:...

Подсчет количества чисел в файле
В файле test.txt написано: 0 -1 7 8. Консоль выводит результат: count positive = 0 count negative =...

Функция: подсчет количества сравнений чисел, выполняемых при операциях сортировки/поиска
Подсчет количества сравнений чисел, выполняемых при операциях сортировки, многократного линейного и...

Подсчет среднего геометрического последовательности положительных чисел, вводимых с клавиатуры
Помогите пожалуйста) Написать программу для подсчета среднего геометрического последовательности...

3
Hikari
Хитрая блондиночка $)
1451 / 963 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
24.06.2016, 16:57 2
Цитата Сообщение от zaira001002 Посмотреть сообщение
fscanf(file, "%d", &a) != EOF
http://www.cplusplus.com/reference/cstdio/fscanf/?kw=fscanf
On success, the function returns the number of items of the argument list successfully filled.
А не конец файла.
В твоем случае нужно проверять через feof()
0
zaira001002
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 21
24.06.2016, 17:16  [ТС] 3
Везде проверять через feof(), где встречается строка "пока не конец файла"?
0
Hikari
Хитрая блондиночка $)
1451 / 963 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
24.06.2016, 19:32 4
Цитата Сообщение от zaira001002 Посмотреть сообщение
Везде проверять через feof(
В цикле в котором считываешь. Это должно быть его условием.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2016, 19:32

Блок-схема по программе (Вывод на экран количества положительных чисел в последовательности)
Помогите пожалуйста составить блок-схему по программе: #include &lt;stdio.h&gt; #include &lt;math.h&gt; ...

Подсчет количества букв
Составить программу для подсчета количества латинских букв (больших и маленьких)

Подсчет количества цифр 5 в числе
Ищет только если один раз 5 в 4-рех значном числе, но если например 4551, щитает только одну , КАК...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru