Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
mx_sagat
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 100
#1

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

11.01.2014, 12:38. Просмотров 355. Ответов 12
Метки нет (Все метки)

есть программа
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); }; }
выдаёт ошибки подскажите что не так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2014, 12:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск последовательности чисел (исправить код) (C++):

Исправить код линейный список из входной последовательности чисел - C++
Буду благодарен, за помощь. #include "stdafx.h" #include <iostream> #define use_SRT_SECURE_NO_WARRNINGS using namespace std;...

Исправить код. Поиск наибольшего слова в строке - C++
Ребят, помогите разобраться в этом го*нокоде. В частности функция Search. Программа должна считывать текст из файла в строку, искать...

Исправить код умножения чисел! - C++
Всем привет, написал итерацию умножения чисел. В отвте ничего не выдает. Помогите исправить #include <iostream> #include...

Вывести максимальное число из n заданных чисел (исправить код) - C++
Моя первая программа на C++. Написать программу, которая выводит максимальное число из n заданных чисел. В первой строке входа дано число...

Задача на поиск делителей последовательности чисел с использованием функции - C++
Вводится последовательность целых чисел, 0 – конец последовательности. Для каждого числа последовательности найти количество его делителей...

Отсортировать столбцы в массиве по уменьшению сумм четных чисел. Сортировка выбором. Исправить код - C++
Задача: Задать двумерный массив целых чисел m=5, n=6. Отсортировать столбцы в массиве по упаданию сум парных чисел. Сортировка выбором....

12
xtorne21st
интересующийся
304 / 275 / 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);
}
0
mx_sagat
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 100
11.01.2014, 19:36  [ТС] #3
xtorne21st, она не совсем как надо работает.
во второй файл ничего не записывает.
в общих чертах она должна скопировать саму большую числовую последовательность в другой файл.
а по твоему коду это не совсем так.
но всё равно спасибо))
0
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
11.01.2014, 19:38 #4
mx_sagat, я лишь только мог догадываться что должна делать твоя программа...
0
mx_sagat
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 100
11.01.2014, 19:45  [ТС] #5
я извиняюсь)
прост на быструю руку написал тогда)
если сможешь помоги пожалуйста бо мне надо её сделать как можно быстрее)) а я с файлами плохо знать.
0
xtorne21st
интересующийся
304 / 275 / 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);
}
0
mx_sagat
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 100
11.01.2014, 20:28  [ТС] #7
что-то не срабатывает.
не копирует во второй файл.
но всё равно спасибо))
0
xtorne21st
интересующийся
304 / 275 / 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
0
mx_sagat
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 100
11.01.2014, 20:41  [ТС] #9
да заработала

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

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

Добавлено через 40 секунд
может бы ты скинул свою прогу в архиве?
0
xtorne21st
интересующийся
304 / 275 / 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');
}
0
mx_sagat
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 100
11.01.2014, 22:56  [ТС] #11
все время ошибки когда в начале не цифра а символ
а то что я делаю это на вижуле ничего?
0
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
11.01.2014, 23:10 #12
mx_sagat, я понятия не имею, почему у тебя не работает как надо... У меня, например, компилятор gcc и всё вроде ОК.
0
mx_sagat
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 100
11.01.2014, 23:25  [ТС] #13
хорошо будем смотреть большое тебе спасибо
0
11.01.2014, 23:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2014, 23:25
Привет! Вот еще темы с ответами:

В заданной последовательности найти минимум из чисел lg(х), не используя массив (верно ли написан код?) - C++
#include&lt;conio.h&gt; #include&lt;stdlib.h&gt; #include&lt;math.h&gt; #include&lt;iostream&gt; #include&lt;stdlib.h&gt; #include&lt;conio.h&gt; using namespace...

Как спростить код ? рекурсия (ввести последовательность чисел (окончание ввода - 0) и вывести их вобратной последовательности) - C++
#include &lt;iostream&gt; using std::cout; using std::endl; using std::cin; const int n=100; int arr = {}; int i = 0; int count...

Поиск максимального числа среди введённых чисел. Проверить код - C++
Он должен делать следующее: пользователь вводит число, если оно меньше 8 то считается мат. выражения, если больше то поиск максимального...

Как улучшить следующий код программы? Поиск всех простых чисел до 1000 - C++
#include &lt;iostream&gt; #include &lt;cstring&gt; int main() { std::size_t size = 1000; bool *simpleArray = new bool (); ...


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

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

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