IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Выравнивание строки, Borland C++ 3.1
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 145
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +


Задание:
Разработать функцию, которая выполняет следующую обработку символьной строки: выровнять строку по левому краю до заданной длины. Запрещается пользоваться стандартными функциями библиотек С.
Или я сегодня сильно туплю, или причина в кривых руках, но не выходит ничего...

Код

int main()
{

char str1[80];
char str2[80];
int i;
int arr1[80];
int arr2[80];
int otstup;


i=0;
otstup=0;
cout << "VVedite stroku: " << "\n";
cin >> str1;


for (i=0; i<80; i++)
{
  arr1[i]=str1[i];
  }

cout <<"\n";

cout << "Vvedite otstup: ";
cin >> otstup;


for (i=0; i<otstup; i++)
{
  arr2[i]=' ';
  }

for (i=otstup; i<80; i++)
{
  arr2[i]=arr1[i-otstup];
  }

for (i=0; i<80; i++)
{
  str2[i]=arr2[i];
  }

cout << ("\n");
cout << ("\n");

cout << str2;

return 0;

}



--------------------
- Дорогие девушки! У вас сухая кожа? Редкие волосы? Проблемы с фигурой? Приходите к нам! У нас темно и мы пьяные.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Ты вот о таком:
#include <iostream.h>

int main()
{

char str1[80];
char str2[80];
int arr1[80];
int arr2[80];

int i = 0, otstup = 0;
cout << "VVedite stroku: " << "\n";

cin.getline(str1, 80);
for(i = 0; i < 80; i++) {
arr1[i] = str1[i];
}

cout << "\n";
cout << "Vvedite otstup: ";
cin >> otstup;

for(i = 0; i < otstup; i++) {
arr2[i] = ' ';
}
for(; i < 80; i++) {
arr2[i] = arr1[i - otstup];
}

for(i = 0; i < 80; i++) {
str2[i]=arr2[i];
}

cout << ("\n");
cout << ("\n");

cout << str2;
return 0;

}


?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 145
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +


Так... Концепция изменилась... Согласен, затупил. Все гораздо проще, и без всяких наворотов ))



int main()
{

char str1[80];
int i;
int otstup;


i=0;
otstup=0;
cout << "VVedite stroku: ";
cin >> str1;

cout <<"\n";

cout << "Vvedite otstup: " << "\n";
cin >> otstup;

for (i=0; i<otstup; i++)
{
cout << " ";
}

cout << str1;


return 0;
}




Вот только одна проблема: почему строка выводится только до первого пробела?
И еще - как найти длину введенной строки, чтобы поставить проверку количества отступов?

Сообщение отредактировано: Jaxx -


--------------------
- Дорогие девушки! У вас сухая кожа? Редкие волосы? Проблемы с фигурой? Приходите к нам! У нас темно и мы пьяные.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Ты обратил внимание, КАК я вводил строку? Зачем вообще спрашивать, если на ответы не обращаешь внимания, и второй раз - на те же грабли?

То, что она у тебя выводится до первого пробела, происходит потому, что оператор ">>" вводит строку до первого пробела, а чтобы прочесть всю строку надо использовать getline
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 145
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +


Ну хорошо, это понял. А что с проверкой отступов? Есть функция strlen, но стандартными функциями мне нельзя пользоваться. Как сделать, чтобы строка не разрывалась


--------------------
- Дорогие девушки! У вас сухая кожа? Редкие волосы? Проблемы с фигурой? Приходите к нам! У нас темно и мы пьяные.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 30.09.2020 13:52
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name