Введение в c ++ и я завален - PullRequest
0 голосов
/ 05 октября 2018

Я только начал знакомство с курсом C ++ в понедельник, и я чувствую себя совершенно не в своей тарелке.Во-первых, они сказали мне установить редактор Crimson и Cygwin (для компиляции файлов):

Редактор Crimson не позволит мне что-либо делать (все параметры кажутся полностью серыми).

Cygwin похож на то, что я могу открыть командную строку из командного файла (как указано в учебном файле, данном классу), но я не могу ничего сделать оттуда.Я попросил о помощи, но пока не получил ответа, поэтому я решил посмотреть, смогу ли я найти помощь в Интернете.

После этих проблем мне предложили использовать кодовые блоки других пользователей онлайн, которые у меня есть.работал отлично.Первый вопрос, который у меня возникнет, - это проблема кодовых блоков, когда придет время компилировать / отлаживать файлы (они заявили, что для каждого назначения каждая отправка должна включать make-файл, makedebug и будет отмечена по следующим критериям:

Схема маркировки

Вы будете оценены по следующим критериям:

Программа компилируется без ошибок 20%
Правильное выполнение программы 20%
Корректность программы на C ++и стиль 20%
Программная документация 20%
План тестирования 20%
Итого 100%

К сожалению, они еще не представили нам довольно много этих концепций (яЯ надеюсь, что они представят их в ближайшее время, когда я подойду к концу первого раздела (в котором они сказали, что мы сможем выполнить первое задание, которое должно кодировать программы 4)).

Этоприводит нас к следующей проблеме. Я пытаюсь попрактиковаться в использовании while(getline()), но сталкиваюсь с некоторыми проблемами (опять же, у меня почти 0 опыта работы с progrЯ решила взять этот класс, как предполагалось, чтобы он был вводным.Как ни странно, «Пока» - это концепция, которая будет представлена ​​позже в курсе, но, к счастью, у меня есть очень базовое понимание этого из видео онлайн).Ниже приведен код, который я пытаюсь запустить:

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main()
{

    string docName;
    cout<<"What is the file name you would like to open?"<<endl;
    cin>> docName;

    string s, line;
    ifstream in (string docName);

    while (getline(in, line))
        s+=line+"\n";
    cout << s;

    return 0;
}

Здесь есть ошибка, и я не уверен, почему я получаю эту ошибку.Кроме того, у меня возникли проблемы с полным пониманием трех аспектов кода, подобных этому:

getline ()

ifstream in ()

и ofstream out ()

В качестве вступления к строкам они использовали код:

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main()
{
    ifstream in("Scopy.cpp");
    ofstream out("Scopy2.cpp");
    string s;
    while(getline(in, s))
        out<<s<<"\n";
    return 0;
}

и

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main()
{
    ifstream in("FillString.cpp");
    string s, line;
    while(getline(in,line))
        s+= line + "\n";
    cout<< s;
}

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

Напишите программу, которая открывает файл и считает в этом файле слова, разделенные пробелами.

Напишите программу, которая открывает (текстовый) файл и отображает содержимое этого файла по одной строке за раз.После отображения строки программа должна подождать, пока пользователь нажмет клавишу, прежде чем отобразить следующую строку в файле.

Напишите программу, в которой используются два вложенных цикла для цикла и оператор модуля (%) дляобнаружить и распечатать простые числа от 1 до 10000.(Простые числа - это натуральные числа, которые не делятся поровну на любые другие числа, кроме них самих и одного).Отобразите все найденные простые числа.

Напишите программу, которая создает массив из 100 строковых объектов.Заполните массив, попросив вашу программу открыть (текстовый) файл и считывать по одной строке файла в каждую строку, пока вы не заполните массив.Отобразите массив в формате «line #:», где # - фактический номер строки (для этого значения можно использовать счетчик массива) и сохраненную строку.

Может ли кто-нибудь объяснить это с точки зрения непрофессионала?(Я на самом деле следовал учебнику NewBoston по C ++, который был невероятно полезен, но я смотрел вперед, где они представлены, и хотя я нахожусь на уроке 20, который похож на 3 часа в его почти 10-часовом вводном видео, они представлены наурок 68 ... довольно давно).

1 Ответ

0 голосов
/ 05 октября 2018

Первое предложение: у меня сложилось впечатление, что ваш учитель черпает вдохновение, и некоторый код из

Thinking in C ++, 2nd Edition, Volume 1 by Bruce Eckel

доступен здесь:

https://www.mindviewllc.com/quicklinks/
https://archive.org/details/TICPP2ndEdVolOne

Я предлагаю вам прочитать его;Мне было очень хорошо объяснить концепцию C ++

Второе предложение: Cygwin поставляется со значком Cygwin Terminal.Используйте его для запуска интерпретатора команд bash.Не забудьте также установить пакет gcc-g++ для компиляции кода.

Сообщение об ошибке от компилятора говорит вам, что оно не соответствует аргументам getline:

$ g++ prova0.cpp -o prova0
prova0.cpp: In function ‘int main()’:
prova0.cpp:17:30: error: no matching function for call to ‘getline(std::ifstream (&)(std::string), std::string&)’
     while (getline (in, line ) )
                              ^

Theпроблема в коде здесь

 ifstream in (string docName);

где вы определяете поток in
Сравните его с другим кодом

ifstream in("Scopy.cpp");

есть слово string тожемного.

...