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

Определение типа последовательности

05.02.2020, 20:17. Показов 384. Ответов 3
Метки си (Все метки)

Доброго времени суток!

Нужна помощь в решении проблемы с выводом переменной при определении типа последовательности.

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
50
51
52
53
54
55
56
57
58
#include <stdio.h>
#include <stdlib.h>
 
int type(FILE *file);
 
int main(int argc, char *argv[]) {
    char filename[256];
    int res;
    FILE *file;
    printf("Enter filename ->  ");
    scanf("%s",&filename);
    file = fopen(filename,"r");
    if(!file)  {
        printf("File is not found");
        return 1;
    }
    res = type(file);
    fclose(file);
    switch(res) {
        case 0:
        printf("Increase sequence");
        break;
        case 1:
        printf("Decrease sequence");
        break;
        case 2:
        printf("Constant sequence");
        break;
    }
    return 0;
}
 
int type(FILE *file) {
    int a, b, c, x, decr, inc, cnst;
    fscanf(file,"%d",&x);
    a=x;
    b=x;
    c=x;
    for(;fscanf(file,"%d",&x)==1; ) {
        if(b>x) {
            decr++;
            b=x;
            printf("%d\n",b);
        }
        if(a<x) {
            inc++;
            a=x;
            printf("%d\n",a);
        }
        if(c==x) {
            cnst++;
        }
        printf("Inc=%d, dec=%d, cns=%d\n",inc,decr,cnst);
    }
    if(inc>decr && inc>cnst) return 0;
    if(decr>inc && decr>cnst) return 1;
    if(cnst>decr && cnst>inc) return 2;
}
При проверке принтом в цикле выдает непонятно откуда взявшуюся цифру.
Соответственно и ответ неправельный.

Если есть идеи решения проблемы буду благодарен)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.02.2020, 20:17
Ответы с готовыми решениями:

Определение вещественного числа и определение типа
Определить, является ли вводимая строка вещественным числом с целой и дробной частью, и определить...

Определение типа последовательности
Ввести последовательность чисел A размерности N. Определить к какому типу относится исходная...

Определение типа!
У меня такой вопрос. Как можно узнать какой тип вводится? Например так: int a; int b; cout &lt;&lt;...

Определение типа окна
Добрый день! А подскажите пжалста, перебираю контролы чужого окна и мне надо выбрать только поля...

3
Мозгоправ
1739 / 1033 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
05.02.2020, 21:05 2
IvanK1331, в функции type() вы написали фигню-с: начиная с использования неинициализированных переменных и заканчивая логикой.

Попробуйте это:
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <stdio.h>
#include <stdlib.h>
 
int type(FILE *file);
 
int main(int argc, char *argv[]) {
    char filename[256];
    int res;
    FILE *file;
    printf("Enter filename ->  ");
    scanf("%s", filename);
    file = fopen(filename, "r");
    if (!file) {
        printf("File is not found");
        return 1;
    }
    res = type(file);
    fclose(file);
    switch (res) {
        case 0:
            printf("Increase sequence\n");
            break;
        case 1:
            printf("Decrease sequence\n");
            break;
        case 2:
            printf("Constant sequence\n");
            break;
        case 3:
            printf("Mixed sequence\n");
            break;
        default:
            printf("Shit happend ((\n");
    }
    return 0;
}
 
int type(FILE *file) {
    int x, prev, type = -1;
    if (fscanf(file, "%d", &prev) != 1)
        return type;
    for (; fscanf(file, "%d", &x) == 1; ) {
        if (type == -1) {
            // по первым двум числам определили предположительный тип последовательности
            if (prev < x)
                type = 0;
            else if (prev > x)
                type = 1;
            else  // prev == x
                type = 2;
        }
        else {
            // проверяем нарушится ли тип последовательности
            if (type == 0 && !(prev < x) ||
                type == 1 && !(prev > x) ||
                type == 2 && !(prev == x)) {
                type = 3;
                break;
            }
        }
        prev = x;
    }
    return type;
}
1
0 / 0 / 0
Регистрация: 05.02.2020
Сообщений: 20
06.02.2020, 22:36  [ТС] 3
Спасибо за помощь, но мне просто интересно почему при выводе на экран программа выдаёт неправельное значение.
0
Мозгоправ
1739 / 1033 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
06.02.2020, 23:28 4
Цитата Сообщение от IvanK1331 Посмотреть сообщение
но мне просто интересно почему при выводе на экран программа выдаёт неправельное значение.
Я вам уже ответил на этот вопрос в предыдущем посте. Почитайте внимательно.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.02.2020, 23:28
Помогаю со студенческими работами здесь

Определение типа файла
Дано задание :Запрос и ввод имени файла в текущем каталоге и вывод сообщения о типе файла. и...

Определение типа - наследника
Здравствуйте! Проблема в следующем: контейнер хранить любого наследника некоторого базового...

Определение типа процессора
выводит полно ошибок в компиляторе #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include...

Определение типа файла
Помогите, пожалуйста, с программой. 11. Запрос и ввод имени файла (задается полный путь) и его...


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

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

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