- •Insert Project Into Workspace..
- •VisualComponentManager
- •Типи майстрів проектів
- •Void cLab_04 1Dlg::OnDel()
- •Void cLab 04 1Dlg::OnOptimum()
- •Int NumCars; //Количество автомобілів
- •Void cLab 04 1Dlg::OnOpen()
- •Void cLab_06Dlg::OnReplace(nmhdr* pNmhdr, lresult* pResult)
- •1.2. Функції бібліотеки math.Lib
- •Робота №1 Програмування лінійних алгоритмів
- •1.4. Індивідуальні завдання
- •Работа №2 Програмування алгоритмів, що розгалужуються
- •2.1. Логічні операції і операції порівняння
- •3.5. Приклад виконання роботи
- •4.3. Індивідуальні завдання
- •5.2. Операції над покажчиками
- •5.5. Індивідуальні завдання
- •Int strlen(st) – повертає довжину рядка st.
- •Int atoi(st) – перетворить рядок st в число цілого типа (int).
- •Return вираження;
- •8.2. Передача параметрів
- •8.3. Перевантаження функцій і покажчик на функцію
- •Hanr(n-1,s1,s3,s2);
- •Hanr(n-1,s3,s2,s1);
- •9.3. Індивідуальні завдання
- •Робота №10 Програмування з використанням файлів
- •10.1. Організація роботи з файлами
- •I або I ( десяткове, вісімкове або шістнадцятиричне ціле;
- •Void s_qs(tStudent st[], int n)
- •11.3. Індивідуальні завдання
- •Робота №15 Програмування з використанням двусвязанных списків
- •15.1. Черги на основі двусвязанных списків
- •Методика оцінювання робіт студентів
- •Литература
Void cLab_04 1Dlg::OnDel()
{
Garage Mas[10]; //Объявить масив для тимчасового зберігання даних int x = m lbGarage.GetCurSel(); //Получить поз. курсора в списку for (int i = 0; i < NumCars; i++) Mas[i]= car[i]; if (NumCars > 0) NumCars--; //Уменьшить к-ть автомобілів
for (i = 0; i < NumCars; i++) //Удалить соотв. запис з if (i < x) car[i]= Mas[i]; //массива даних else car[i]= Mas[i + 1]; m_lbGarage.DeleteString(x); //Удалить соотв.
m_lbResult.DeleteString(x); //строки із списків
if (NumCars > 0) //Если в списку залишилися рядки
{
m_lbGarage.SetCurSel(NumCars - 1); //Установить курсор на m_lbResult.SetCurSel(NumCars - 1); //последнюю рядок CLab_04_1Dlg::OnGarage(); //Обновить дані на екрані
};
}
Додамо два прапорці: ВСТАНОВИТИ ВАГУ ВАНТАЖУ ДЛЯ ВСІХ (m_cbWeight) і ВСТАНОВИТИ ВІДСТАНЬ ДЛЯ ВСІХ (m_cbWay). Якщо який-небудь з цих прапорців встановлений, то при записі даних відповідно вага вантажу або відстань будуть встановлена однаковими для всіх автомобілів. Додамо обробник для кнопки ЗАПАМ'ЯТАТИ:
void CLab 04 1Dlg::OnSave()
{
int x = m lbGarage.GetCurSel(); //Получить поз. курсора в сп. UpdateData(1); //Получить дані
car[x].Litres = m_edLitres; car[x].Price = m_edPrice; car[x].Tonnage = m_edTonnage;
if (m cbWay == 0) car[x].Way = m_edWay; else
for (int i = 0; i < NumCars; i++) car[i].Way = m_edWay; if (m_cbWeight == 0) car[x].Weight = m_edWeight; else
for (int i = 0; i < NumCars; i++) car[i].Weight = m edWeight; for (int i = 0; i < NumCars; i++)
{
m_lbGarage.SetCurSel(i); //Установить поз. курсора в сп.
CLab 04 1Dlg::OnGarage(); //Обновить списки і выч. кол. поїздок UpdateData(0); //Обновить дані
}
m_lbGarage.SetCurSel(x); //Вернуться до поточної поз. курсора CLab_04_1Dlg::OnGarage(); //Обновить списки і выч. кол. поїздок
}
Тут ми записуємо дані в масиви, потім заново проводимо всі обчислення і оновлюємо екран.
Додамо кнопку ОПТИМАЛЬНИЙ ВАРІАНТ. У обробнику буде код:
Void cLab 04 1Dlg::OnOptimum()
{
for (int i = 0; i < NumCars; i++)
{
m_lbGarage.SetCurSel(i); //Установить поз. курсора в сп.
CLab 04 1Dlg::OnGarage(); //Обновить списки і выч. кол. поїздок UpdateData(0); //Обновить дані
}
if (NumCars > 0)
{
CString st;
m_lbResult.GetText(0, st); //Получить перший елемент списку Result = atof(st); //и перетворити його в число
int j = 0; float n;
for (i = 1; i < NumCars; i++) //Найти найменшу вартість {
m_lbResult.GetText(i, st); //Получить елемент списку n = atof(st); //и перетворити його в число
if ( n < Result) //Если він менше отриманого раніше
{
Result = n; j = i;
}
}
m_lbGarage.GetText(j, st); //Получить авт-ль, соотв. наим. стоїмо. st = "Оптимальний варіант - автомобіль " + st;
AfxMessageBox(st); //Вывести повідомлення
}
}
Тут ми знаходимо найменше значення в списку вартостей поїздок і виводимо повідомлення з назвою автомобіля, який відповідає найменшій вартості. Результат на малюнку:


Робота № 5
Робота з файлами в VC++. Використання файлів для зберігання даних.
Мета роботи:
Вивчити прийоми роботи з файлами і способи створення файлів. Отримати практичні навики по використанню файлів для зберігання інформації.
-
Створіть застосування за допомогою MFС AppWizard (exe), з діалоговим вікном як головне. Використовувати вирішену в лабораторній роботі № 4 завдання, додавши в неї можливість запису внесених до структури даних у файл на диску і можливість в подальшому записати дані з файлу в структуру
-
Удосконалити отриману в першому пункті програму, додавши режим вибору файлу в стандартному діалозі Windows
-
Удосконалити отриману програму додавши до кнопок ОК і Cancel Програмний код що нагадує про можливість збереження даних на диску
Підемо тим же дорогою, що і лабораторній роботі № 4, тобто виконаємо всі завдання в одній програмі. Спершу додамо в структуру ще два елементи:
