Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 24.03.2013
Сообщений: 53
1

Убрать из текста нули

26.04.2013, 02:59. Просмотров 793. Ответов 4
Метки нет (Все метки)

Доброе утро, прошу помощи с работой над текстом.
Дан текстовый файл, в котором нужно из всех чисел убрать начальные нули кроме последнего если за ним стоит точка.
Проверку необходимости убрать 0 делаю так: Если в тексте нашел 0, то смотрю что стоит перед ним, если перед ним не цифра и не точка, то смотрю что после него, если это не точка, то заменяю 0 на пробел. На выходе получаю просто 0 вместо отредактированного текста. Где косяк?
C++
1
2
3
4
5
6
for(k=0;k<i;k++)
        for (j=0;j<80;j++)
            if (str[k][j]=='0')
                if ((str[k][j-1]!='0')&&(str[k][j-1]!='1')&&(str[k][j-1]!='2')&&(str[k][j-1]!='3')&&(str[k][j-1]!='4')&&
                    (str[k][j-1]!='5')&&(str[k][j-1]!='6')&&(str[k][j-1]!='7')&&(str[k][j-1]!='8')&&(str[k][j-1]!='9')&&(str[k][j-1]!='.'))
                    if (str[k][j+1]!='.') str[k][j]=' ';
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.04.2013, 02:59
Ответы с готовыми решениями:

Как убрать нули
Есть массив, вывожу задом-наперед, так как не знаю сколько именно чисел введет пользователь - делаю...

Убрать нули после запятой
Ребят помоги убрать ноли после запятой. Если введу 0,3000000000000000000000000000000000000000 то он...

Как убрать лишние нули?
Как убрать лишние нули? void Gaus::outPut_AB() { for (int i = 0; i &lt; n; i++) {...

Убрать незначащие нули из строки
Добрый день. Есть строка,формата (x-3)(x-4)(x+3.0000)(x+3.250) (Количество скобок может...

4
93 / 745 / 279
Регистрация: 11.04.2012
Сообщений: 971
26.04.2013, 07:43 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
#include <stdio.h>
#include <conio.h>
 
int main(int argc, char* argv[])
{
    FILE* fp = NULL; char filename[] = "d:\\input.txt";
    if ((fp = fopen(filename, "r")) == NULL)
    {
        printf("Unable to open file for reading %s\n",filename);
        return 1;
    }
 
    fseek (fp , 0 , SEEK_END);
    int _size = ftell (fp); rewind (fp);
 
    int t = 0;
    char *str = new char[_size], ch = '\0';
    while ((ch = fgetc(fp)) != EOF) str[t++] = ch;
 
    str[t] = '\0';
 
    fclose(fp);
 
    for (int i = 0; str[i] != '\0'; i++)
        if (str[i] == '0' && str[i+1] != '.')
            for (int n = i; str[n] != '\0'; n++)
                str[n] = str[n+1];
 
    if ((fp = fopen(filename, "w")) == NULL)
    {
        printf("Unable to open file for writing %s\n",filename);
        return 1;
    }
 
    fprintf(fp,"%s\n",str);
    fclose(fp);
 
 
    return 0;
}
input.txt:
this is a go0d c++ c0de sampl0.
output:
this is a god c++ cde sampl0.
1
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 47
26.04.2013, 08:30 3
Я бы считывал(всё кроме 0) и записывал бы в другой файл. Или считал бы в массив, исключил бы нули обычным условием и записал снова.
0
2818 / 1628 / 252
Регистрация: 03.12.2007
Сообщений: 4,223
26.04.2013, 12:32 4
Цитата Сообщение от zitxbit Посмотреть сообщение
input.txt:
this is a go0d c++ c0de sampl0.
output:
this is a god c++ cde sampl0.
Мне что-то кажется, что тут все нули были начальные...
0
0 / 0 / 0
Регистрация: 24.03.2013
Сообщений: 53
26.04.2013, 19:05  [ТС] 5
Цитата Сообщение от zitxbit Посмотреть сообщение
input.txt:
this is a go0d c++ c0de sampl0.
output:
this is a god c++ cde sampl0.
Извините, но речь не об этих нулях. программа должна переводить строку:
Str with numbers 1750 00.25 02500
в строку:
Str with numbers 1750 0.25 2500

По ходу отладки выяснилось что моя логика верна и предложенный в самом начале алгоритм правильно работает и убирает только нужные нули, проблема с выводом появлялась из-за ошибки в последующем коде. Всем спасибо, программа отлажена. Первоначальный алгоритм правильный.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.04.2013, 19:05

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Убрать лидирующие нули из даты
Доброе время суток. Столкнулся с проблемой при вводе даты Пример: 31.12.2013 23:59:59...

Убрать незначащие нули из double
Добрый день, как убрать незначащие нули из переменной типа double? Проблема в том, что результатом...

Убрать из строкового выражения незначащие нули
Добрый день.Нужно написать функцию,которая на вход получает строку формата (x-1,000000/7) (скобок...

Как убрать незначащие нули из вещественного числа?
Помогите пожалуйста! Есть число double value == 12 650 320. 250 000 Как убрать 0 после...


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

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

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