Помощь - Поиск - Пользователи - Календарь
Полная версия: Выравнивание строки
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Jaxx
Задание:
Разработать функцию, которая выполняет следующую обработку символьной строки: выровнять строку по левому краю до заданной длины. Запрещается пользоваться стандартными функциями библиотек С.
Или я сегодня сильно туплю, или причина в кривых руках, но не выходит ничего...

Код

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;

}

volvo
Ты вот о таком:
#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;

}


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



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;
}




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

То, что она у тебя выводится до первого пробела, происходит потому, что оператор ">>" вводит строку до первого пробела, а чтобы прочесть всю строку надо использовать getline
Jaxx
Ну хорошо, это понял. А что с проверкой отступов? Есть функция strlen, но стандартными функциями мне нельзя пользоваться. Как сделать, чтобы строка не разрывалась
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.