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

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

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

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

15.06.2011, 19:01. Просмотров 507. Ответов 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();
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2011, 19:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В файле найти первую из самых длинных последовательностей соседних символов, состоящую только из цифр (C++):

Найти произведение самых длинных последовательностей отрицательных чисел каждой строки матрицы - C++
Всю голову сломал этой задачей:Составить программу, которая находит в каждой строке матрицы S(k,l), k≤12, l≤15, самую длинную...

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

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

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

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

Найти 5 самых длинных слов - C++
Как найти 5 самых длинных слов? #include &quot;stdafx.h&quot; #include &quot;windows.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;math.h&gt;...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,460
15.06.2011, 19:22 #2
Дай сюда файл, на котором программ не работает.
0
nalad4ik
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 5
16.06.2011, 22:52  [ТС] #3
в блокноте любой текст
kodugdu 534253 fdsj
53256634g gfd
вот такой например текст
0
igorrr37
1647 / 1275 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
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
915 / 740 / 60
Регистрация: 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
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,460
17.06.2011, 16:40 #6
Начнём с того, что этот цикл вечен, он никогда не кончается, почему не знаю, исправляй.
C++
1
2
while(ftell(fp)!=x++)
{fputc(r,fp1);}
0
KrotZaDroT
0 / 0 / 0
Регистрация: 18.04.2014
Сообщений: 22
13.05.2014, 22:42 #7
Цитата Сообщение от igorrr37 Посмотреть сообщение
FILE* f=fopen("1.txt", "r+");
такой вопрос. что значит r+?
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.05.2014, 01:08 #8
Цитата Сообщение от KrotZaDroT Посмотреть сообщение
что значит r+?
http://www.cplusplus.com/reference/cstdio/fopen/
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2014, 01:08
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
14.05.2014, 01:08
Ответ Создать тему
Опции темы

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