powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / вырезает число из строки после запятой
25 сообщений из 79, страница 3 из 4
вырезает число из строки после запятой
    #39967847
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
повышаем ставки: прочитаю все числа после всех запятых
...
Рейтинг: 0 / 0
вырезает число из строки после запятой
    #39967849
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab
Dimitry Sibiryakov,
повышаем ставки: прочитаю все числа после всех запятых

+1

Вот это по нашему. Генерализируем эту хрень.
...
Рейтинг: 0 / 0
вырезает число из строки после запятой
    #39967850
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabповышаем ставки: прочитаю все числа после всех запятых

Удваиваю: прочитаю все цифры после запятой вне зависимости от расстояния до неё.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
вырезает число из строки после запятой
    #39967851
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

читаем любые цифры после запятых
Код: plaintext
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 <stdio.h>
#include <string.h>
#include <ctype.h>

void numbercut(const char* s1, char* result)
//копируем число из строки после запятой в строку result
{
	short is_digit = 0;
	while(  *s1 != '\0' ) {
		if (*s1 == ',') {
			s1++;
			while(isdigit(*s1)) {
				is_digit = 1;
				*result = *s1;
				s1++;
				result++;
			}
			if ( is_digit ){
				*result = ' ';
				result++;
				continue;
			}
		}
		else
			s1++;
	}
	*result = '\0';
}

int main(int argc, char **argv) {
    char cut[100];
    char source[100]="abcd, no numbers,234 and here goes the number,100";
    numbercut(source, cut);

    printf("Source: %s\n", source);
    printf("Numbers: %s\n", cut);

    return 0 ;
}


...
Рейтинг: 0 / 0
вырезает число из строки после запятой
    #39967853
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
это не считается, потому что ТС это уже запрограммировал
...
Рейтинг: 0 / 0
вырезает число из строки после запятой
    #39967854
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В некоторой гипотетической грязно-хакерской вселенной эта задача решается просто перестановкой указателя.

Но мы с гневом отвергаем этот грязный трюк. Народу - нужна чистота и отсутствие сайд-эффектов.
Во име Брайана Кернингана... и Дениса Ивановича Ричи.
...
Рейтинг: 0 / 0
вырезает число из строки после запятой
    #39967857
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab+ читаем любые цифры после запятых
Слабота.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
void numbercut(const char* s1, char* result) //вырезает число из строки после запятой
{
   while((s1 = strchr(s1, ',') != NULL)
   {
      s1++;
      while (isdigit(*s1))
      {
         *result++ = *s1++;
      }
   }
   *result = '\0'; //маркируем конец строки.
}


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
вырезает число из строки после запятой
    #39967858
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Код: plaintext
1.
         *result++ = *s1++;



Хех... признайся кодил под PDP ?
...
Рейтинг: 0 / 0
вырезает число из строки после запятой
    #39967861
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonкодил под PDP ?

Естессно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
вырезает число из строки после запятой
    #39967863
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
compilation error: while((s1 = strchr(s1, ',')) != NULL)
...
Рейтинг: 0 / 0
вырезает число из строки после запятой
    #39967865
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

maytonкодил под PDP ?

Естессно.

Где же и когда это происходило?
...
Рейтинг: 0 / 0
вырезает число из строки после запятой
    #39967866
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabcompilation error

Значит надо исправить компилятор.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
вырезает число из строки после запятой
    #39967868
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

mini.weblabcompilation error

Значит надо исправить компилятор.

А зачем вы пользуетесь сломанным компилятором? У вас там ошибка же. :)
...
Рейтинг: 0 / 0
вырезает число из строки после запятой
    #39967870
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravУ вас там ошибка же. :)

У меня там ошибка, да. Но в строке, приведённой mini.weblab, этой ошибки нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
вырезает число из строки после запятой
    #39967873
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю свести задачу к 1 вызову strchr и 1 strcpy.
...
Рейтинг: 0 / 0
вырезает число из строки после запятой
    #39967874
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81
да, согласен . правильней вообще сделать numbercut с результатом в int и накапливать число поразрядно так и сделаю
Можно int. Можно более широкий тип + учесть знаковость/беззнаковость и при подсчете проверять на переполнение.
...
Рейтинг: 0 / 0
вырезает число из строки после запятой
    #39967886
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
int numbercut(char *source, char *str_result, int result[]);
source - исходная строка
str_result - строка, в которую копируются числа после запятой
result - массив из чисел после запятых

функция возвращает сумму чисел после запятых
...
Рейтинг: 0 / 0
вырезает число из строки после запятой
    #39967888
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот вам всем делать нечего. Вашу бы энергию да в мирное русло. Проект какой на кикстартере организовать, так ведь нет же.
...
Рейтинг: 0 / 0
вырезает число из строки после запятой
    #39967901
нате вот, развивайтесь
Код: plaintext
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.
# Функция               Пояснение
strlen(имя_строки)      определяет длину указанной строки, без учёта нуль-символа
// Копирование строк
strcpy(s1,s2)           выполняет побайтное копирование символов из строки  s2 в строку s1
strncpy(s1,s2, n)       выполняет побайтное копирование n символов из строки  s2 в строку s1. возвращает значения s1
// Конкатенация строк
strcat(s1,s2)           объединяет строку s2 со строкой s1. Результат сохраняется в s1
strncat(s1,s2,n)        объединяет n символов строки s2 со строкой s1. Результат сохраняется в s1
// Сравнение строк
strcmp(s1,s2)           сравнивает строку s1 со строкой s2 и возвращает результат типа int: 0 –если строки эквивалентны, >0 – если s1<s2,  <0  — если s1>s2 С учётом регистра
strncmp(s1,s2,n)        сравнивает n символов строки s1 со строкой s2 и возвращает результат типа int: 0 –если строки эквивалентны, >0 – если s1<s2,  <0  — если s1>s2 С учётом регистра
stricmp(s1,s2)          сравнивает строку s1 со строкой s2 и возвращает результат типа int: 0 –если строки эквивалентны, >0 – если s1<s2,  <0  — если s1>s2 Без учёта регистра
strnicmp(s1,s2,n)       сравнивает n символов строки s1 со строкой s2 и возвращает результат типа int: 0 –если строки эквивалентны, >0 – если s1<s2,  <0 — если s1>s2 Без учёта регистра
// Обработка символов
isalnum(c)              возвращает значение true, если с является буквой или цифрой, и false в других случаях
isalpha(c)              возвращает значение true, если с является буквой, и false в других случаях
isdigit(c)              возвращает значение true, если с является цифрой, и false в других случаях
islower(c)              возвращает значение true, если с является буквой нижнего регистра, и false в других случаях
isupper(c)              возвращает значение true, если с является буквой верхнего регистра, и false в других случаях
isspace(c)              возвращает значение true, если с является пробелом, и false в других случаях
toupper(c)              если символ с, является символом нижнего регистра, то функция возвращает преобразованный символ с в верхнем регистре, иначе символ возвращается без изменений.
// Функции поиска
strchr(s,c)             поиск 1-го вхождения символа с в строке s. В случае удачного поиска возвращает *ptr на место 1-го вхождения символа с. Если символ не найден, то возвращается 0.
strcspn(s1,s2)          определяет длину начального сегмента строки s1, содержащего те символы, которые не входят в строку s2
strspn(s1,s2)           возвращает длину начального сегмента строки s1, содержащего только те символы, которые входят в строку s2
strprbk(s1,s2)          Возвращает указатель  первого вхождения любого символа строки s2 в строке s1
// Функции преобразования
atof(s1)                преобразует строку s1 в тип double
atoi(s1)                преобразует строку s1 в тип int
atol(s1)                преобразует строку s1 в тип long int
// Функции стандартной библиотеки ввода/вывода <stdio>
getchar(с)              считывает символ с со стандартного потока ввода, возвращает символ в формате int
gets(s)                 считывает поток символов со стандартного устройства ввода в строку s до тех пор, пока не будет нажата клавиша ENTER
...
Рейтинг: 0 / 0
вырезает число из строки после запятой
    #39967904
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

andron81и мне казалось, что даже после result++
тоже result,6 должен выглядеть как "1\0\0\0\0\0"

Это тебе казалось. Сделай уже как рекомендуется всем начинающим: выполни программу
самостоятельно, используя мозг вместо процессора и бумажку с ручкой вместо ОЗУ.


я понял . я все же не донимал как работает арифметика указателей.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
void test(const char* s1)
{
    printf("%c\n", s1[0]); //a
    printf("%c\n", s1[1]); //b
    printf("%c\n", s1[2]); //c
    s1++;
    printf("%c\n", s1[0]); //b
    printf("%c\n", s1[1]); //c
    printf("%c\n", s1[2]); //d
    s1++;


}
int main() {
    char source[100] = "abcd,100";
    test(source);
}



то есть изначально
s1[0] = 'a'
s1[1])= 'b'
s1[2]) ='c'

а после s1++ уже имеем
s1[0] = 'b'
s1[1])= 'c'
s1[2]) ='d'
...
Рейтинг: 0 / 0
вырезает число из строки после запятой
    #39967908
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
код действительно рабочий. но я не допонимал кое-какие ньюансы.
теперь пробелы удалил.
...
Рейтинг: 0 / 0
вырезает число из строки после запятой
    #39967916
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Dimitry Sibiryakov

Код: plaintext
1.
         *result++ = *s1++;



Хех... признайся кодил под PDP ?
Неужели mov (r1)+,(r2)+?
...
Рейтинг: 0 / 0
вырезает число из строки после запятой
    #39967951
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думал из топика выйдет koan.
...
Рейтинг: 0 / 0
вырезает число из строки после запятой
    #39967967
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я думал из топика выйдет koan.

Я погуглил это слово, но всё равно не понял, что вы имели в виду. :)
...
Рейтинг: 0 / 0
вырезает число из строки после запятой
    #39967974
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton
Я думал из топика выйдет koan.

Я погуглил это слово, но всё равно не понял, что вы имели в виду. :)

Вы были когда нибудь на языковых курсах? Из семейства ruby, python, scala, e.t.c.

Вобщем из этого семейства.
...
Рейтинг: 0 / 0
25 сообщений из 79, страница 3 из 4
Форумы / C++ [игнор отключен] [закрыт для гостей] / вырезает число из строки после запятой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]