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

В файле найти первую из самых длинных последовательностей соседних символов, состоящую только из цифр - C++

15.06.2011, 19:01. Просмотров 538. Ответов 7
Метки нет (Все метки)

Посмотрите что не так с моей задачей
В существующем на диске файле найти первую из самых длинных последовательностей соседних символов, состоящую только из цифр. Заменить все символы этой последовательности на «*». (Файл создать с помощью текстового редактора)
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
#include<math.h>
#include<iostream.h>
#include<string.h>
#include<conio.h>
#include<stdio.h>
main()
{FILE*fp;
fp=fopen("c:\\SETEVOE\\1txt.txt","r+");
if(fp!=NULL)
{char str[256],ch;
int k=0,p=0,x;
while(!feof(fp))
{fgets(str,256,fp);
puts(str);}
fseek(fp,0,SEEK_SET);
while(!feof(fp))
{ch=fgetc(fp);
if(ch>='0'&&ch<='9')
{k++;}
else
{if(k>p)
p=k;
k=0;
x=ftell(fp);
}}cout<<"Naibolshay posledovatelnost "<<p<<" cifr"<<x;
FILE*fp1;
fp1=fopen("c:\\SETEVOE\\temp.txt","w+");
fseek(fp,0,SEEK_SET);
while(!feof(fp))
{int ch=fgetc(fp);
if(ftell(fp)!=(x-p))
{fputc(ch,fp1);}
else
{char r='*';
while(ftell(fp)!=x++)
{fputc(r,fp1);}
fseek(fp,x++,SEEK_SET);}}}
else
printf("Oshibka");
getch();
}

http://www.cyberforum.ru/cpp-beginners/thread1706357.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2011, 19:01
Я подобрал для вас темы с готовыми решениями и ответами на вопрос В файле найти первую из самых длинных последовательностей соседних символов, состоящую только из цифр (C++):

Найти 50 самых длинных слов в файле
Здравствуйте! Буду благодарна за помощь) Нужно в большом файле с текстом...

Строки: найти первое из самых длинных и последнее из самых коротких слов и поменять их местами
Помогите написать прогу) 1. Строка состоит не менее чем из двух слов....

Поиск самых длинных и комбинированных слов в файле
Здравствуйте. У меня есть такая задача: 1. Найти 2 самых длинных...

Вывести 10 самых длинных (по числу символов) предложений
Ребят программисты помогите, понимаю что программа легкая. Но не могу сделать....

Найти 5 самых длинных слов
Как найти 5 самых длинных слов? #include &quot;stdafx.h&quot; #include &quot;windows.h&quot;...

7
kravam
быдлокодер
1706 / 893 / 105
Регистрация: 04.06.2008
Сообщений: 5,524
15.06.2011, 19:22 #2
Дай сюда файл, на котором программ не работает.
0
nalad4ik
0 / 0 / 1
Регистрация: 13.05.2011
Сообщений: 5
16.06.2011, 22:52  [ТС] #3
в блокноте любой текст
kodugdu 534253 fdsj
53256634g gfd
вот такой например текст
0
igorrr37
1863 / 1481 / 749
Регистрация: 21.12.2010
Сообщений: 2,473
Записей в блоге: 11
17.06.2011, 01:32 #4
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
#include <stdio.h>
#include <ctype.h>
#include <string.h>
 
int IsAllDigits(char* a){
    for(; *a; ++a){
        if(!isdigit(*a)) return 0;
    }
    return 1;
}
 
int main (){
    FILE* f=fopen("1.txt", "r+");
    if(!f){perror("Error"); return -1;}
    char text[1024], tmp[128], *res, *a=text;
    int resSize=0;
    while(!feof(f)){
        a=fgets(a, sizeof(text), f)+strlen(a);
    }
    a=text;
    for(; *a; a+=strlen(tmp)){
        while(isspace(*a)) ++a;
        sscanf(a, "%s", tmp);
        if(IsAllDigits(tmp)&&strlen(tmp)>resSize){
            res=a;
            resSize=strlen(tmp);
        }
    }
    fwrite(res, 1, resSize, stdout);
    while(resSize--) *res++='*';
    rewind(f);
    fputs(text, f);
    fclose(f);
    return 0;
}
0
xAtom
917 / 742 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
17.06.2011, 09:28 #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
// функция по замене чисел на указаный символ
void  set_max_num(char*  str, const char  ch) {
         int  cnt = 0, pt = 0, pos = 0;
         for(int i = 0; *((str) + i) != '\0'; i++) {
        if( isdigit( *((str) + i) ) ) {
               pt++;
        if(pt > cnt) {
             cnt  = pt;
             pos  = i;
        }
        } else
              pt = 0;
        }
        for(int n = pos - cnt + 1; n <= pos; n++)
        *((str) + n) = ch;
}
 
void main() {
 
   FILE*  fp = fopen("X:\\test.txt", "r+");
   
   fseek(fp, 0L, SEEK_END);
   long     len = ftell(fp);
   fseek(fp, 0L, SEEK_SET);
   fpos_t pos;
   fgetpos(fp, &pos);
 
   char*  buff = (char*) malloc( (size_t) len );
   fread((void*) buff, (size_t) len, 1L, fp);
   buff[len - 1] = '\0';
    
   set_max_num(buff, '*' );  // изменить
 
   fsetpos(fp, &pos);
   fwrite((const void*)buff, strlen(buff), 1L, fp);
   fflush(fp);
   fclose(fp);
 
   if(buff)
          free(buff);
   buff = NULL;
}
0
kravam
быдлокодер
1706 / 893 / 105
Регистрация: 04.06.2008
Сообщений: 5,524
17.06.2011, 16:40 #6
Начнём с того, что этот цикл вечен, он никогда не кончается, почему не знаю, исправляй.
C++
1
2
while(ftell(fp)!=x++)
{fputc(r,fp1);}
0
KrotZaDroT
0 / 0 / 5
Регистрация: 18.04.2014
Сообщений: 26
13.05.2014, 22:42 #7
Цитата Сообщение от igorrr37 Посмотреть сообщение
FILE* f=fopen("1.txt", "r+");
такой вопрос. что значит r+?
0
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
14.05.2014, 01:08 #8
Цитата Сообщение от KrotZaDroT Посмотреть сообщение
что значит r+?
http://www.cplusplus.com/reference/cstdio/fopen/
0
14.05.2014, 01:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2014, 01:08
Привет! Вот еще темы с решениями:

В файле найти слова состоящие только из цифр
Дан текстовый файл. Написать функцию, которая проверяет, есть ли в нем слова,...

Сформировать новую строку, состоящую из символов цифр исходной строки
Вводится строка. Сформировать новую строку, состоящую из символов цифр исходной...

Обработка текстовых файлов. Вывести первую из самых коротких строк файла и последнюю из самых длинных
Дан текстовый файл f. Составить программу для вывода первой из самых коротких...

Найти одно из самых длинных слов в текстовом файле
Напишите программу, находящую одно из самых длинных слов в текстовом файле. Под...


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

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

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