Глава 1. Итоговый тест

  Юрий Ворон  | 

    | 

  Обновл. 9 Дек 2016  | 

 13182

 ǀ   29 

Эти задания рассчитаны для улучшения запоминания пройденного материала и применение его на практике.

Задание №1

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

Функция «readNumber», которая запрашивает в пользователя одно целое число, затем возвращает его в main.

Функция «writeAnswer», которая выводит результат в консоль. Она должна быть без возвращаемого значения и принимать только один параметр.

Функция main(), которая соединяет две вышеуказанные функции вместе.

Подсказка 1: Не нужно отдельной функции для математической операции сложения (просто используйте оператор +).

Подсказка 2: Функцию readNumber() нужно вызывать дважды.

Подсказка 3: Если вы используете Visual Studio с предварительно откомпилированными заголовками, не забудьте #include "stdafx.h".

Ответ 1

main.cpp

Задание №2

Измените программу с задания №1, чтобы функции readNumber() и writeAnswer() находились в отдельном файле с названием «io.cpp». Используйте предварительные объявления для доступу к ним с главной функции main().

Подсказка: Если у вас возникли проблемы, убедитесь, что io.cpp правильно добавлено к вашему проекту и подключено к компиляции (смотрите Урок 20. Многофайловые программы для получения более подробной информации о том, как это сделать).

Ответ 2

io.cpp

main.cpp

Задание №3

Измените программу с задания №2, чтобы она использовала заголовочный файл (с именем io.h) для доступа к функциям, вместо использования предварительных объявлений. Убедитесь, что ваш заголовочный файл использует header guards.

Ответ 3

io.cpp

io.h

main.cpp

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (162 оценок, среднее: 4,93 из 5)
Загрузка...

Комментариев: 29

  1. Эрик:

    Спасибо за уроки, сделал с первого раза. Была проблема с директивами и препроцессором в этой главе, пришлось обращаться к сторонним видео урокам, чтобы въехать в суть. Но в основном все легко усваивается. Спс)

  2. nickatin:

    Получилось даже без ошибок. И все благодаря очень подробным урокам)

  3. Антгон:

    Хотел немного усложнить задание и добиться, чтобы в строке вывода был не просто результат сложения, а, например, так:
    Итого: 5 + 6 = 11
    При написании в main строки

    все показывает как мне нужно, но при попытке написать код для функции void writeAnswer все идет кувырком. Перепробовал кучу вариантов, но без результата.
    Пожалуйста, подскажите, как сделать правильный код для функции, чтобы при компиляции появлялся именно такой результат!

    1. Константин:

      Про побочные эффекты читал? Делай минимум действий в каждом стейт-менте — тогда и кувырки в прог-е меньше отжигать будут.

    2. Alexey:

      Скорее всего из-за того, что вы отправляете на в функцию печати всего одно значение, а хотите использовать все 3. Измените функцию так, чтобы она получала все 3 значения.

  4. GAS:

  5. Лёха:

    То чувство, когда все на изи этот тест пишут, а я ни одного задания не сделал, половину кода не понимаю. Придётся заново всё перечитывать, пока не начну понимать 🙁

  6. ufo:

    Пример хороший но не логичнее ли будет вписать #include <iostream>в io.h (а также все нужные инклюды которые могут потребоваться для других функций).
    После чего в io.cpp и в main.cpp в инклюдах надо писать только #include "io.h" (вместо дублирования инклюдов а их может быть много, тем более у нас хеадергвард прописан)
    врезультате например std::cout<<"ALL OK"; в конце main будет работать.

  7. Руслан:

    а таким способом будет правильно?

  8. Andrey:

    Решил «тупо» переписать ответы на тесты, что бы набить руку.(Итоговый тест 1). Первое задание откомпелировалось без проблем. А второе из 2-х файлов никак не компилируется. И в первом и во втором случае выдаёт ошибку 1010 и советуе добавить #include ‘’stdafx.h’’, но я точно копирую ответ. В чем прикол? Я полный ‘’чайник’’, но тема зашла, хочется дойти до сути.

  9. Рома:

    Здравствуйте, в 3 задании сделал точно также как и у вас в ответе, но мне выдает две ошибки :
    1) идентификатор readNumber() не определён
    2) идентификатор writeAnswer() не определён
    в чём может заключаться проблема?
    Проверял уже много раз код один в один с вашим .

    1. Алексей:

      Тут 2 варианта. Либо в main.cpp не прописан файл заголовка (#include "io.h"), либо в файлезоголовка не объявлены указанные функции. Подробнее здесь: Урок 21. Заголовочные файлы.

    2. Эрик:

      Подключение io.h идет до подключения <iostream>?

      1. Рома:

        Эрик, спасибо огромное, у меня в принципе #include <iostream> не был подключен в этом была вся проблема , не понимаю как я упустил это, ещё раз огромное спасибо )))

      2. Алексей:

        Файл заголовка можно подключить и до и после jostream.

  10. Tahir:

    Отличный тест. Без лишней теории и охватывает все основные аспекты Главы1. Спасибо за Ваш труд!

    1. Юрий Юрий:

      Спасибо, что читаете 🙂

  11. Даниил:

    Здравствуйте , такой вопрос )
    Во второй функции мы вводим одну переменную x
    А в функции main() мы выводим эту функцию и (x+y)….
    Уточните пожалуйста что здесь и как )

    1. Александр:

      А что там не понятного? Мы вызываем функцию writeAnswer() А "x+y" — это параметр этой функции, который равен сумме x и y, и вот это значение присваивается переменной x в функции writeAnswer() Просто нужно внимательно читать уроки. У каждой функции своя переменная с именем "X" (в каждом городе есть своя улица Ленина)

    2. Алексей:

      Все просто. Каждая из предстваленных функций "не знает", что одноименные переменные есть в других функциях.
      Подробнее тут: Урок 15. Локальная область видимости.

  12. Алекей:

    Есть недочет. После каждого урока надо штук по 10 практических заданий для закрепления материала. Все получилось с первого раза! Но практики очень не хватает.

    1. Максим:

      Согласен, это уже будет полировка, а так все хорошо.

    2. Константин:

      Да-да, полностью поддерживаю Алексея: Юрий, пожалуйста, прибавьте контрольных заданий, а то как-то мало связей между нейронами образуется у меня в голове от одного задания:-(

  13. илья:

    у меня в 1задании 39 ошибок, придется кодить сначала

  14. Игорь...:

    Прикольно, первое задание выполнил так же как и в ответе, кроме…

    Работает… Но правильно ли так?

    1. Юрий Юрий:

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

  15. Diana:

    В итоге все получилось, не без ошибок, конечно, но получилось) очень рада) спасибо за Ваш труд!)

    1. Юрий Юрий:

      Пожалуйста 🙂

  16. Дима:

    Хм….урок без коментов.
    У всех все просто получилось?!)

Добавить комментарий

Ваш E-mail не будет опубликован. Обязательные поля помечены *