0 / 0 / 0
Регистрация: 28.09.2011
Сообщений: 34
1

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

19.11.2011, 20:30. Показов 9558. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2011, 20:30
Ответы с готовыми решениями:

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

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

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

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

12
Заблокирован
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
0 / 0 / 0
Регистрация: 28.09.2011
Сообщений: 34
20.11.2011, 23:19  [ТС] 3
а для с++? не могу из С в с++ перевести...
0
Заблокирован
20.11.2011, 23:23 4
3xter, у вас в программе подключен cstring, он содержит в себе эти функции.
тырц
0
1404 / 646 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
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
2016 / 1615 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
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
1404 / 646 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
21.11.2011, 00:05 7
rangerx, а если 000000 ввести?
0
2016 / 1615 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
21.11.2011, 00:37 8
Dani, останется пустая строка(""), я полагаю )
0
1404 / 646 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
21.11.2011, 17:09 9
rangerx, поэтому надо 0 выводить
0
Эксперт С++
5032 / 2611 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
21.11.2011, 17:12 10
alkagolik, где память освобождается? malloc + strcpy = strdup.
0
Заблокирован
21.11.2011, 18:03 11
fasked, бывает.
0
2016 / 1615 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
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++
93 / 93 / 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.11.2011, 20:11
Помогаю со студенческими работами здесь

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru