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

Поиск последовательности чисел (исправить код) - C++

Восстановить пароль Регистрация
 
mx_sagat
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 100
11.01.2014, 12:38     Поиск последовательности чисел (исправить код) #1
есть программа
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{ 
    FILE* f=fopen("in.txt","rb");              // открыть файл
    FILE* f1=fopen("out.txt","wb");  
 
    char c;                                   // читаемый символ
    int k=0;                                  // количество цифр
    int mk=0;                                 // макс кол цифр
    int x=0;                                  // наиб число
    while(!feof(f))
    { c=fgetc(f);
    switch (c) { 
        case '0'...'9': { ++k; fputc(c,f1); break; } 
                        default if (k>0) {if (k>mk) mk=k;  k=0; fputs('\n',f1); }; }
        
    }
    return 0;
    fclose(f1);
    fclose(f);
}
она вроде бы как законченная ток вот в части
C++
1
2
 case '0'...'9': { ++k; fputc(c,f1); break; } 
                        default if (k>0) {if (k>mk) mk=k;  k=0; fputs('\n',f1); }; }
выдаёт ошибки подскажите что не так?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2014, 12:38     Поиск последовательности чисел (исправить код)
Посмотрите здесь:

C++ Дано двумерный массив целых чисел. В каждом столбце найти сумму и количество чисел.(исправить)
Поиск максимальной последовательности в другой последовательности C++
C++ Задача на поиск делителей последовательности чисел с использованием функции
Вывести максимальное число из n заданных чисел (исправить код) C++
C++ Каждое простое число последовательности увеличить в два раза, посчитать количество простых чисел в исходной последовательности
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
11.01.2014, 13:04     Поиск последовательности чисел (исправить код) #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 <cctype>
 
int main(void)
{
    FILE* f = fopen("in.txt","rb");              // открыть файл
    FILE* f1 = fopen("out.txt","wb");
    char c;                                   // читаемый символ
    int k=0;                                  // количество цифр
    int mk=0;                                 // макс кол цифр
    int x=0;                                  // наиб число
 
    if (!f || !f1)
    {
        printf("%s\n", "Couldn't open file");
        return -1;
    }
 
    while(!feof(f))
    {
        c = fgetc(f);
 
        if (c > x)
            x = c;
 
        if (isdigit(c))
        {
            fputc(c,f1);
 
            ++k;
            if (!(k % mk))
            {
                fputc('\n', f1);
            }
        }
    }
 
    printf("Digits count = %d\n", k);
    printf("Max value = %d\n", x);
 
    fclose(f1);
    fclose(f);
}
mx_sagat
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 100
11.01.2014, 19:36  [ТС]     Поиск последовательности чисел (исправить код) #3
xtorne21st, она не совсем как надо работает.
во второй файл ничего не записывает.
в общих чертах она должна скопировать саму большую числовую последовательность в другой файл.
а по твоему коду это не совсем так.
но всё равно спасибо))
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
11.01.2014, 19:38     Поиск последовательности чисел (исправить код) #4
mx_sagat, я лишь только мог догадываться что должна делать твоя программа...
mx_sagat
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 100
11.01.2014, 19:45  [ТС]     Поиск последовательности чисел (исправить код) #5
я извиняюсь)
прост на быструю руку написал тогда)
если сможешь помоги пожалуйста бо мне надо её сделать как можно быстрее)) а я с файлами плохо знать.
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
11.01.2014, 20:23     Поиск последовательности чисел (исправить код) #6
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
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
 
#define GUESS_MAX_BUFFER_SIZE  4096
 
int main(void)
{
    FILE* in = fopen("in.txt","rb");
    FILE* out = fopen("out.txt","wb");
    char digitBufferFirst[GUESS_MAX_BUFFER_SIZE];
    char digitBufferSecond[GUESS_MAX_BUFFER_SIZE];
    int digitBufferFirstIndex;
    int max;
    char c;
 
    if (!in || !out)
    {
        printf("%s\n", "Couldn't open file");
        return -1;
    }
 
    digitBufferFirstIndex = 0;
    max = 0;
 
    c = fgetc(in);
    while (!feof(in))
    {
        if (isdigit(c))
        {
           digitBufferFirst[digitBufferFirstIndex] = c;
           ++digitBufferFirstIndex;
        }
        else
        {
            if (max < digitBufferFirstIndex)
            {
                max = digitBufferFirstIndex;
                memcpy(digitBufferSecond, digitBufferFirst, sizeof(char) * max);
            }
 
            digitBufferFirstIndex = 0;
        }
 
        c = fgetc(in);
    }
 
    fwrite(digitBufferSecond, sizeof(char), max, out);
    fclose(out);
    fclose(in);
 
    printf("Max sequence of digits = %d\n", max);
}
mx_sagat
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 100
11.01.2014, 20:28  [ТС]     Поиск последовательности чисел (исправить код) #7
что-то не срабатывает.
не копирует во второй файл.
но всё равно спасибо))
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
11.01.2014, 20:32     Поиск последовательности чисел (исправить код) #8
mx_sagat, у меня всё копирует...
положи файлы в папку с программой...

Добавлено через 1 минуту
in.txt:
Bash
1
2
3
4
5445a 45454554
454545 34 45454545
333
fdf099999999
out.txt:
Bash
1
099999999
mx_sagat
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 100
11.01.2014, 20:41  [ТС]     Поиск последовательности чисел (исправить код) #9
да заработала

Добавлено через 43 секунды
заместо девяток у мя скопировались 45454545
я твои значения вставлял

Добавлено через 1 минуту
похоже как будто из за первых букв он не считает числа)

Добавлено через 40 секунд
может бы ты скинул свою прогу в архиве?
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
11.01.2014, 22:02     Поиск последовательности чисел (исправить код) #10
mx_sagat, небольшая поправка...
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
65
66
67
68
69
70
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
 
#define GUESS_MAX_BUFFER_SIZE  4096
 
int main(void)
{
    const char* fileIn = "in.txt";
    const char* fileOut = "out.txt";
    FILE* in = NULL;
    FILE* out = NULL;
    char digitBufferFirst[GUESS_MAX_BUFFER_SIZE];
    char digitBufferSecond[GUESS_MAX_BUFFER_SIZE];
    int digitBufferFirstIndex;
    int max;
    char c;
 
    in = fopen(fileIn,"rb");
    if (!in)
    {
        printf("%s \"%s\"\n", "Couldn't open file", fileIn);
        return -1;
    }
 
    out = fopen(fileOut, "wb");
    if (!out)
    {
        printf("%s \"%s\"\n", "Couldn't open file", fileOut);
        return -1;
    }
 
    digitBufferFirstIndex = 0;
    max = 0;
 
    c = fgetc(in);
    while (!feof(in))
    {
        if (isdigit(c))
        {
           digitBufferFirst[digitBufferFirstIndex] = c;
           ++digitBufferFirstIndex;
        }
        else
        {
            if (max < digitBufferFirstIndex)
            {
                max = digitBufferFirstIndex;
                memcpy(digitBufferSecond, digitBufferFirst, sizeof(char) * max);
            }
 
            digitBufferFirstIndex = 0;
        }
 
        c = fgetc(in);
    }
 
    (digitBufferFirstIndex < max) ? fwrite(digitBufferSecond, sizeof(char), max, out)
                                 : fwrite(digitBufferFirst, sizeof(char), digitBufferFirstIndex, out);
 
    fclose(out);
    fclose(in);
 
    printf("Max sequence of digits = %d\n", (digitBufferFirstIndex < max)
           ? max : digitBufferFirstIndex);
    (digitBufferFirstIndex < max) ? fwrite(digitBufferSecond, sizeof(char), max, stdout)
                                  : fwrite(digitBufferFirst, sizeof(char), digitBufferFirstIndex, stdout);
    printf("%c", '\n');
}
mx_sagat
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 100
11.01.2014, 22:56  [ТС]     Поиск последовательности чисел (исправить код) #11
все время ошибки когда в начале не цифра а символ
а то что я делаю это на вижуле ничего?
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
11.01.2014, 23:10     Поиск последовательности чисел (исправить код) #12
mx_sagat, я понятия не имею, почему у тебя не работает как надо... У меня, например, компилятор gcc и всё вроде ОК.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2014, 23:25     Поиск последовательности чисел (исправить код)
Еще ссылки по теме:

Как спростить код ? рекурсия (ввести последовательность чисел (окончание ввода - 0) и вывести их вобратной последовательности) C++
C++ Поиск максимального числа среди введённых чисел. Проверить код
C++ Отсортировать столбцы в массиве по уменьшению сумм четных чисел. Сортировка выбором. Исправить код

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

Или воспользуйтесь поиском по форуму:
mx_sagat
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 100
11.01.2014, 23:25  [ТС]     Поиск последовательности чисел (исправить код) #13
хорошо будем смотреть большое тебе спасибо
Yandex
Объявления
11.01.2014, 23:25     Поиск последовательности чисел (исправить код)
Ответ Создать тему
Опции темы

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