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

Учусь программированию на языке с++ самостоятельно - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 46, средняя оценка - 4.65
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
08.04.2014, 09:56     Учусь программированию на языке с++ самостоятельно #1
Учусь программированию на языке с++ самостоятельно (уроки Дениса Маркова в Ютуб).
После урока с циклами у меня возникли огромные проблемы. Не могу выполнит домашку.
Данный момент изучаю массивы.
Задачи:
1. Найти сумму всех элеметов массива. - С этим как то разобрался с помошю этого форума.
2. Найти нужный элемент в массиве. Вывести его индекс, если в массиве нет такого значение вывести 1.
Вроде бы надо действовать так:
- Создать массив;
- Запомнит элементы массива;
- устроит ввод элемента с консоли для проверки;
- использовать "if else" для вывода единички если элемент не находится в массиве, а если находится вывести индекс.
Вот я не знаю как сохранит в программе элементы массива. Только при вводе с консоли.
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
       int main()
{
    setlocale (LC_ALL , "Russian");
    int A[5];
       
    for(int i = 1; i <= 4; i++)
    {  
    cout << "Введите значение" << i <<" эелемента массива:  ";
    while(!(cin >> A[i]))
        cout << "Не верный ввод" << endl;
}
                
       _getch ();
        return 0;
}

А вот сохранит в программе не как. Постоянно выдает ошибку.

Мне не нужен готовый код. Нужна правильное направление.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
13.04.2014, 21:33  [ТС]     Учусь программированию на языке с++ самостоятельно #121
DrOffset, Скачал книгу. Полистал не много. Для начало не плохо. Только от один вопрос. Из видеоуроков мне известно что cout отвечает за вывод информации в консоль. На книге это сделано другим путем. С помошю команды void. (выпуск 2001. Скачал и выпуск 2007)
Мне хотелось бы знать. В чем разница. И не первый раз замечаю что в книгах в место using ...::std; перед каждым словом напоминают программе что используется облака имен std. С какой целью?

Добавлено через 5 минут
Думаю это с целю помочь запомнит читателю, какое слово к какой облаке относится.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6424 / 3798 / 879
Регистрация: 30.01.2014
Сообщений: 6,591
14.04.2014, 00:16     Учусь программированию на языке с++ самостоятельно #122
Цитата Сообщение от Altair42 Посмотреть сообщение
перед каждым словом напоминают программе что используется облака имен std. С какой целью?
Хороший стиль прививают. Глобальное включение using namespace может приводить к конфликтам имен.

Цитата Сообщение от Altair42 Посмотреть сообщение
С помошю команды void.
Хм. Что-то не то. Страница какая?
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
14.04.2014, 03:02  [ТС]     Учусь программированию на языке с++ самостоятельно #123
Цитата Сообщение от DrOffset Посмотреть сообщение
Хороший стиль прививают. Глобальное включение using namespace может приводить к конфликтам имен.
Вот смотрите. На видеоуроках показали что надо только 1 раз добавит каждый объект ( или как их там)ю Но тут добавляется не 1 раз а каждый раз при вводе.

Типа:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include < iostream>
int main()
{
int a
.........
std::cout << "Введите одно число...." << std::endl;
 
std::cin >> a;
std::cout << "..........." << std::endl;
...........
return 0;
}
void в выпуске 2001-го года. Но на выпуске 2007-го года уже нет. Там где то на 1 главе после истории и куча того что не стал читать ( стр 30 +-). Просто листал книгу смотреть есть ли такой же код.
То же самое в книгах других авторов.
Код работает норм.

Добавлено через 17 минут
И еще я не заметил чтоб в с++ был оператор goto есть ли такое или аналог? Очень хороший оператор. Заметил только в 1 книге. Но книга была довольно старая (использовали <iostream.h> в место <iostream>. VC++2010 не знает что такое <iostream.h>
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
14.04.2014, 06:32     Учусь программированию на языке с++ самостоятельно #124
Цитата Сообщение от Altair42 Посмотреть сообщение
Из видеоуроков мне известно что cout отвечает за вывод информации в консоль. На книге это сделано другим путем. С помошю команды void
В таких случаях было бы неплохо привести автора книги, полное название, номер издания, издательство, номер страницы и номер строки, где встречается такая странность. И цитату привести.
А вообще - чем вызвано желание читать такие старые книги?

Цитата Сообщение от Altair42 Посмотреть сообщение
На видеоуроках показали что надо только 1 раз добавит каждый объект ( или как их там)ю Но тут добавляется не 1 раз а каждый раз при вводе.
Уже объяснили почему.
В реальных проектах как правило запрещено использовать using namespace. Добавление отдельных объектов директивой using... Получше, но все равно не очень. На каждый чих писать новую строчку. Если имя пространства имен слишком длинное для постоянного набора, лучше навесить алиас.
Еще тут можно почитать: http://google-styleguide.googlecode....ces#Namespaces

Цитата Сообщение от Altair42 Посмотреть сообщение
И еще я не заметил чтоб в с++ был оператор goto есть ли такое или аналог?
Считай, что такого оператора не существует.
DrOffset
6424 / 3798 / 879
Регистрация: 30.01.2014
Сообщений: 6,591
14.04.2014, 08:38     Учусь программированию на языке с++ самостоятельно #125
Цитата Сообщение от Altair42 Посмотреть сообщение
void в выпуске 2001-го года.
Слишком старая книжка, чтобы ее вообще нужно было рассматривать. Смотри новые издания.
Цитата Сообщение от 0x10 Посмотреть сообщение
И еще я не заметил чтоб в с++ был оператор goto есть ли такое или аналог?
Есть, и в книге той должен быть. Но там же должно быть объяснение почему его не стоит использовать. По крайней мере в начале обучения.
Цитата Сообщение от Altair42 Посмотреть сообщение
На видеоуроках показали что надо только 1 раз добавит каждый объект ( или как их там)ю Но тут добавляется не 1 раз а каждый раз при вводе.
На видеоуроках завуалировали проблему, не знаю почему, для простоты объяснений наверное. Вообще, using namespace можно использовать, но локально, например так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include < iostream>
int main()
{
    using namespace std;
    int a
.........
    cout << "Введите одно число...." << endl;
 
    cin >> a;
    cout << "..........." << endl;
...........
    return 0;
}
Однако это все равно не спасет, если так включаются два или больше пространств имен, где существут одинаковые имена. Отсюда рекомендация, указывать пространство имен непосредственно перед именем.В целом это хорошо, хоть и писать нужно больше, т.к. код становится менее подвержен случайным ошибкам. Но еще, конечно, нужно учитывать, что эти рекомендации нужны в первую очередь для реальных проектов, где кода бывает очень много.
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
14.04.2014, 09:35  [ТС]     Учусь программированию на языке с++ самостоятельно #126
Цитата Сообщение от DrOffset Посмотреть сообщение
Слишком старая книжка, чтобы ее вообще нужно было рассматривать. Смотри новые издания.
Как бы таке видел и в изданиях 2006.

Цитата Сообщение от DrOffset Посмотреть сообщение
На видеоуроках завуалировали проблему, не знаю почему, для простоты объяснений наверное. Вообще, using namespace можно использовать, но локально, например так:
Код C++

#include < iostream>
int main()
{
using namespace std;
int a
.........
cout << "Введите одно число...." << endl;
cin >> a;
cout << "..........." << endl;
...........
return 0;
}
На видеоуроках объясняли так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include < iostream>
using std::cout;
using std::cin;
using std::endl;
int main()
{
    using namespace std;
    int a
.........
    cout << "Введите одно число...." << endl;
 
    cin >> a;
    cout << "..........." << endl;
...........
    return 0;
}
DrOffset
6424 / 3798 / 879
Регистрация: 30.01.2014
Сообщений: 6,591
14.04.2014, 09:52     Учусь программированию на языке с++ самостоятельно #127
Цитата Сообщение от Altair42 Посмотреть сообщение
Как бы таке видел и в изданиях 2006.
Тогда давай точную цитату кода. Пока это выглядит странно.

Цитата Сообщение от Altair42 Посмотреть сообщение
На видеоуроках объясняли так:
Понятно. Для обучения или при написании кода для себя (т.е. в одно лицо) на самом деле нет особой разницы как делать. Просто мотивация писать std:: далеко небезосновательна, и знать про нее нужно. Но все-таки, даже в этом разделе бывают вопросы связанные с включением namespace, т.е. вероятность налететь на это есть даже у новичков.
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
14.04.2014, 10:16  [ТС]     Учусь программированию на языке с++ самостоятельно #128
Установил QTCreator нужны инструкции к нему. Пишу код на с++ не мог компилировать.

Учусь программированию на языке с++ самостоятельно

Нажимаю ф5 - ноль реакции, пережожу Debug - > Start debugging - > далше функция не доступна. Если дело в компиляторе то установлен g++
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
14.04.2014, 10:27  [ТС]     Учусь программированию на языке с++ самостоятельно #129
DrOffset, вот код с книги. изданий 2006 удалил уже но код почти идентичен. К стати нормально работает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
include <iostream>
using namespace std;
void readIn() { cout << "readIn()\n"; }
void sort() { cout << "sort()\n"; }
void compact() { cout << "compact()\n"; }
void print() { cout << "print ()\n"; }
int main()
{
readIn();
sort();
compact();
print();
return 0;
}
Добавлено через 4 минуты
DrOffset, получаеться в с++ к именам надо каждый раз обращаться "официально"?
DrOffset
6424 / 3798 / 879
Регистрация: 30.01.2014
Сообщений: 6,591
14.04.2014, 10:53     Учусь программированию на языке с++ самостоятельно #130
Цитата Сообщение от Altair42 Посмотреть сообщение
DrOffset, вот код с книги. изданий 2006 удалил уже но код почти идентичен. К стати нормально работает.
Так тут нет никакого оператора void. Тут создали четыре функции (void означает, что функция не возвращает значений), а внутри у них все тот же std::cout. Этот пример иллюстрирует скорее не вывод, а вызов этих функций. А cout внутри используется для визуализации этого вызова на конcоль.

Цитата Сообщение от Altair42 Посмотреть сообщение
получаеться в с++ к именам надо каждый раз обращаться "официально"?
Лично я всегда так и делаю. Уже на автомате и даже не замечаю.

Добавлено через 6 минут
Цитата Сообщение от Altair42 Посмотреть сообщение
Нажимаю ф5
Сперва нужно проект создать. Что-то вроде "консольное приложение без Qt" (точно не помню уже формулировку, но думаю разберешься).
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
14.04.2014, 17:23  [ТС]     Учусь программированию на языке с++ самостоятельно #131
Цитата Сообщение от DrOffset Посмотреть сообщение
Сперва нужно проект создать. Что-то вроде "консольное приложение без Qt" (точно не помню уже формулировку, но думаю разберешься).
В принципе код программы можно написать в блокноте потом откомплировать с помошью любого доступного средства. А программы типа VC++ сами вызывают компилиятор.

Я точно не могу сказать как должно быт в линуксе. Я сперва установил g++ это по сути компилиятор c++ потом установил Qt. А с книги узнал что програму можно откомпилировать прямо в терминале (илинукс). Надо просто задействовать комплиятор и указать путь к файлу.

У мея в линуксе проблема с компилиятором не только в с++. Установил Эклипс (для явы) откопал в интернете код для калулятора и инструкции как делать калкулятор в Эклипсе ( чтоб понят как программа работает ). Сделал все по инструкциям но Эклипс не мог найти основную часть кода. А прикол в том что та же программа показывает ту же часть кода как асновной ( зеленый значок с надписью Мейн.

Добавлено через 12 минут
Я читал что для Линукса нет вирусов но я отхватил один. Мышка тыкает куда попало. В преждном сообщение мышка начал тупит как обычно. Через не сколько секунд мне пришлось вырезать из сообщение - "Сперва нужно проект создать. Что-то вроде "консольное приложение без Qt" (точно не помню уже формулировку, но думаю разберешься)." в 3 местах. Обычным глюк мышки не может встаит сообшение несколько раз. В данный момент работает ESET NOD32 (Linux) но не чего не видит.
DrOffset
6424 / 3798 / 879
Регистрация: 30.01.2014
Сообщений: 6,591
14.04.2014, 18:24     Учусь программированию на языке с++ самостоятельно #132
Цитата Сообщение от Altair42 Посмотреть сообщение
Я читал что для Линукса нет вирусов но я отхватил один.
Похоже на глюк иксов, а не на вирус... Что за дистрибутив?
Цитата Сообщение от Altair42 Посмотреть сообщение
В принципе код программы можно написать в блокноте потом откомплировать с помошью любого доступного средства.
Да.
В общем Qt Creator хорошая среда, но я бы рекомендовал начать с чего-то вроде Code::Blocks, мне кажется с ней проще будет.
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
14.04.2014, 18:29  [ТС]     Учусь программированию на языке с++ самостоятельно #133
Цитата Сообщение от DrOffset Посмотреть сообщение
Похоже на глюк иксов, а не на вирус... Что за дистрибутив?
Ubuntu Mint 16. И да в виндовс мышка реагируеть совсем на оборот. Тормозит и останавливаеться на совсем. Без перезагрузки не как.

Цитата Сообщение от DrOffset Посмотреть сообщение
В общем Qt Creator хорошая среда, но я бы рекомендовал начать с чего-то вроде Code::Blocks, мне кажется с ней проще будет.
В принципе меня не вольнует как проше. Главное чтоб работал. Могу и в терминале компилировать. Но то что программа не может компилировать код бесит.
DrOffset
6424 / 3798 / 879
Регистрация: 30.01.2014
Сообщений: 6,591
14.04.2014, 19:56     Учусь программированию на языке с++ самостоятельно #134
Цитата Сообщение от Altair42 Посмотреть сообщение
Но то что программа не может компилировать код
Да может. Просто проект нужно создать... Не просто файл, а проект, а в нем уже файл. Должно быть дерево файлов слева. Судя по скрину, у тебя там пусто, значит проект не создан, а просто файл открыт.
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
14.04.2014, 20:01  [ТС]     Учусь программированию на языке с++ самостоятельно #135
Понят. Надо просто разобраться в программе. А как на счет Эклипса?
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
14.04.2014, 21:24     Учусь программированию на языке с++ самостоятельно #136
Цитата Сообщение от Altair42 Посмотреть сообщение
А как на счет Эклипса?
Не парьтесь раньше времени с выбором среды... Возьмите одну попроще - на первое время хватит. При мне многие начинали одинаково: любой тупой текстовый редактор и терминал, все. Но я уж не заставляю, хотя рано или поздно придется.

Что до Эклипса... Большой. Функциональный. Вплоть до того, что в нем можно настроить кучу правил по оформлению кода и в редакторе будут отмечаться несоответствия соглашениям. Неплохой рефакторинг, вертикальное выделение, возможность создавать свои отладочные конфигурации... Из косяков - определенная медлительность. На некоторых частях буста у меня конкретно задумывался.

Я это к тому, что его возможности первое время точно не понадобятся. А выбирать среду по принципу "где сразу скомпилялось" - нецелесообразно. Если нет понимания почему оно не собирается - в любой среде будут проблемы.
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
14.04.2014, 21:52  [ТС]     Учусь программированию на языке с++ самостоятельно #137
0x10, я не про возможности. Для проверки поставил туда готовый проект калкулятор. Нашел в интернете с инструкциями что и как делать. Он не видит мейн файл. а хотя все папки правильны когда открываю сам код мейн файла показывает что это мейн. ( в углу название файла перед ним зеленый указатель с надписью мейн.) Программа просто не видит папки и файлы проекта чтоб там выбрать мейн.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
14.04.2014, 21:58     Учусь программированию на языке с++ самостоятельно #138
Altair42, давай ты не будешь начинать со сложных проектов или проектов, слабо относящихся к Си++. Т.е. будешь не калькуляторы из интернета качать, а консольные приложения создавать и книжки читать.
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
15.04.2014, 13:24  [ТС]     Учусь программированию на языке с++ самостоятельно #139
Kuzia domovenok, Калкулятор не на с++. Я хотел посмотрет как работает Эклипс. Смогу ли я изучит Яву на примерах.

Добавлено через 14 часов 54 минуты
Не могу вызвать компилятор с++ через коммандную строку.
В книге написано что в виндовс можно вызвать таким образом: c:\текущий каталог> c1 -GX название файла.

Погуглил и не чего не понял. Не кто не пишет для какой ОС какая команда. Просто пишут несколько разных команд. Я так понял что надо скачать компилятор. Но она вроде бы уже есть. VC++. Все советуют для начало не использовать IDE я согласен. Но как откомпилировать программу?

В данный момент сижу с Виндовс ( на Линуксе мышка тупит жест). На Линуксе установлен g++. А какой компилятор использует VC?
И где находится документация по компилятору? ( Или где находится компилятор)

Добавлено через 11 минут
Я вообще не могу открыт командную строку в вин 7. Открыл через пуск, стандартные программы. Открываеться в каталоге "пользователи - админстратор" Это фишка седмерки? На Хп командная строка открывалась совсем иначе. ( все время использовал Хп на 7 перешел не давно только из за дизайна.

Как то открыл в седмерке командную строку со всем по другому. И работал он не так как сейчас. Только забыл где откопал его.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2014, 13:49     Учусь программированию на языке с++ самостоятельно
Еще ссылки по теме:

C++ учусь разбирать чужой код
сессия.Какой подход к программированию используется на языке С++ C++
Перегрузка операторов. Учусь. Ошибка C++

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

Или воспользуйтесь поиском по форуму:
DrOffset
6424 / 3798 / 879
Регистрация: 30.01.2014
Сообщений: 6,591
15.04.2014, 13:49     Учусь программированию на языке с++ самостоятельно #140
Altair42, у Visual Studio уже есть настроенная командная строка. Должнен быть ярлык в пуске, посмотри. Компилятор называется не c1, а cl (L маленькая).

Добавлено через 3 минуты
Цитата Сообщение от Altair42 Посмотреть сообщение
На Линуксе установлен g++
g++ можно поставить и в виндовсе. Он есть отдельно, а есть в составе IDE, например CodeBlocks или Dev-C++.
Yandex
Объявления
15.04.2014, 13:49     Учусь программированию на языке с++ самостоятельно
Ответ Создать тему
Опции темы

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