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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Novij
3 / 3 / 0
Регистрация: 12.12.2010
Сообщений: 99
12.12.2010, 21:35     Вывод на экран 8 нижних подчеркиваний (с использованием классов) #1
Необходимо написать программу,с использованием классов, выводящую на экран 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
{ тогда возникает вопрос что тут писать ?????
}....
и далее непонятно.
Бес классов было намного проще бы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2010, 21:35     Вывод на экран 8 нижних подчеркиваний (с использованием классов)
Посмотрите здесь:

Рекурсивный вывод стека с использованием классов C++
C++ Справочник с использованием классов
C++ Программирование с использованием классов.
Вывод строки на экран с использованием esp-последовательности C++
вывод на экран чисел 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12, с использованием одного цикла и что бы все printf были только в теле цикла C++
Имена переменных начинающиеся с двух подчеркиваний или с символа подчеркивания и следующей за ним буквы верхнего регистра C++
Задача с использованием шаблонов классов в С++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Somebody
2775 / 1588 / 142
Регистрация: 03.12.2007
Сообщений: 4,162
Завершенные тесты: 1
12.12.2010, 22:39     Вывод на экран 8 нижних подчеркиваний (с использованием классов) #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;
}
Novij
3 / 3 / 0
Регистрация: 12.12.2010
Сообщений: 99
12.12.2010, 23:13  [ТС]     Вывод на экран 8 нижних подчеркиваний (с использованием классов) #3
Нифига се О_о я думал будет попроще. Честн вообще ниче не понятно. Но огромное спасибо
slice
32 / 75 / 4
Регистрация: 04.11.2010
Сообщений: 249
12.12.2010, 23:16     Вывод на экран 8 нижних подчеркиваний (с использованием классов) #4
Novij, это он так стебется над тобой
Novij
3 / 3 / 0
Регистрация: 12.12.2010
Сообщений: 99
12.12.2010, 23:20  [ТС]     Вывод на экран 8 нижних подчеркиваний (с использованием классов) #5
А попроще ведь немного можн?
slice
32 / 75 / 4
Регистрация: 04.11.2010
Сообщений: 249
12.12.2010, 23:34     Вывод на экран 8 нижних подчеркиваний (с использованием классов) #6
Да, просто поудаляй из того, что написал somеbody лишние классы
Novij
3 / 3 / 0
Регистрация: 12.12.2010
Сообщений: 99
12.12.2010, 23:41  [ТС]     Вывод на экран 8 нижних подчеркиваний (с использованием классов) #7
А можн шаблончик небольшой и главное понятный что бы я сам дальше смог классы создвать, а то читаю этого дейтла вообще затупился

Добавлено через 4 минуты
честн я с классами первый раз столкнулся и толком не понимаю что у Somebody в коде лишнее
slice
32 / 75 / 4
Регистрация: 04.11.2010
Сообщений: 249
13.12.2010, 00:09     Вывод на экран 8 нижних подчеркиваний (с использованием классов) #8
*безразличие*
lemegeton
 Аватар для lemegeton
2913 / 1342 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
13.12.2010, 01:23     Вывод на экран 8 нижних подчеркиваний (с использованием классов) #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;
}
Хохол
Эксперт C++
 Аватар для Хохол
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
13.12.2010, 01:34     Вывод на экран 8 нижних подчеркиваний (с использованием классов) #10
Цитата Сообщение от Novij Посмотреть сообщение
с использованием классов
C++
1
2
3
4
5
6
7
8
#include <iostream>
 
using namespace std;
 
int main()
{
     cout << "________";
}
Классы были использованы.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
13.12.2010, 01:52     Вывод на экран 8 нижних подчеркиваний (с использованием классов) #11
Хохол, и не поспоришь ведь
Novij
3 / 3 / 0
Регистрация: 12.12.2010
Сообщений: 99
13.12.2010, 10:22  [ТС]     Вывод на экран 8 нижних подчеркиваний (с использованием классов) #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) //ну это я наверное пока не пойму дружественные ф-ии еще не изучал.
Далее все понятно
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
13.12.2010, 12:13     Вывод на экран 8 нижних подчеркиваний (с использованием классов) #13

Не по теме:

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



Добавлено через 13 минут
Цитата Сообщение от Novij Посмотреть сообщение
НЕ ПОЙМУ ПОЧЕМУ ОШИБКА ВОЗНИКАЕТ:
CLASS1lubayaperemennaya; // вот здесь xwDev-C++ пишет мне ошибку, не пойму что не так
Желательно сообщать текст ошибки, телепатов сдесь нет. Могу предположить, если зрение меня не подводит, что нехватает пробела между CLASS1 и lubayaperemennaya
lemegeton
 Аватар для lemegeton
2913 / 1342 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
13.12.2010, 12:45     Вывод на экран 8 нижних подчеркиваний (с использованием классов) #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 Посмотреть сообщение
Далее все понятно
Молодец, я верил, что с перегрузкой оператора вызова функции у тебя проблем не будет.
Somebody
2775 / 1588 / 142
Регистрация: 03.12.2007
Сообщений: 4,162
Завершенные тесты: 1
13.12.2010, 13:03     Вывод на экран 8 нижних подчеркиваний (с использованием классов) #15
Цитата Сообщение от lemegeton Посмотреть сообщение
endl -- символ(ы) перевода каретки.
Не-а. Это функция
C++
1
ostream& ostream::endl(ostream& os);
Она ещё заодно вызывает ostream::flush.
lemegeton
 Аватар для lemegeton
2913 / 1342 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
13.12.2010, 13:13     Вывод на экран 8 нижних подчеркиваний (с использованием классов) #16
Цитата Сообщение от Somebody Посмотреть сообщение
Не-а. Это функция
C++
1
ostream& ostream::endl(ostream& os);
Она ещё заодно вызывает ostream::flush.
Безусловно.
Novij
3 / 3 / 0
Регистрация: 12.12.2010
Сообщений: 99
13.12.2010, 16:07  [ТС]     Вывод на экран 8 нижних подчеркиваний (с использованием классов) #17
Снова ошибка возникает

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[])            //вот открываем основное имя программы
{
    
 
 
class1 lubayaperemennaya;             // ошибка исправленна 
                                                   //пишем имя класса и имя любой переменной,( я ее так и обозвал)
lubayaperemennaya.vivod();              //в этой строке,через названную выше переменную, через точку
                                                    //вызываем ф-ию, описанную в классе.
    
system("PAUSE");                           //шаблон...
    
return EXIT_SUCCESS;                           //шаблон...
}

Ниже скриншот с кодом ошибки
Миниатюры
Вывод на экран 8 нижних подчеркиваний (с использованием классов)  
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
13.12.2010, 17:20     Вывод на экран 8 нижних подчеркиваний (с использованием классов) #18
Цитата Сообщение от Novij Посмотреть сообщение
C++
1
2
3
4
5
6
7
class class1 //тут я пишу имя классу любое пусть будет класс1
{pablic: //это как по шаблону говорим что вывод ф-ия открытая
 void vivod(); //ТЕПЕРЬ ВОЗНИКАЕТ ЗДЕСЬ ОШИБКА 
};
void class1::vivod(cout<<"________"); //это я до конца не понял знаю что только надо через двойное
 //двоеточие писать имя класса и ф-ию(а в скобочках
 //описывать что она делает, в данном случае выодит "________"
C++
1
2
3
4
5
6
7
8
9
class class1                                       
{public:                 //с этой метки идет перечисление открытых членов класса
    void vivod();                
};
 
void class1::vivod()  //в скобочках указываются принимаемые параметры, если они есть
{
    cout<<"________" << endl;
}
Novij
3 / 3 / 0
Регистрация: 12.12.2010
Сообщений: 99
13.12.2010, 18:18  [ТС]     Вывод на экран 8 нижних подчеркиваний (с использованием классов) #19
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <cstdlib>
#include <iostream>
class class1                                  
{pablic:                                             
    void vivod() //Все равно выдает ошибку я уже не могу себе даже представить что дев си не нравится
};
 void class1::vivod(); 
{
        cout<<"________"<<endl;
}                                                      
using namespace std;                      
 int main(int argc, char *argv[])           
{
class1 lubayaperemennaya;             
lubayaperemennaya.vivod();             
    
system("PAUSE");                          
    
return EXIT_SUCCESS;                     
}
Ошибка
Миниатюры
Вывод на экран 8 нижних подчеркиваний (с использованием классов)  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2010, 18:32     Вывод на экран 8 нижних подчеркиваний (с использованием классов)
Еще ссылки по теме:

Вывод информации на экран в случае применения классов на С++ C++
Таблица с использованием классов C++
C++ Вывод времени с использованием классов
Переписать программу с использованием классов C++
Умножение матриц с использованием классов C++

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

Или воспользуйтесь поиском по форуму:
Хохол
Эксперт C++
 Аватар для Хохол
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
13.12.2010, 18:32     Вывод на экран 8 нижних подчеркиваний (с использованием классов) #20
public, мля, public.
Yandex
Объявления
13.12.2010, 18:32     Вывод на экран 8 нижних подчеркиваний (с использованием классов)
Ответ Создать тему
Опции темы

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