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

Как быть дальше? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
neske
1426 / 793 / 56
Регистрация: 26.03.2010
Сообщений: 2,733
27.03.2010, 17:02     Как быть дальше? #1
День добрый.
Собственно сложилась такая ситуация -
Имеется огромное желание изучать дальше языки программирование, и все то, что с ними связано.
Возможно около месяца назад, стал изучать С++. Изучил на начальном уровне - функции/циклы/массивы.
Так же затрагивал темы классов, но понял, мне это еще рано.
Собственно к чему я все это пишу.
Какие темы мне стоит затронуть далее, возможно примеры задач, или еще что-то.
Какой вы учебник посоветуете для меня, из своего личного опыта? Знаю, учебников куча, но не все они подойдут.

Заранее благодарен, буду ждать ответа.

PS. Тапками не закидывайте
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2010, 17:02     Как быть дальше?
Посмотрите здесь:

Подскажите как быть. C++
C++ Куда и как двигаться дальше?
strcpy - как быть? C++
C++ Как дальше доделать? Посмотрите. Почему она не работает?
C++ помогите пожалуйста задать прямые с помощью структур прямые задаются точкой и направляющим вектором. дальше как делать знаю
Как заставить программу не выгружаться из памяти и работать дальше? C++
Как перебросить исключение дальше в обработчике исключения? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
WolfCF
3286 / 1369 / 46
Регистрация: 28.04.2009
Сообщений: 4,823
27.03.2010, 17:11     Как быть дальше? #2
зачитаться
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2295 / 1665 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
27.03.2010, 17:11     Как быть дальше? #3
neske, из литературы могу посоветовать:
Эккель Б. Философия С++. Введение в стандартный С++
Липпман С. Лажойе Ж. Язык программирования C++. Вводный курс
Липпман С. Основы программирования на С++. Том 1
neske
1426 / 793 / 56
Регистрация: 26.03.2010
Сообщений: 2,733
27.03.2010, 17:20  [ТС]     Как быть дальше? #4
Wolf, я видел эту тему, спс. Но повторюсь, не все они мне подойдут.

CyBOSSeR, спасибо, почитаю.
_______
Какие темы вы посоветуете затронуть сейчас в первую очередь?
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,300
27.03.2010, 17:43     Как быть дальше? #5
Хе, вопрос простой вроде, а поставил в тупик.
На-ка вот, чтобы не повторяться:
С чего начать?, сообщение номер 26

Из книг посоветую K&R, в сети есть
...Ну, и найди задачу какого-нибудь лодыря, что попроще тут, на форуме и м мусоль себе на здоровье
Nameless One
Эксперт С++
 Аватар для Nameless One
5759 / 3408 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
27.03.2010, 17:47     Как быть дальше? #6
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Эккель Б. Философия С++. Введение в стандартный С++
После этой книжки рекомендую почитать вторую часть:
Эккель Б, Эллистон Ч. Философия С++. Практическое программирование
В ней подробно рассматривается стандартная библиотека С++ (потоки ввода-вывода, алгоритмы и контейнеры STL), обработка исключений, шаблоны и многое другое.
neske
1426 / 793 / 56
Регистрация: 26.03.2010
Сообщений: 2,733
27.03.2010, 17:56  [ТС]     Как быть дальше? #7
Цитата Сообщение от kravam Посмотреть сообщение
На-ка вот, чтобы не повторяться:
С чего начать?, сообщение номер 26
Полезно, прочитал.
Спасибо.
Цитата Сообщение от kravam Посмотреть сообщение
Из книг посоветую K&R, в сети есть
Извини, но можно подробнее, K&R?
Цитата Сообщение от kravam Посмотреть сообщение
...Ну, и найди задачу какого-нибудь лодыря, что попроще тут, на форуме и м мусоль себе на здоровье
Да-да, дело полезное
__________

Nameless One, а я вот начал читать - Липпман С. Основы программирования на С++. Том 1. И мне понравилась, понятно пишет, хотя может-быть это только начало ..
А на счет - Эккель Б, Эллистон Ч. Философия С++. Практическое программирование, сегодня же скачаю, чтобы иметь представление, спасибо.
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,300
27.03.2010, 18:00     Как быть дальше? #8
K&R это Керниган и Ричи
neske
1426 / 793 / 56
Регистрация: 26.03.2010
Сообщений: 2,733
27.03.2010, 19:04  [ТС]     Как быть дальше? #9
Ребят, прошу помощи - http://i070.***********/1003/82/dee1f6d3e893.jpg
Nameless One
Эксперт С++
 Аватар для Nameless One
5759 / 3408 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
27.03.2010, 19:07     Как быть дальше? #10
Переменная want используется без предварительной инициализации
А вообще, код в студию
neske
1426 / 793 / 56
Регистрация: 26.03.2010
Сообщений: 2,733
27.03.2010, 19:16  [ТС]     Как быть дальше? #11
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
#include <stdafx.h>
#include <iostream>
using namespace std ;
 
int main ()
{
bool want; // пользователь хочет угадывать?
bool win=false; // пользователь угадал?
int attempts=0; // количество попыток.
int num; // загаданное программой число число.
int user_num; // число, написанное пользователем.
 
 
cout << "Igraem? (Yes/No)";
    char intro;
    cin >> intro;
    if (intro=='Yes')
    {
        want=true;  
        num=rand()%9+1;
        cout << "TEST! - " << num << endl;
    }
    else win=false;
 
while ((want==true) && (win==false))
    {
            cout << "Igra nachalas!" << endl;
            attempts++;
            cout << attempts << " popitka - ";
            cin >> user_num;
            cout << "\t";
 
            if (user_num!=num)
            {
                cout << "Neverno!" << endl;
            }
            else
            { 
                cout << "Vi viigrali!" << endl;
                cout << "Zagadannoe chislo- " << num;
                cout << endl;
                win=true;
            }
    }
    return 0;
}
Не ругайте если что за корявость.. сами понимаете, сразу никогда нечего не бывает
Nameless One
Эксперт С++
 Аватар для Nameless One
5759 / 3408 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
27.03.2010, 19:19     Как быть дальше? #12
Я думаю, в 23 строке опечатка, и нужно так:
C++
1
2
3
//...
}
else want=false;
Voron8
13 / 13 / 1
Регистрация: 28.04.2009
Сообщений: 62
27.03.2010, 19:20     Как быть дальше? #13
Стефан Девис "C++ для чайников".
От объявления переменных до классов. Достаточно просто и доходчиво.
Моя первая книга по C++
neske
1426 / 793 / 56
Регистрация: 26.03.2010
Сообщений: 2,733
27.03.2010, 19:28  [ТС]     Как быть дальше? #14
Nameless One, она самая Исправил.
Но теперь при вводе "Yes" не происходит никаких действий, просит клавишу нажать.


Voron8, спасибо за ответ.
Nameless One
Эксперт С++
 Аватар для Nameless One
5759 / 3408 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
27.03.2010, 19:40     Как быть дальше? #15
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
49
50
51
52
#include <iostream>
#include <string>
#include <ctime>
using namespace std ;
 
int main ()
{
    //инициализация генератора случайных чисел текущим временем
    srand(time(NULL));
bool want; // пользователь хочет угадывать?
bool win=false; // пользователь угадал?
int attempts=0; // количество попыток.
int num; // загаданное программой число число.
int user_num; // число, написанное пользователем.
 
 
cout << "Igraem? (Yes/No)" << endl;
        char intro[4];
        cin >> intro;
        //Сравнение строк производится специальной функцией
        if (strcmp(intro, "Yes")==0)
        {
                want=true;      
                num=rand()%9+1;
                cout << "TEST! - " << num << endl;
        }
        else want=false;
 
while ((want==true) && (win==false))
        {
                    if(!attempts)//Чтобы сообщение о начале выводилось только один раз
                        cout << "Igra nachalas!" << endl;
                        attempts++;
                        cout << attempts << " popitka." << endl << "input number: ";
                        cin >> user_num;
                        cout << "\t";
 
                        if (user_num!=num)
                        {
                                cout << "Neverno!" << endl;
                        }
                        else
                        { 
                                cout << "Vi viigrali!" << endl;
                                cout << "Zagadannoe chislo- " << num;
                                cout << endl;
                                win=true;
                        }
        }
        system("pause");
        return 0;
}
Добавлено через 1 минуту
Кстати, без флага win можно обойтись, а для выхода из цикла while использовать команду break:
C++
1
2
3
4
5
while(want)
{
    //...
    break;
}
Voron8
13 / 13 / 1
Регистрация: 28.04.2009
Сообщений: 62
27.03.2010, 19:40     Как быть дальше? #16
меня немножко напрягает, что intro объявляется как символ, а записывается массив.
Может так:
C++
1
2
3
4
5
cout << "Igraem? (Y/N)";
char intro;
cin >> intro;
if (intro=='Y')
..............
neske
1426 / 793 / 56
Регистрация: 26.03.2010
Сообщений: 2,733
28.03.2010, 01:23  [ТС]     Как быть дальше? #17
Nameless One, Огромное спасибо, сильно благодарен.
За комментарии, отдельное спасибо.
Не понятно кое-что ^^
1)
C++
1
2
3
4
char intro[4];
        cin >> intro;
                //Сравнение строк производится специальной функцией
        if (strcmp(intro, "Yes")==0)
Подробнее объясните этот момент пожалуйста.

2)
C++
1
if(!attempts)//Чтобы сообщение о начале выводилось только один раз
Почему в скобках именно так?

Спасибо.


ПС - Voron8, у меня так и было сделано первоначально, не работало.
Nameless One
Эксперт С++
 Аватар для Nameless One
5759 / 3408 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
28.03.2010, 07:16     Как быть дальше? #18
  1. Функция int strcmp(const char* s1, const char* s2) возвращает отрицательное число, если строка s1<s2, нуль, если строки идентичны, положительное число, если s1>s2
  2. Оператор "!" инвертирует логическое выражение. Если expr==false, то !expr==true. В языке С первоначально не было встроенного булевого типа, и его функции выполнял тип int. Нулевое значение интерпретировалось как false, ненулевое - как true. При первой итерации цикла while значение attempts==0, т.е. false, a !attempts==true, и сообщение выводится. В дальнейшем attempts принимает ненулевые значения, и логическое выражение !attempts становится ложным. Таким образом, сообщение выводится только один раз. Условие if(!attempts) аналогично условию if(attempts==0)
neske
1426 / 793 / 56
Регистрация: 26.03.2010
Сообщений: 2,733
28.03.2010, 11:18  [ТС]     Как быть дальше? #19
Теперь я это понял, спасибо.
Последнее, еще -
C++
1
char intro[4];
Почему мы не обошлись просто
C++
1
chat intro;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2010, 15:39     Как быть дальше?
Еще ссылки по теме:

C++ Подскажите как сделать, например "для продолжения нажмите клавишу х" и дальше выводится результат с шагом заданым пользователем
Как быть с циклом for? C++
Чем дальше в лес, тем больше дров. Не соображу, как собрать в кучу C++
C++ Разместить флажки на прямой как можно дальше друг от друга
C++ Раздельная компиляция: как быть, если код не компилируется, так как два файла подключают друг друга?

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

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
 Аватар для Nameless One
5759 / 3408 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
28.03.2010, 15:39     Как быть дальше? #20
char intro - это единичный символ, char intro[4] - это массив символов (строка). Мы проверяем, равна ли введенная строка (!) строке "Yes", и выделяем для хранения ответа пользователя массив не из 3, а из 4 символов потому, что в строку неявно вставляется нуль-терминатор '\0' - символ, который обозначает конец строки. Таким образом, строка "Yes" состоит из символов 'Y', 'e', 's', '\0'.
Yandex
Объявления
28.03.2010, 15:39     Как быть дальше?
Ответ Создать тему
Опции темы

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