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

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

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

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

26.04.2013, 02:59. Просмотров 455. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2013, 02:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Убрать из текста нули (C++):

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

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

Убрать нули после запятой - C++
Ребят помоги убрать ноли после запятой. Если введу 0,3000000000000000000000000000000000000000 то он пишет что больше 16 символов, а нужно...

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

Перевод в шестнацатиричную систему счисления (убрать лишние нули) - C++
Помоги с задачкой пожалуйста. #include&lt;iostream&gt; using namespace std; void dtas(int num) { cout &lt;&lt; &quot;Число &quot; &lt;&lt; num &lt;&lt;...

Как убрать из одномерного массива нули, и всё последующие за нулями цифры сдвинуть? - C++
Как убрать из одномерного массива нули, и всё последующие за нулями цифры сдвинуть? Вот к примеру вышел массив:...

4
zitxbit
88 / 740 / 75
Регистрация: 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
Мишутка1
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 47
26.04.2013, 08:30 #3
Я бы считывал(всё кроме 0) и записывал бы в другой файл. Или считал бы в массив, исключил бы нули обычным условием и записал снова.
0
Somebody
2789 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
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
undestroyer
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2013, 19:05
Привет! Вот еще темы с ответами:

Убрать нули из матрицы - MathCAD
дана матрица и нужно рассчитать логарифм этой матрицы. но в матрице есть нули. можно ли как то убрать их,чтобы посчитать логарифм?

Убрать нули из массива - MathCAD
Есть массив мне нужно убрать нули из массива т.е. уменьшить размерность массива. Подскажите, как это сделать?

Убрать из переменной завершающие нули - PHP
Здравствуйте! Подскажите пожалуйста, у меня переменная $params выдаёт 100.00, как можно убрать &quot;.00&quot;? Оставить чисто 100 ...

Убрать нули спереди числа! - JavaScript
Всем привет такая проблемка есть число например 060 или 004 или 230 нужно проверять если у него спереди нули если есть то убирать пока не...


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

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

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