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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Novij
3 / 3 / 0
Регистрация: 12.12.2010
Сообщений: 99
#1

Вывод на экран 8 нижних подчеркиваний (с использованием классов) - C++

12.12.2010, 21:35. Просмотров 1643. Ответов 23
Метки нет (Все метки)

Необходимо написать программу,с использованием классов, выводящую на экран 8 символов нижней черты "_" ( не знаю точно как ее обозвать).
C++
1
2
3
4
5
6
7
8
9
10
11
class cherta
{public:
  void vivodcherti()
};
void cherta::vivodcherti()
{for(int i=0;i<8;i++)
 {cout<<"_";}
}
int main
 {cherta a;
   a.vivodcherti();}
Было бы неплохо если написать шаблон для любой ф-ии в классе.
class имя класса
{ pablic:
void имя ф-ии(int i=0, n короч данные которые будут в ней использоваться )
} ;
void имя класса::имя ф-ии( что в скобках должно быть не понял опять перечислять данные??????)
main
{ тогда возникает вопрос что тут писать ?????
}....
и далее непонятно.
Бес классов было намного проще бы.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2010, 21:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод на экран 8 нижних подчеркиваний (с использованием классов) (C++):

Вывод времени с использованием классов - C++
Почему в конце выводит: 0:0:0 #include &lt;iostream&gt; using namespace std; class time { private: int Hours; int Minutes; ...

Рекурсивный вывод стека с использованием классов - C++
:'(Помогите пожалуйста написать прогу с определением класса рекурсии для вывода стека, заданного через массив, в обратном порядке(тоесть...

Вывод информации на экран в случае применения классов на С++ - C++
Здравствуйте! Подскажите, пожалуйста, в таком вопросе. Пытаюсь написать элементарную программу с применением классов на С++, но в ней не...

Вывод строки на экран с использованием esp-последовательности - C++
ДОБРЫЙ ДЕНЬ,в нашем ВУЗе ввели дисциплину по С++,я в ней-полный чайник(((((помогите,пожалуйста,с написанием след.программ(((((заранее буду...

Вывод массива на экран функцией с использованием указателей - C++
Привет, при написании функции возникла проблема: в помеченной комментарием строке выдало ошибку( Ошибка C2228 выражение слева от &quot;.size&quot;...

вывод на экран чисел 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12, с использованием одного цикла и что бы все printf были только в теле цикла - C++
вывод на экран чисел 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12, с использованием одного цикла и что бы все printf были только в теле...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Somebody
2789 / 1603 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
12.12.2010, 22:39 #2
Ну и заданьице
Как вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
 
class PrintableCharacter
{
    const char c;
public:
    PrintableCharacter(char ac) : c(ac) { }
    char Get() const { return c; }
    friend std::ostream& operator<<(std::ostream&, const PrintableCharacter&);
};
 
template <class T>
class Printer
{
    std::ostream& s;
    const T info;
public:
    Printer(std::ostream& as, const T& ai) : s(as), info(ai) { }
    void Print() const {s << info;}
};
 
class LoopExecutor
{
    void (*const f)(int);
    const int n;
public:
    LoopExecutor(void (*af)(int), int an) : f(af), n(an) { }
    void operator()() const { for (int i = 0; i < n; i++) f(i); }
};
 
std::ostream& operator<<(std::ostream& s, const PrintableCharacter& c)
{
    return s << c.Get();
}
 
template <char c>
void CharToCout(int n)
{
    static PrintableCharacter ch(c);
    static Printer<PrintableCharacter> printer(std::cout, ch);
    printer.Print();
}
 
int main()
{
    LoopExecutor((void (*)(int))CharToCout<'_'>, 8)();
    return 0;
}
1
Novij
3 / 3 / 0
Регистрация: 12.12.2010
Сообщений: 99
12.12.2010, 23:13  [ТС] #3
Нифига се О_о я думал будет попроще. Честн вообще ниче не понятно. Но огромное спасибо
0
slice
35 / 78 / 4
Регистрация: 04.11.2010
Сообщений: 249
12.12.2010, 23:16 #4
Novij, это он так стебется над тобой
1
Novij
3 / 3 / 0
Регистрация: 12.12.2010
Сообщений: 99
12.12.2010, 23:20  [ТС] #5
А попроще ведь немного можн?
0
slice
35 / 78 / 4
Регистрация: 04.11.2010
Сообщений: 249
12.12.2010, 23:34 #6
Да, просто поудаляй из того, что написал somеbody лишние классы
0
Novij
3 / 3 / 0
Регистрация: 12.12.2010
Сообщений: 99
12.12.2010, 23:41  [ТС] #7
А можн шаблончик небольшой и главное понятный что бы я сам дальше смог классы создвать, а то читаю этого дейтла вообще затупился

Добавлено через 4 минуты
честн я с классами первый раз столкнулся и толком не понимаю что у Somebody в коде лишнее
0
slice
35 / 78 / 4
Регистрация: 04.11.2010
Сообщений: 249
13.12.2010, 00:09 #8
*безразличие*
0
lemegeton
2924 / 1353 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
13.12.2010, 01:23 #9
Somebody извращенец. Минималистичней надо.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
 
template <char c, int n>
class PrintAChar
{
public:
        void operator()()
        {
                for (int i=0; i<n; i++)
                        std::cout << c;
                std::cout << std::endl;
        }
        friend std::ostream& operator<< (std::ostream& o, const PrintAChar& t)
        {
                for (int i=0; i<n; i++)
                        o << c;
                return o;
        }
};
 
int main()
{
        PrintAChar<'_', 8> C;
        C(); // вариант раз
        std::cout << C << std::endl; // вариант два
        return 0;
}
1
Хохол
Эксперт C++
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
13.12.2010, 01:34 #10
Цитата Сообщение от Novij Посмотреть сообщение
с использованием классов
C++
1
2
3
4
5
6
7
8
#include <iostream>
 
using namespace std;
 
int main()
{
     cout << "________";
}
Классы были использованы.
1
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
13.12.2010, 01:52 #11
Хохол, и не поспоришь ведь
0
Novij
3 / 3 / 0
Регистрация: 12.12.2010
Сообщений: 99
13.12.2010, 10:22  [ТС] #12
Благодарствую lemegeton
Хохол спасибо канешн правда такую прогу я и сам написал , но классов в ней нет.
Я кое как с миру по нитки попытался разобраться с классам вот что вышло в wxDev-C++.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <cstdlib>
#include <iostream>
class CLASS1                                       //тут я пишу имя классу любое пусть будет класс1
{pablic:                                              //это как по шаблону говорим что вывод ф-ия открытая
    void vivod();
};
 
void CLASS1::vivod(cout<<"________");  //это я до конца не понял знаю что только надо через двойное
                                                        //двоеточие писать имя класса и ф-ию(а в скобочках
                                                        //описывать что она делает, в данном случае выодит "________"
 
 
 
using namespace std;                         //определяем пространство имен
 
int main(int argc, char *argv[])            //вот открываем основное имя программы
{
    
 
 
CLASS1lubayaperemennaya;             // вот здесь xwDev-C++ пишет мне ошибку, не пойму что не так 
                                                   //пишем имя класса и имя любой переменной,( я ее так и обозвал)
lubayaperemennaya.vivod();              //в этой строке,через названную выше переменную, через точку
                                                    //вызываем ф-ию, описанную в классе.
    
system("PAUSE");                           //шаблон...
    
return EXIT_SUCCESS;                           //шаблон...
}


НЕ ПОЙМУ ПОЧЕМУ ОШИБКА ВОЗНИКАЕТ:
CLASS1lubayaperemennaya; // вот здесь xwDev-C++ пишет мне ошибку, не пойму что не так





lemegeton и пожалуйстаможете разьяснить , не знаю прост :
template <char c, int n>
????что это????

а так же что это за ф-ия в цикле
for (int i=0; i<n; i++)
std::cout << c; //????? что это стд
std::cout << std::endl; //???
}
friend std::ostream& operator<< (std::ostream& o, const PrintAChar& t) //ну это я наверное пока не пойму дружественные ф-ии еще не изучал.
Далее все понятно
0
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
13.12.2010, 12:13 #13

Не по теме:

Цитата Сообщение от Novij Посмотреть сообщение
Хохол спасибо канешн правда такую прогу я и сам написал , но классов в ней нет.
Не было указано, что нужно использовать собственные классы, так что программа соответствует заданию, в ней используется cout - объект класса ostream.



Добавлено через 13 минут
Цитата Сообщение от Novij Посмотреть сообщение
НЕ ПОЙМУ ПОЧЕМУ ОШИБКА ВОЗНИКАЕТ:
CLASS1lubayaperemennaya; // вот здесь xwDev-C++ пишет мне ошибку, не пойму что не так
Желательно сообщать текст ошибки, телепатов сдесь нет. Могу предположить, если зрение меня не подводит, что нехватает пробела между CLASS1 и lubayaperemennaya
0
lemegeton
2924 / 1353 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
13.12.2010, 12:45 #14
Цитата Сообщение от Novij Посмотреть сообщение
НЕ ПОЙМУ ПОЧЕМУ ОШИБКА ВОЗНИКАЕТ:
Спокойней, не повышайте регистр.
Цитата Сообщение от kazak Посмотреть сообщение
Желательно сообщать текст ошибки, телепатов сдесь нет. Могу предположить, если зрение меня не подводит, что нехватает пробела между CLASS1 и lubayaperemennaya
Не пали контору! Говоришь, что телепатов нет, а сам уже нателепатил ошибку.

Цитата Сообщение от Novij Посмотреть сообщение
template <char c, int n>
Это объявление шаблона функции. При использовании класса вместо "c" и "n" компилятором будут подставляться соответствующие переменные, указанные в объявлении переменной этого типа.

std это пространство имен. Не буду объяснять, сами почитайте, но по-стандарту, большинство STL классов, таких как cout и cin, лежат в пространстве имен std и нужно либо указывать using namespace std перед использованием, либо у каждого используемого объекта указывать пространство имен std::cout, std::cin. Без этого на большинстве компиляторов не найдет определение.

endl -- символ(ы) перевода каретки.

Цитата Сообщение от Novij Посмотреть сообщение
Далее все понятно
Молодец, я верил, что с перегрузкой оператора вызова функции у тебя проблем не будет.
1
Somebody
2789 / 1603 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
13.12.2010, 13:03 #15
Цитата Сообщение от lemegeton Посмотреть сообщение
endl -- символ(ы) перевода каретки.
Не-а. Это функция
C++
1
ostream& ostream::endl(ostream& os);
Она ещё заодно вызывает ostream::flush.
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2010, 13:03
Привет! Вот еще темы с ответами:

Имена переменных начинающиеся с двух подчеркиваний или с символа подчеркивания и следующей за ним буквы верхнего регистра - C++
Начиная изучать C++ наткнулся на такое определение: &quot;Имена, начинающиеся с двух символов подчеркивания или с символа подчеркивания и...

Справочник с использованием классов - C++
Есть программа &quot;телефонный справочник&quot; с записью в *.txt файл (txt файл используется просто как буфер). Как теперь её переделать с...

Программирование с использованием классов. - C++
Помогите решить. Создать класс квадрат, член класса - длина стороны. Предусмотреть в классе методы вычисления и вывода сведений о...

Таблица с использованием классов - C++
Помогите задать переменные char. #include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;windows.h&gt; #include &lt;iomanip&gt; class OfficePacks...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.12.2010, 13:03
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru