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

Как удалить лидирующие нули?

19.11.2011, 20:30. Просмотров 3007. Ответов 12
Метки нет (Все метки)

Программа разворачивает числа, нужно сделать так, что бы лидирующие нули после переворота убирались, не знаю как :

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
#include <iostream>
#include <cstring>
using namespace std;
 
int main() {
    char buf[80];
    while(cout<<"\nwrite string: ",cin.getline(buf,80)) {
    char *p=buf,tmp;
    char *q=p;
    while( (q+=(strcspn(p," \t")-1))&&*p!='\0') {
    int l=strcspn(p," \t");                     
    for(int i=0;i<(l/2);i++){
        tmp=*p;
        *p=*q;
        *q=tmp;
        p++;q--;
}
    p+=strspn(p+=strcspn(p," \t")," \t");                  
    q=p;} 
                                   
    cout<<buf;}
    system("PAUSE");
    
return 0;}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2011, 20:30
Ответы с готовыми решениями:

Удалить нули из массива! Как удалить нули?но чтобы рисунок остался!
#include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; int main()...

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

Удалить из массива целых чисел все нули
Пожалуйста, помогите решить задачу.Удалить из массива целых чисел все нули....

Удалить из каждой группы идущих подряд цифр нули
удалить из каждой группы идущих подряд цифр нули

Удалить все строки матрицы, которые содержат нули
Дана квадратная матрица целых числе N*N(N-константа), заданная случайным...

12
alkagolik
Заблокирован
20.11.2011, 00:52 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
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
#include <string.h>
 
int main()
{
    char *str = "000000123456";
    char *str1, tmp;
 
    while( *str == '0' )
        ++str;
 
    printf("строка str = %s\n", str);
    tmp = strlen(str);
 
    str1 = malloc(tmp + 1);
    if ( !str1 )
        exit ( -1 );
 
    strcpy(str1, str);
    printf("строка str1 = %s", str1);
 
    return 0;
}
1
3xter
0 / 0 / 0
Регистрация: 28.09.2011
Сообщений: 34
20.11.2011, 23:19  [ТС] 3
а для с++? не могу из С в с++ перевести...
0
alkagolik
Заблокирован
20.11.2011, 23:23 4
3xter, у вас в программе подключен cstring, он содержит в себе эти функции.
тырц
0
Dani
1393 / 637 / 134
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
Завершенные тесты: 1
20.11.2011, 23:39 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
 
int main()
{
    std:: string s;
    char s1[50];
    std:: cin >> s;
    int kol=0;
    while (s[kol]=='0' && kol<s.size()-1) kol++;
    s.copy (s1,s.size()-kol,kol);
    s1[s.size()-kol]='\0';
    std:: cout << s1 << "\n";
    system ("pause");
    return 0;
}
0
rangerx
1942 / 1551 / 478
Регистрация: 31.05.2009
Сообщений: 2,913
20.11.2011, 23:59 6
C++
1
2
3
4
5
char* p = buf;
while(*p == '0') ++p;
 
if(p != buf)
    std::memmove(buf, p, std::strlen(p) + 1);
0
Dani
1393 / 637 / 134
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
Завершенные тесты: 1
21.11.2011, 00:05 7
rangerx, а если 000000 ввести?
0
rangerx
1942 / 1551 / 478
Регистрация: 31.05.2009
Сообщений: 2,913
21.11.2011, 00:37 8
Dani, останется пустая строка(""), я полагаю )
0
Dani
1393 / 637 / 134
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
Завершенные тесты: 1
21.11.2011, 17:09 9
rangerx, поэтому надо 0 выводить
0
fasked
Эксперт С++
4982 / 2561 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
21.11.2011, 17:12 10
alkagolik, где память освобождается? malloc + strcpy = strdup.
0
alkagolik
Заблокирован
21.11.2011, 18:03 11
fasked, бывает.
0
rangerx
1942 / 1551 / 478
Регистрация: 31.05.2009
Сообщений: 2,913
21.11.2011, 19:22 12
Dani, ну, тогда как-то так
C++
1
2
if(p != buf)
    std::memmove(*p? buf : buf + 1, p, std::strlen(p) + 1);
0
МаксимМВ
C/C++
90 / 90 / 18
Регистрация: 01.07.2010
Сообщений: 281
21.11.2011, 20:11 13
На C++, не помеси C++ и Си:
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
#include <iostream>
#include <string>
#include <algorithm>
 
using namespace std;
 
bool func_true(char a, char b)
{
    return true;
}
 
class zero_deleter
{
private:
    bool b;
public:
    zero_deleter()
    {
        b = true;
    };
    bool operator () (char c)
    {
        if (b && c=='0')
            return true;
        else
            b = false;
        return false;
    }
};
 
int main(int argc, char **argv)
{
     cout << "Enter string: " << endl;
     string str;
     cin >> str;
     sort(str.begin(), str.end(), func_true);
     str.erase(remove_if(str.begin(), str.end(), zero_deleter()), str.end());
     cout << str << endl;
}
0
21.11.2011, 20:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2011, 20:11

Дан массив. Удалить из него нули и после каждого числа, оканчивающегося на 5, вставить 1
Задание: Дан массив. Удалить из него нули и после каждого числа,...

Удалить из каждой группы подряд идущих цифр все начальные незначащие нули
Всем доброго дня) я хз как делать эту задачу..помогите плиз..На Borland C for...

Одномерные массивы: Удалить из массива нули и после каждого числа, оканчивающегося на 5, вставить 1
Дан массив. Удалить из него нули и после каждого числа, оканчивающегося на 5,...


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

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

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