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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 5.00
3xter
0 / 0 / 0
Регистрация: 28.09.2011
Сообщений: 34
#1

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

19.11.2011, 20:30. Просмотров 2434. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как удалить лидирующие нули? (C++):

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

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

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

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

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

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

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 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 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
1935 / 1544 / 141
Регистрация: 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 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
21.11.2011, 00:05 #7
rangerx, а если 000000 ввести?
0
rangerx
1935 / 1544 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
21.11.2011, 00:37 #8
Dani, останется пустая строка(""), я полагаю )
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
21.11.2011, 17:09 #9
rangerx, поэтому надо 0 выводить
0
fasked
Эксперт С++
4945 / 2525 / 180
Регистрация: 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
1935 / 1544 / 141
Регистрация: 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 / 5
Регистрация: 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
Привет! Вот еще темы с ответами:

Лидирующие минимумы - C++
Помогите, пожалуйста, решить задачу про &quot;Лидирующие минимумы&quot;: Есть матрица n*n(вводится с клавиатуры)найти ряд из n лидирующих...

Не вводится число, если есть лидирующие буквы - C++
Помоги найти ошибку,программа должна вычислять сумму чисел, читаемых из текстового файла. Имя файла задаётся с консоли.При написании чисел...

Реализовать функцию, удаляющую в строке лидирующие и концевые пробелы - C++
Удаляет в строке лидирующие и концевые пробелы. Возвращает указатель на преобразованную строку. Пишу впервые на С++ #include &quot;stdafx.h&quot;...

Написать функцию, удаляющую лидирующие и заключительные пробелы и символы табуляции - C++
Написать функцию, удаляющую лидирующие и заключительные пробелы и символы табуляции.


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

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

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