Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 31.12.2020
Сообщений: 14
1

Что посоветуете?

21.01.2021, 14:40. Показов 374. Ответов 6

Author24 — интернет-сервис помощи студентам
Здравствуйте, есть задание "Выровнять строку по середине до указанной ширины, дополнив с лева и с права пробелами."
Выровнять строку до указанной ширины с помощью к примеру, string s(5,h);//hhhhh , затем искусственно с помощью конкатенации с лева и с права дополнить пробелами можно. string s2(10," " ); и string s3(10," ");
string s4=s2+s1+s3;
cout<<s4<<endl;
Длину строки узнаю с помощью s1.size();
Но как мне сроку поставить точно по середине строчки в консоли. Empty() покажет что строка пустая и всё. Через char задавать массив вручную, но в полном раскрытом дисплее длина строки одно а в окне другая. Сам вопрос состоит в чем, есть ли метод определения длины пустой строки, или выставления набранной вручную строки getline(cin,s1); посредине строчки в косоли?
И ещё просьба, сильно не ругаться за незнание может элементарных вещей, я поэтому и нахожусь в разделе С++ ДЛЯ НАЧИНАЮЩИХ. А поорать и поглумиться за незнание, поверте есть кому!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.01.2021, 14:40
Ответы с готовыми решениями:

Что не правильно в коде, что посоветуете дописать
Дано задание (Ввести натуральное число N и последовательность действительных чисел Y1, , …,Yn ...

Что посоветуете написать?
Заканчиваю читать книгу о C++, после неё начну изучать алгоритмы. Чтобы закрепить мои скромные...

Что посоветуете для начинающего программиста
Что посоветуете для начинающего программиста (книгу, сайт, видео-урок).

что посоветуете для построения графических блоксхем???
что посоветуете для построения графических блоксхем???Может есть какая удобная прога, типо...

6
Заблокирован
21.01.2021, 14:51 2
C++
1
2
3
4
5
6
7
8
9
10
11
// Центрирование строки относительно ширины поля для её вывода.
// Возвращает количество символов - смещение влево первого символа строки,
// чтобы при выводе строка оказалась в середине поля для её вывода
char CenterString(string S, char Width)
{
  int L = strlen(S);
  if (L >= Width) // Если строка по длине равна или больше области вывода
    return 0;
  else
    return (Width - L) / 2;
}
0
18840 / 9839 / 2408
Регистрация: 30.01.2014
Сообщений: 17,280
21.01.2021, 14:53 3
roldugin, std::setw используйте (include <iomanip>). Заодно и пробелами ничего добивать не надо.

Допустим ширина консоли 80 символов, тогда
C++
1
2
3
4
5
const size_t conw = 80;
 
std::string s = "test text";
 
std::cout << std::setw((conw - s.size()) / 2) << s << std::endl;
0
0 / 0 / 0
Регистрация: 31.12.2020
Сообщений: 14
22.01.2021, 13:54  [ТС] 4
А вот подскажите char CenterString(string S, char Width) Width-это переменная которая задаёт длину элементов массива вместе с строкой string и пробелами и прочими элементами? Или что это? В отладчике пишет как неиницилезированная переменная.
0
1709 / 1109 / 337
Регистрация: 25.01.2019
Сообщений: 2,910
22.01.2021, 14:31 5
Цитата Сообщение от roldugin Посмотреть сообщение
есть ли метод определения длины пустой строки,
у тебя виндва?
Так попробуй:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <Windows.h>
 
int main() 
{
    CONSOLE_SCREEN_BUFFER_INFO buff;
    HANDLE cons = GetStdHandle(STD_OUTPUT_HANDLE);   
    GetConsoleScreenBufferInfo(cons, &buff);
 
    int w = buff.dwSize.X;
 
    std::cout << "console width: " << w;
 
    return 0;
}
0
Заблокирован
22.01.2021, 14:38 6
Цитата Сообщение от roldugin Посмотреть сообщение
А вот подскажите
Ну, во-первых, string тут - это:
C++
1
typedef char* string;
Цитата Сообщение от roldugin Посмотреть сообщение
Width-это переменная которая задаёт длину элементов массива вместе с строкой string и пробелами и прочими элементами? Или что это? В отладчике пишет как неиницилезированная переменная.
Width - это параметр функции. Он задаёт ширину поля в символах, относительно которого центрировать текст.
Если ширина поля, например, равна 15, а строка = "abcde", то функция вернёт 5.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <string.h>
 
// Центрирование строки относительно ширины поля для её вывода.
// Возвращает количество символов - смещение влево первого символа строки,
// чтобы при выводе строка оказалась в середине поля для её вывода
char CenterString(char* S, char Width)
{
  int L = strlen(S);
  if (L >= Width) // Если строка по длине равна или больше области вывода
    return 0;
  else
    return (Width - L) / 2;
}
 
int main()
{
  printf("# %d", CenterString("abcde", 15));
  return 0;
}
0
0 / 0 / 0
Регистрация: 31.12.2020
Сообщений: 14
22.01.2021, 14:43  [ТС] 7
Спасибо большое за разъяснения, буду составлять код.
0
22.01.2021, 14:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.01.2021, 14:43
Помогаю со студенческими работами здесь

Написал игру 2048 что посоветуете глядя на код ?
Я начинающий, еще многого не знаю, какие будут рекомендации в плане что мне следует изучить или по...

Решил изучить новую низкоуровневую область в программировании, что посоветуете?
Решил на досуге начинать изучать что - то новое для повышения так сказать образованности :)...

“Герберт Шилдт: С++ базовый курс” или “Стивен Прата” или что посоветуете Вы начинающему?
Изучаю с++ около 5 месяцев. До книги, увы руки не доходили, из-за отсутствия времени. Помниться...

какой компилятор посоветуете
Сел изучать С по книге Б.Керниган и Д.Ритчи &quot;Язык прогр. Си&quot;, програмные примеры в книге описаны на...

Какую книгу по С++ посоветуете
Я уже посмотрел различные статьи и видео уроки на с++, хочу двигаться дальше знаю делать ...

Какие книги посоветуете?
Что посоветуете для изучения языка? Я пока только начинающий


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru