Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.71/107: Рейтинг темы: голосов - 107, средняя оценка - 4.71
5 / 5 / 3
Регистрация: 29.12.2010
Сообщений: 146
1

Начинающий си/си++ программист

29.12.2010, 21:30. Показов 20109. Ответов 110
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Я вот собираюсь начать учить язык си а впоследствии си++. У меня есть книга Б.Керниган, Д.Ритчи "Язык программирования си". Мне нравится как там написано, да и отзывы об этом учебнике неплохие. У меня проблема с компиляторами, я не могу понять какой лучше закачал наконец DEV-C++ вроде отличный интерфейс, русский. Дошло до написания первой программы, написал как в учебнике написано, первый пример. Должна была получится программа, которая писала бы - Здравствуй мир, но компилятор почему то комментарий Здравствуй мир выделил красным цветом, я этому значения не придал, скомпилировал программу, и нажал на запуск. При запуске появляется окно на долю секунды и исчезает. В учебнике написано, что у них примеры для UNIX системы, для других систем - надо консультироваться со специалистами. Подскажите пожалуйста как писать на виндовсе. Буду также рад любой информации по языку си, так как я только начинающий. Заранее спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.12.2010, 21:30
Ответы с готовыми решениями:

Начинающий программист
Здравствуйте уважаемые программисты.У меня к вам такой вопрос:C чего лучше надо начинать изучить...

Начинающий программист
Всем привет, если у кого есть время, решите эту задачку, в программировании я на уровне "блондинки"...

Начинающий программист С++ хочет учиться
Привет! Я учу С++ сам, в университете (2 пары в неделю, не стремительно) Этот язык выбрал потому...

Что должен знать начинающий программист?
что нужно знать и уметь чтобы устроиться на работу программистом стажёром C++ ???

110
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
14.01.2011, 02:27 81
Author24 — интернет-сервис помощи студентам
Очень, очень интересно. У меня текстовый файл такого примерно вида:
C++
1
2
3
4
5
stroka
stroka 1
stroka 2
stroka 3 4 aaa
 stroka 3 4 bbbb
Вот мне его надо считать в строку, не выделяя под неё размер и разбить эту строку на подстроки, где разделители 0XD, а потом каждую подстроку запихать в вектор <string>
А самое главное- самое главное- необходимо корректно брать потом адреса элементов этого массива.

Я это всё решил уже. А адреса не брал, а обращался к элементам через индексы, что наверное, пограмотнее. Но с адресами тоже хотелось бы поработать.

Но если напишите- буду благодарен, потом изучу.
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
14.01.2011, 02:30 82
kravam, Парсинг мне сейчас впадлу делать. Завтра экзамен. Разделители 0XD это что значит?
Все строки из этого файла считать в одну? Я правильно понял? Или же построчно?
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
14.01.2011, 02:42 83
Ну может я поставил условие подразумевая, что по-другому не решить его. Может задача проще решается, не знаю.

А ВООБЩЕ надо сформировать vector<string>, каждый элемент которого суть одна из строк
C++
1
2
3
4
5
stroka
stroka 1
stroka 2
stroka 3 4 aaa
 stroka 3 4 bbbb
Ну то есть из файла их как-то считывать по одной ли скопом ли неважно. А вот что важно:

1)НИ ОДИН РАЗ не надо ни под что выделять память вручную
2) После этого хотелось бы увидеть их адреса вот так: &v[0]

0XD это символ котрым эти строки разбиены в файле, между ними 0XD (возврат каретки) и 0XA (перевод на другую строку)

То есть любой из этих симвлов может быть разделителем, лучше 0XD, поскольку они идут в такой последовательности:
0XD 0XA

Ну впадлу так впадлу. А вообще это могло бы меня убедить. Ну может я сам дойду до этих всех параметров потом.

Добавлено через 5 минут
строки конечно разными всякими могут быть, важно что в них могут быть пробелы.
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
14.01.2011, 02:48 84
Хах. Даже так. Тут даже парсинг не нужен.

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
#include <vector>
#include <iostream>
#include <string>
#include <fstream>
 
std::vector<std::string> readFile(std::ifstream& ifs)
{
    std::string str;
    std::vector<std::string> vec;
    while(std::getline(ifs, str))
        vec.push_back(str);
    return vec;
}
 
int main()
{
    std::string str;
    std::cout<<"Enter name of file\n";
    std::cin>>str;
    std::ifstream ifs(str.c_str());
    if(!ifs)
    {
        std::cerr<<"Error with open file "<< str <<'\n';
        return 1;
    }
    std::vector<std::string> vec=readFile(ifs);
    for(size_t i=0; i<vec.size(); ++i)
    {
        std::cout<<&vec[i]<<'\n';
        std::cout<<vec[i]<<'\n';
    }
    return 0;
}
Работает верно?)
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
14.01.2011, 03:03 85
Да вроде работает, спасибо. Получается, я зря корпел писал свой класс для считывания в строку, а это можно было реализовать с помощью getline. Знай я это, может тоже придумал бы такое красивое решение. Обидно. Ну я потом конечно подробнее изучу.

Так как ж всё таки быть с синтаксисом getline?
Брать отсюда?
http://www.cplusplus.com/reference/string/getline/
И в печку мой учебник?
0
silent_1991
14.01.2011, 03:04
  #86

Не по теме:

kravam, видимо не зря все отговаривают читать Павловскую...

0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
14.01.2011, 03:04 87
kravam, Учебники Павловской вообще не советуют... Но вцелом может быть getline в этой ипостасии будет описана при описании класса string. А тот ресурс на который вы привели ссылку очень хорош. Как справочник - лучше вряд ли найдется.
2
4773 / 2582 / 894
Регистрация: 29.11.2010
Сообщений: 5,590
14.01.2011, 03:07 88
Цитата Сообщение от kravam Посмотреть сообщение
Ну дальше я повторяюсь уже. После нескольких push_back адрес какого-либо элемента v взять проблематично довольно.
Есть такое понятие в ООП, одно из основных, инкапсуляция называется. Почитайте на досуге и не лазайте больше потными указателями в поля данных объекта. Черт его знает, как оно там реализовано.
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
14.01.2011, 03:14 89
А мне просто подсказать некому, там два варианта getline (а их может и больше, кто его знает), вот второй
http://www.cplusplus.com/refer... m/getline/

Так что тут Павловская не ошиблась, я просто не доглядел. Всем спасибо.

Добавлено через 6 минут
Цитата Сообщение от lemegeton Посмотреть сообщение
Есть такое понятие в ООП, одно из основных, инкапсуляция называется. Почитайте на досуге и не лазайте больше потными указателями в поля данных объекта. Черт его знает, как оно там реализовано.
хе, так если надо адрес взять. Чё делать-то? Ну я уже говорил, я бы посмотрел адрес, а потом если он бы вывелся удостоврился в OllyDbg, что там именно то, что я и предполагаю, я такие вещи проверяю. Хорошо, если знаешь итераторы. А если не знаешь? Вот пример живой: вот я знаю getline, а их , оказывается две.
А итераторов не понять сколько. Вот я щас читаю аммераалля, там и входные и выходные и всякие. Оно и хорошо и плохо- теряешься. А взятие адреса в стиле С всегда однозначно &...
0
4773 / 2582 / 894
Регистрация: 29.11.2010
Сообщений: 5,590
14.01.2011, 03:21 90
Цитата Сообщение от kravam Посмотреть сообщение
хе, так если надо адрес взять. Чё делать-то?
Для дебага берите, сколько влезет. Если не секрет, зачем вы проверяете, что по адресу переменной лежит её значение? В каких случаях это может быть не так?

Вообще, в плюсах есть такая шикарная вещь, как ссылка, что сильно упрощает передачу параметров сложного типа. Креститься пяткой, теперь не нужно постоянно явно использовать указатели.
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
14.01.2011, 03:30 91
Я не могу объяснить, это каждый отдельный случай надо брать. В 99 % смотрятся адреса элементов динамических массивов, конечно, а не отдельных переменных

Кстати, именно так я познакомился с прописыванием памяти. Эту ошибку ИНАЧЕ не обнаружить (разве что найти её в исходнике, но моей головы не хватило). А хватило бы- так я бы вообще без ошибок кодил.
0
0 / 0 / 0
Регистрация: 13.01.2011
Сообщений: 8
14.01.2011, 10:40 92
Ну в общем, поменял решение ). Буду изучать Си ++. Какой учебник лучше взять для новичка? Страуструп подойдет?
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
14.01.2011, 11:11 93
Flynn84, ни в коем случае! По крайней мере не "учебник" под названием "Язык программирования Си++". Говорят, его последняя книга (Программирование. Принципы и практика использования Си++) хороша, но в электронном виде я её пока не видел. От себя могу порекомендовать Дейтелов - Как программировать на Си++ (пятое или шестое издания).
1
0 / 0 / 0
Регистрация: 13.01.2011
Сообщений: 8
14.01.2011, 12:13 94
Цитата Сообщение от silent_1991 Посмотреть сообщение
Flynn84, ни в коем случае! По крайней мере не "учебник" под названием "Язык программирования Си++".
А что так? Книга не очень или не для новичков?

Видел вчера несколько тем про учебники по плюсам, надо их изучить внимательней.
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
14.01.2011, 12:36 95
Flynn84, и стиль ужасный (это, разумеется, моё личное мнение), и совсем не для новичков, да и систематики в подаче материала никакой.

Добавлено через 3 минуты

Не по теме:

А вообще, я привередливый, вы меня меньше слушайте))) Например, в тех темах направо и налево советуют Либерти - "Освой самостоятельно Си++ за 21 день", абсолютное большинство от неё в восторге, а мне она, например, абсолютно не понравилась. Слишком уж там искусственные примеры даются для понимания принципов ООП. Вернее, они сами, может, и живые, но практической пользы в написании реальных программ не дают никакой. Опять же, строгое ИМХО.

2
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
14.01.2011, 12:40 96
Цитата Сообщение от lemegeton Посмотреть сообщение
В каких случаях это может быть не так?
Если я напишу компил и среду разработки.
0
2 / 2 / 0
Регистрация: 16.01.2011
Сообщений: 23
16.01.2011, 14:03 97
Цитата Сообщение от Flynn84 Посмотреть сообщение
Ну в общем, поменял решение ). Буду изучать Си ++. Какой учебник лучше взять для новичка? Страуструп подойдет?
Мне понравилась книжка товарища Семенидо Дмитрия
1
13 / 12 / 2
Регистрация: 22.12.2010
Сообщений: 67
16.01.2011, 19:10 98
Страуструп сложный,согласен.Я тоже новичок,мне понравился Шильдт
0
0 / 0 / 0
Регистрация: 13.01.2011
Сообщений: 8
17.01.2011, 17:22 99
Цитата Сообщение от Rusl_v Посмотреть сообщение
Страуструп сложный,согласен.Я тоже новичок,мне понравился Шильдт
"Полный справочник по С++" ? Или у него еще что-то есть?
0
Kastaneda
17.01.2011, 18:33     Начинающий си/си++ программист
  #100

Не по теме:

Flynn84, Шилдт вообще парень плодовитый) У него много книг, и не только по С/С++.

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.01.2011, 18:33

Начинающий программист: с какой программы начать?
Привет всем!Я только начал интересоваться программированием и не знаю с чего мне начать,посоветуйте...

Начинающий программист
Здравствуйте! Кратко о себе, мне 17 собираюсь поступать в ВУЗ, но не на специальность...

Начинающий программист С++
Ищу работу(можно и удалённо) для увеличения опыта и практики. Есть базовые знания по...

Начинающий программист
Здравствуйте. Москва, ищу работу желательно не удаленно , практически вся неделя свободна для...


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

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru