Основи програмування на С ++ для початківців

Задачи и решение. С

  1. Типи даних, змінними і константами
  2. Ввод с клавиатуры и вывод данных на экран
  3. Арифметические операции и комбинированные операторы
  4. Операторы выбора if и else в С
  5. Оператор switch в С
  6. Цикл for в C++
  7. Циклы while, do while, вложенные циклы
  8. Двумерные массивы C
  9. Массиви в C++
  10. Функції в C++
  11. Указатели C
  12. Покажчик на покажчик C ++
  13. Классы в С

Додатковий збірник задач з рішеннями

практика программирования, задачи с решением, задачи по программированию с++, задачи по программированию C++

На цій сторінці зібрані всі завдання по темам уроків, розміщених на нашому сайті. К каждой задаче прилагается наш вариант решения. Постарайтесь всё же решать их самостоятельно и только потом сравнивать наш исходный код со своим. “Хочешь научиться программировать – программируй”!

Больше практических заданий с решениями найдёте тут.

Рекомендуем посетить Сайт для юных программистов – где вы найдете уроки по различным языкам программирования (в том числе для детей), 3D-моделированию, Linux и др.

127 думки про "Задачи и решение. С

  1. створювати функції, в які передавати данні, як параметри;

    Вилучити з текстового файла f усі рядки, довжина яких меньше 3. Результат записати до файла g.

    1. #include
      #include
      #include
      #include

      static std::vector read_file(std::string);
      static void print_vector(std::vector);
      static std::vector delete_lines(std::vector &, size_t);
      static void save_file(std::string, std::vector);

      int main()
      {
      std::string file_name;
      std::cout <> file_name;
      std::getchar();
      std::vector all_lines = read_file(file_name);
      print_vector(all_lines);
      std::vector out_lines = delete_lines(all_lines, 3);
      print_vector(out_lines);
      std::cout <> file_name;
      std::getchar();
      std::getchar();
      save_file(file_name, out_lines);
      return 0;
      }

      static void save_file(std::string file_name, std::vector vect)
      {
      std::ofstream outfile;
      outfile.open(file_name, std::ios::out);
      if (!outfile.is_open())
      {
      std::cout << "error open file\n";
      }
      else
      {
      for (size_t i = 0; i < vect.size(); i++)
      {
      outfile << vect[i] << std::endl;
      }
      }
      outfile.close();
      }

      static std::vector delete_lines(std::vector & vect, size_t len)
      {
      static std::vector result_vect;
      for (size_t i = 0; i len)
      {
      result_vect.push_back(vect[i]);
      }
      }
      return result_vect;
      }

      static void print_vector(std::vector vect)
      {
      std::cout << "\n====================" << std::endl;
      for (size_t i = 0; i < vect.size(); i++)
      {
      std::cout << vect[i] << std::endl;
      }
      std::cout << "\n====================" << std::endl;
      }

      static std::vector read_file(std::string file_name)
      {
      std::string line;//Cannot read properties of undefined (reading ‘setAtlas’)
      std::vector vect;
      std::ifstream infile(file_name, std::ios::in);
      if (!infile.is_open())
      {
      std::cout << "error read file\n";
      }
      while (!infile.eof())
      {
      std::getline(infile, line);
      vect.push_back(line);
      }
      infile.close();
      return vect;
      }

  2. Програма, яка по вектору A, формує вектор B, у якому будуть тiльки парнi елементи вектора A

  3. Визначити, чи належить точка N(x;y) трикутнику, утвореному осями AB,
    AC та прямою
    y = 7.6x – 3.5

  4. Корабель може вмістити в трюмі N кг золота (N вичитується з клавіатури).
    Вікно конвеєра, який постачає злитки золота до нього має розміри W = 50см (довжина) та H = 50см (висота).
    Користувач з клавіатури вводить розміри (w,h,l) золотих злитків, які можна покласти на конвеєр.
    Злитки, які більші за розмірами за вікно конвеєру до трюму не потрапляють і не ставляться на конвеєр.
    Необхідно заповнити трюм корабля золотими злитками по максимуму, але не перенавантажити його.
    Змоделювати процес відбору злитків золота, які потрапляють до трюму.

    На екран необхідно вивести:
    – розміри злитків золота та їх масу.
    – необхідність їх поворотів на конвеєрі для потрапляння в трюм або факт того, що злиток не підходить.
    – залишкову вагу в трюмі для золота (скільки ще кілограмів може вмістити трюм).

    Програма виконується поки (або):
    – Трюм не буде повний;
    – Його заповненість буде менша від максимальної на 10-20 кг та 3 злитки підряд не пройшли до трюму.
    – Користувач не введе символ, який зупиняє виконання програми.

    Додатково: злитки золота можна генерувати випадковим чином з ромірами від 1см до 100см, при цьому:
    – вивід на екран повинен залишитися таким самим.
    – кількість злитків, які підряд не пройшли до трюму становить щонайменше 10.

  5. 1. Файл містить 100 цілих чисел. Підрахувати, скільки серед них є
    трійок і скільки чисел більше десяти.
    2. Файл містить 50 дійсних чисел. Підрахувати, скільки серед них є
    негативних чисел (вивести на екран). Вивести в інший файл номера
    позицій, в яких знаходяться негативні числа та їх значення.
    3. Написать программу, зчитує з файлу результати деякого
    експерименту, обчислює середнє значення, абсолютну та відносну
    похибка вимірювання та результат дописує до цього файлу

    1. #include
      #include
      #include
      #include
      #include

      const std::string FILE_NAME = “exp_021.bin”;
      const size_t MAX_LEN = 100;

      void fill_array(int *);
      void print_array(int *);
      bool save_array(int *, size_t , std::string);
      bool load_array(int *, size_t , std::string);
      size_t calculate_by_value(int *, int);
      size_t calculate_by_value2(int *, int);

      int main()
      {
      srand(time(nullptr));
      int * int_array = new int[MAX_LEN];
      fill_array(int_array);

      print_array(int_array);
      save_array(int_array, MAX_LEN, FILE_NAME);

      load_array(int_array, MAX_LEN, FILE_NAME);
      print_array(int_array);
      std::cout << "\nthe number of numbers is equal 3 = " << calculate_by_value(int_array,3);
      std::cout << "\nnumber of numbers greater than 10 = " << calculate_by_value2(int_array,10);

      }

      size_t calculate_by_value2(int * arr, int value)
      {
      size_t count = 0;
      for (size_t i=0 ; i value)
      {
      count++;
      }
      }
      return count;
      }

      size_t calculate_by_value(int * arr, int value)
      {
      size_t count = 0;
      for (size_t i=0 ; i< MAX_LEN ; i++)
      {
      if (arr[i] == value)
      {
      count++;
      }
      }
      return count;
      }

      bool load_array(int * arr, size_t length , std::string file_name)
      {
      std::ifstream is(file_name, std::ios::binary | std::ios::in);
      if ( !is.is_open() )
      return false;
      is.read(reinterpret_cast(arr), std::streamsize(length*sizeof(int)));
      is.close();
      return true;
      }

      bool save_array(int * arr, size_t length, const std::string file_name)
      {
      std::ofstream os(file_name, std::ios::binary | std::ios::out);
      if ( !os.is_open() )
      return false;
      os.write(reinterpret_cast(arr), std::streamsize(length*sizeof(int)));
      os.close();
      return true;
      }

      void print_array(int arr[])
      {
      std::cout << "\n==========================\n";
      for (size_t i=0 ; i< MAX_LEN ; i++)
      {
      std::cout << arr[i] << "\t";
      if (i%7 == 0)
      {
      std::cout << std::endl;
      }
      }
      std::cout << "\n==========================\n";
      }

      void fill_array(int arr[])
      {
      for (size_t i=0 ; i< MAX_LEN ; i++)
      arr[i] = int(rand());
      }

  6. Федерація ковзанярського спорту вирішилась на незвичайний експеримент. Тепер на костюмах спортсменів замість стартових номерів будуть написані стартові рядки. Планується, що цео підвищить видовищність змагань. Тим бвльше що рядки планується генерувати випадковим чином.

    Формально генерація рядка виглядає наступним чином. Рядок визначається послідованістю випадкових символів. Кожен символ генерується незалежно з N перших літер латинського алфавіту з однаковою ймовірністю і додається у кінець існуючого рядка. Символ додається до рядка до тих пір, доки у рядку не зустрінеться у якостві підрядка один із заданих шаблонів.

    Необхідно знайти математичне очікування довжини сгенерованого рядка.

    Вхідні дані

    У першому рядку записані числа N і M (1 ≤ N ≤ 8, 1 ≤ M ≤ 10). N – кількість використовуваних літер у алфавіті. M – кількість шаблонів. Далі записано M рядків, які містять шаблони, що складаються з N перших літер алфавіту. Довжина шаблонів не перевищує 10.

    Вихідні дані

    Виведіть математичне очікування довжини рядка з точністю два знаки після десяткової крапки.

  7. У деякій школі у кожного школяра є свій особистий номер ICQ. У школі поширена думка, що чим менше значення номера ICQ, тим більш “продвинутим” є школяр. Відомо список всіх школярів з номерами ICQ. Потрібно вивести список K самих “продвинутих” школярів.

    Вхідні дані
    У першому рядку міститься кількість учнів у школі N (1 ≤ N ≤ 100) і число K (1 ≤ K ≤ N). Далі йде N рядків, у кожному рядку міститься прізвище школяра (без пропусків, містить не більше 20 рядкових латинських букв) і через пропуск номер ICQ (1 ≤ ICQ ≤ 109). Номера ICQ і прізвища у школярів різні.

    Вихідні дані
    Вивести прізвища K самих “продвинутих” школярів у лексикографічному порядку (за алфавітом). Кожне прізвище виводиться в окремому рядку.

    Приклади
    Нижче ви знайдете приклади вхідних даних та відповідей, які має вивести ваша програма.

залишити коментар

Ваша електронна адреса не буде опублікований. Обов'язкові поля позначені * *