Форум программистов, компьютерный форум CyberForum.ru

Решение задач C++ Р. Лафоре - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.62
Nicholas
 Аватар для Nicholas
0 / 0 / 0
Регистрация: 21.08.2012
Сообщений: 5
21.08.2012, 00:21     Решение задач C++ Р. Лафоре #1
Всем привет. нужна помощь в в решении 11 задачи 2 главы книги.
Уже все перепробовал, не могу найти друго решения как поставить подчеркивания после первой строки. В аттаче задание и мой солюшен, немного глупый, но другого я не придумал. все попытки сделать это более красиво ни к чему не привели. Пожалуйста, помогите в решении данной задачи, заранее благодарен.
Миниатюры
Решение задач C++ Р. Лафоре   Решение задач C++ Р. Лафоре  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
21.08.2012, 00:24     Решение задач C++ Р. Лафоре #2
Очень занятный вопрос. Изложи суть вопроса.
Nicholas
 Аватар для Nicholas
0 / 0 / 0
Регистрация: 21.08.2012
Сообщений: 5
21.08.2012, 00:33  [ТС]     Решение задач C++ Р. Лафоре #3
Привет, изложил, сорри что не сразу, эксплорил форум))

Добавлено через 4 минуты
Как я не пытался сделать нижнее подчеркивание, постоянно все сваливается. Решил вывести просто как строковую костанту. Но более чем уверен что это решение не верно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//assign.cpp
#include <iostream>
#include <iomanip>
using namespace std;
int main()
 
{
    setlocale (0, "Rus");
 
    cout<<setiosflags(ios::left) <<setw(15) << "Фамилия" << setw(15) << "Имя" << setw(15) << "Адрес" << setw(15) << "Город"<< endl;
    cout<<"..............................................................."<<endl;
    cout <<setiosflags (ios::left) <<setw(15) << "Петров" <<setw(15) << "Василий" << setw(15) <<"Кленовая 16" << setw(15) << "Санкт-Петербург"<<endl
    <<setw(15)<< "Иванов" <<setw(15) << "Сергей" << setw(15) <<"Осиновая 3" << setw(15) << "Находка"<<endl
    <<setw(15)<< "Сидоров" <<setw(15) << "Иван" << setw(15) <<"Березовая 21" << setw(15) << "Калининград"<<endl;
    
    return 0;
}
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
21.08.2012, 00:42     Решение задач C++ Р. Лафоре #4
У тебя вполне хороший вариант, просто ты используешь точки. Если как в книге надо ,то
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
    setlocale(0,"rus");
    char line[]="_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ";
    char line2[]="- - - - - - - - - - - - - - - - - - - - - - -";
    cout<<setiosflags(ios::left) <<setw(15) << "Фамилия" << setw(15) << "Имя" << setw(15) << "Адрес" << setw(15) << "Город"<< endl;
    //cout<<"..............................................................."<<endl;
    cout<<line<<endl<<endl;// нижнее подчеркивание
    cout<<line2<<endl;// через дефисы
    cout <<setiosflags (ios::left) <<setw(15) << "Петров" <<setw(15) << "Василий" << setw(15) <<"Кленовая 16" << setw(15) << "Санкт-Петербург"<<endl
    <<setw(15)<< "Иванов" <<setw(15) << "Сергей" << setw(15) <<"Осиновая 3" << setw(15) << "Находка"<<endl
    <<setw(15)<< "Сидоров" <<setw(15) << "Иван" << setw(15) <<"Березовая 21" << setw(15) << "Калининград"<<endl;
    
    getch();
    return 0;
}
Nicholas
 Аватар для Nicholas
0 / 0 / 0
Регистрация: 21.08.2012
Сообщений: 5
21.08.2012, 00:48  [ТС]     Решение задач C++ Р. Лафоре #5
Цитата Сообщение от Andrey.K Посмотреть сообщение
У тебя вполне хороший вариант, просто ты используешь точки. Если как в книге надо ,то
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
    setlocale(0,"rus");
    char line[]="_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ";
    char line2[]="- - - - - - - - - - - - - - - - - - - - - - -";
    cout<<setiosflags(ios::left) <<setw(15) << "Фамилия" << setw(15) << "Имя" << setw(15) << "Адрес" << setw(15) << "Город"<< endl;
    //cout<<"..............................................................."<<endl;
    cout<<line<<endl<<endl;// нижнее подчеркивание
    cout<<line2<<endl;// через дефисы
    cout <<setiosflags (ios::left) <<setw(15) << "Петров" <<setw(15) << "Василий" << setw(15) <<"Кленовая 16" << setw(15) << "Санкт-Петербург"<<endl
    <<setw(15)<< "Иванов" <<setw(15) << "Сергей" << setw(15) <<"Осиновая 3" << setw(15) << "Находка"<<endl
    <<setw(15)<< "Сидоров" <<setw(15) << "Иван" << setw(15) <<"Березовая 21" << setw(15) << "Калининград"<<endl;
    
    getch();
    return 0;
}
Нет, я не правильно выразился. Общим можно поставить эти подчеркивания с помощью манипулятора setfill(). Этот манипулятор принимает в качестве аргумента один символ, допустим в моем случае setfill('.'), который замещает пробелы на незаполненых позициях поля. Мне нужно сделать так чтобы он прирывался сразу после окончания второй строки. Как я не старался его прервать не получаеться, а символ заполняет все пустые пробелы.
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
21.08.2012, 01:28     Решение задач C++ Р. Лафоре #6
Setfill прервать никак нельзя, он стоит по умолчанию, и ты просто можешь менять символ заполнения. Поэтому такой вариант как тебе надо я думаю выглядит так:
C++
1
2
3
4
5
6
    for(char i=1;i<50;i++)
    {
        if(i%2==0) cout<<setfill('_')<<setw(2)<<' ';
    }
    cout<<endl<<endl;
    cout<<setfill(' ');
Добавлено через 43 секунды
Просто чтобы прекратить как бы заполнение , его нужно вернуть в начальное состояние, а это символ заполнения "пробел".
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.08.2012, 02:57     Решение задач C++ Р. Лафоре
Еще ссылки по теме:

Решение задач C++
Решение задач C++
Решение задач на C++ C++

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

Или воспользуйтесь поиском по форуму:
Nicholas
 Аватар для Nicholas
0 / 0 / 0
Регистрация: 21.08.2012
Сообщений: 5
21.08.2012, 02:57  [ТС]     Решение задач C++ Р. Лафоре #7
Цитата Сообщение от Andrey.K Посмотреть сообщение
Setfill прервать никак нельзя, он стоит по умолчанию, и ты просто можешь менять символ заполнения. Поэтому такой вариант как тебе надо я думаю выглядит так:
C++
1
2
3
4
5
6
    for(char i=1;i<50;i++)
    {
        if(i%2==0) cout<<setfill('_')<<setw(2)<<' ';
    }
    cout<<endl<<endl;
    cout<<setfill(' ');
Добавлено через 43 секунды
Просто чтобы прекратить как бы заполнение , его нужно вернуть в начальное состояние, а это символ заполнения "пробел".
Спасибо большое))) Общим еще учиться и учиться мне. Ну думаю потихоньку все станет на свои места в голове.
Yandex
Объявления
21.08.2012, 02:57     Решение задач C++ Р. Лафоре
Ответ Создать тему
Опции темы

Текущее время: 16:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru