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

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

15.06.2011, 19:01. Просмотров 546. Ответов 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
Ответы с готовыми решениями:

Найти произведение самых длинных последовательностей отрицательных чисел каждой строки матрицы
Всю голову сломал этой задачей:Составить программу, которая находит в каждой...

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

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

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

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

7
kravam
быдлокодер
1709 / 896 / 105
Регистрация: 04.06.2008
Сообщений: 5,531
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
1867 / 1483 / 751
Регистрация: 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
918 / 743 / 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
быдлокодер
1709 / 896 / 105
Регистрация: 04.06.2008
Сообщений: 5,531
17.06.2011, 16:40 6
Начнём с того, что этот цикл вечен, он никогда не кончается, почему не знаю, исправляй.
C++
1
2
while(ftell(fp)!=x++)
{fputc(r,fp1);}
0
KrotZaDroT
0 / 0 / 0
Регистрация: 18.04.2014
Сообщений: 26
13.05.2014, 22:42 7
Цитата Сообщение от igorrr37 Посмотреть сообщение
FILE* f=fopen("1.txt", "r+");
такой вопрос. что значит r+?
0
alsav22
5442 / 4837 / 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

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

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

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


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

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

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