• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Работа со строками

  • Автор темы LorD64Rus
  • Дата начала
L

LorD64Rus

Дана задача​
Дана строка символов. Заменить в ней все точки на запятые. Определить длину введенной строки.
Нужно написать на код блоксе,предпоследняя лабораторка до зачёта.Заранее благодарю
 
I

ierofant

Code::Blocks это не язык, а среда разработки. Которая поддерживает языки С, С++ и D. На каком языке должна быть программа?
 
L

LorD64Rus

Код:
#include <iostream>
#include <string.h>

using namespace std;

int main()
{
char S[] = "8,G,4,12,0,A,M";
bool flag = true;
cout << "dlinna stroki = " << strlen (S) << endl;
for (int i=0; i<strlen (S); i++)

break;

return 0;
}

Это решение количества элементов в строке (Не факт что верное),а как заменить запятые на точки?
 
I

ierofant

Это код через стандартные строки С++. Раз ты сказал, что программа на C++, то я их использую, а не C-строки.
C++:
#include <iostream>
#include <string>

int main ()
{
std::string str;
std::cout << "Введите строку: " << std::endl;
std::getline (std::cin, str);

for (int pos = str.find ('.'); pos != -1; pos = str.find ('.', pos)) str.replace (pos, 1, ",");

std::cout << "Отредактированная строка: " << std::endl << str << std::endl;
std::cout << "Длина строки: " << str.size () << std::endl;

return 0;
}
 
L

LorD64Rus

А можно так что бы не вводить изменённую строку самому,а что бы она сама вылезла в окне программы,и он ещё длинну строки 0 пишет при сборке.
 
I

ierofant

А можно так что бы не вводить изменённую строку самому,а что бы она сама вылезла в окне программы,и он ещё длинну строки 0 пишет при сборке.
Изменённая строка сама и выводится. Вы исходную строку-то вводите в начале, как запускаете программу или просто enter жмёте?
 
L

LorD64Rus

Код:
#include <iostream>
#include <string>

int main ()
{
std::string str;
std::cout << "1,5,9,8,7,1,2,3,6" << std::endl;
std::getline (std::cin, str);

for (int pos = str.find ('.'); pos != -1; pos = str.find ('.', pos)) str.replace (pos, 1, ",");

std::cout << "1.5.9.8.7.10.2.3.6" << std::endl << str << std::endl; // как нибудь без этой строки можно?
std::cout << "dlinna stroki =  " << str.size () << std::endl; // и во в этой строке что то не то,выводит что длинна строки равна нулю,хотя должно быть 17

return 0;
}

Программа компилируется но работает не верно.
 
I

ierofant

:facepalm: ;) :lol: Это в юмор! Вы мой код, который написан, без всяких своих изменений запустите! Там абсолютно ничего переписывать не надо!!!!
 
I

ierofant

Боже мой! Запустите код уже! Вы введёте её после запуска программы.
 
L

LorD64Rus

Большое спасибо)Разобрался во всём)Сорри за "недохождение" с 1 раза=)
 
R

Rififi

LorD64Rus

Заменить в ней все точки на запятые.

все намного проще...

std::string s = "1,2,3,4,5,6,7,8,9";
std::replace(s.begin(), s.end(), ',', '.');
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!