понедельник, 23 сентября 2019 г.

115 группа. Язык программирования C++

Отчеты по лабораторным работам оформите по шаблону
  • Перейти. Шаблон отчета к лабораторной работе.
Ссылку на папку Google диска или репозиторий GitHub опубликуйте в комментариях к блогу
Например, репозиторий GitHub:
https://github.com/HIKAMURACHI/Stepik-Linux-C-
Олимпиада НТИ
Принять приглашение наставника

Лабораторная работа 13
1. Найти сумму элементов массива вещественных чисел, имеющих нечетные номера.
2. Вычислить, сколько раз введенное с клавиатуры число встречается в массиве.
3. Найти произведение всех элементов массива целых чисел, меньших 0.
4. В одномерном массиве поменять местами наибольший и наименьший элементы.
5. В заданном числовом массиве найти среднее арифметическое положительных чисел, среднее арифметическое отрицательных чисел и число нулей.
6. Заполнить массив числами 0, 1, 2, 3 в случайном порядке. Вывести массив на экран.
7. Первый массив заполнен числами 0, 1, 2, 3 в случайном порядке. Заполнить второй массив по следующему правилу: числа, стоящие на i-м месте 1-го и 2-го массивов должны образовывать пары вида: (0, 2), (2, 0), (1, 3), (3, 1).
6. Диалог с пользователем. Программа состоит из рабочего цикла, в котором с каждым шагом выводится счетчик шага цикла на экран и в текстовый файл и запрос на продолжение работы программы. При отрицательном ответе пользователя программа завершает работу. При следующем запуске программы начальное значение счетчика запрашивается из файла.
Лабораторная работа 14
1. Написать программу-тренажер на знание таблицы умножения.
2. Составить программу, оценивающую знание закона Ома: вводятся значения двух параметров (например, напряжение и сопротивление), ожидается ввод ответа (например, сила тока), проверяется правильность ответа.
3. Составить программу решения неравенства ах^2+bх+c>0 (а<>0).
4. Оценить по заданным значениям сторон, является ли треугольник равносторонним.
5. Составить программу решения квадратного уравнения ax2+bx+c=0.
6. Диалог с пользователем. Программа состоит из рабочего цикла, в котором с каждым шагом выводится счетчик шага цикла на экран и в текстовый файл и запрос на продолжение работы программы. При отрицательном ответе пользователя программа завершает работу. При следующем запуске программы начальное значение счетчика запрашивается из файла.
Лабораторная работа 15
1. Создайте программную систему взаимодействия 2 процессов с помощью общего файла. Каждый процесс - отдельный исполняемый модуль, запущенный в своем окне. Один процесс запрашивает ввод числа с клавиатуры, записывает его файл, а второй процесс выводит в своем окне это число на экран. Затем в обратном направлении - второй запрашивает число, а первый - выводит. В каждом модуле выполняется рабочий цикл, в котором после каждого действия выполняется запрос пользователя на выход из программы.
2. Создайте программную систему взаимодействия 4 процессов с помощью общего файла. Система выполняет суммирование двух чисел и вывод результата. Каждый процесс - отдельный исполняемый модуль.
Лабораторная работа 16
1. Программа создает текстовый файл index.htm, который содержит HTML-код web-страницы.
<html>
  <head>
  </head>
  <body>
    <h1>First header</h1>
    <h2>Second header</h3>
    <h3>Thirt header</h3>
  </body>
</html>
2. Программа читает из конфигурационного текстового файла config.txt свойства web-страницы, например цвет заголовка и создает файл index.htm.
3. Различные параметры web-страницы хранятся в разных конфигурационных файлах config1.txt, config2.txt, config3.txt. Одина из конфигураций передается через параметры командной строки в программу, которая по этим параметрам создает файл index.htm.
4. Для решения предыдущей задачи используйте формат данных ключ-значение.
Лабораторная работа 17
1. Создайте программу, которая моделирует конечный автомат, который может находиться в 3-х состояниях и переходит из одного в другое по таймеру. В 1-м состоянии автомат находится t1 = 2 секунды, во 2-м - t2 = 9 секунд, в 3-м - t3 = 4 секунды. В каждом из состояний выводится "мигающее" сообщение: First State, Second State, Third State. Протестируйте свою программу с другими интервалами времени.
Пример 1
#include <iostream>
#include <time.h>
using namespace std;

int main() {
  cout << "test22timer" << endl;
  unsigned long int t1, t2, dt;
  t1 = time(NULL);
  /*
  
  for (int i = 0; i <1000; i++) {
    t1 = time(NULL);
    cout << t1 << endl;
  }
  */
  t2 = t1;
  dt = 5;
  cout << t2 << endl;
  while (t2 - t1 < dt) {
    t2 = time(NULL);  
    //cout << t2 << endl;
  }
  cout << t2 << endl;
  cin.get();
  return 0;
}
2. Измените программу из 1-й задачи так, чтобы она могла определять временные интервалы с точностью до миллисекунды. Примеры:
http://www.cyberforum.ru/cpp-beginners/thread1149197.html
Таймер c++
http://blablacode.ru/programmirovanie/177
Таймер на C++ (ctime)
#include 
#include    // для работы со временем
using namespace std;
...
void how2timer(int ms) {
    int CLOCKS_PER_MSEC = CLOCKS_PER_SEC / 1000;   /// новая константа 
       /* выведем константы "для наглядности" */
    cout << "CLOCKS_PER_SEC: " << CLOCKS_PER_SEC << endl;
    cout << "CLOCKS_PER_MSEC: " << CLOCKS_PER_MSEC << endl;
    clock_t end_time = clock() + ms * CLOCKS_PER_MSEC ;  // время завершения 
    while (clock() < end_time) {}  // цикл ожидания времени 
    cout << "Время вышло!!!\n";  // сообщение о конце работы функции
}
int main (){
    how2timer(5000);  // 5 секунд
    return 0;
}
3. Измените программу из 1-й задачи так, чтобы она брала интервалы времени были из файла config.txt. Скорость "мерцания" сообщения должна постепенно увеличиваться от начала текущего состояния до его завершения.
4. Напишите программу, которая реализует "наивный" алгоритм файлового архива. В параметрах командной строки указаны текстовые файлы, которые нужно заархивировать, в файле config.txt - имя файла-архива. Данные из исходных файлов записываются друг за другом в файл-архив.
Пример 2
#include <iostream>
#include <fstream>
#include <sstream>
#include <stdlib.h>
//#include <string>

using namespace std;

int main(int argc, char *argv[]) {
  int i = 0;
  string strExt = ".txt";
  string strFileName = "";
  ifstream fIn;
  ofstream fOut;
  string s;
  cout << "test004arj" << endl;
  cout << "argc = " << argc << endl;
  for (i = 1; i < argc; i++) {
    cout << "argv[" << i << "] = " << argv[i] << endl;
    strFileName = argv[i] + strExt;
    const char *cNameFile;
    cNameFile = strFileName.c_str();
    cout << "cNameFile = " << cNameFile << endl;
    fIn.open(cNameFile);
    getline(fIn, s);
    cout << "s = " << s << endl;
/*
    while (getline(fIn, s)) {
      cout << "i = " << i << endl;
      cout << "s = " << s << endl;
      i++;
    }
*/
    fIn.close();
  }
//  stringstream ss;
//  ss << argv[1];
//  fIn.open("1.txt");
  cin.get();

  return 0;
}

4 комментария: