1

(15 відповідей, залишених у Обговорення)

Я зрозуміла в чому діло. Просто я компілювала в Dev C++. А ви в Visual Studio. Тому в мене вибиває помилку. Дуже дякую за допомогу!!!

LoganRoss написав:
diana.ma3007 написав:

Що може означати ця помилка?)

Ця помилка означає, що ви не вмієте створювати проекти і підключати існуючі файли.

Код правильний

https://s8.сайт-злодій/uploads/images/2017/06/3b3e96c50067c11307c0094fbfe37d35.png

2

(15 відповідей, залишених у Обговорення)

Що може означати ця помилка?)

LoganRoss написав:

Насмілюся припустити, що цей код робили не ви, оскільки там є кілька дрібних помилок і код не компілюється.
Але я сьогодні маю трохи вільного часу, тому...

Structura.h
// Structura.h > struct declaration
#ifndef STRUCTURA_H
#define STRUCTURA_H
#include <iostream>

struct structura
{                       
    char namemark[124]; 
    char namephone[124];
    int price;          
};

#endif // !STRUCTURA_H
IO_operation.h
// IO_Operation.h > functions declaration
#ifndef IO_OPERATION_H
#define IO_OPERATION_H
#include <iostream>
#include "Structura.h"

using namespace std;

void write(structura& telephone, char* filename);
void read(structura& telephone, char* filename);
void rewrite(structura& telephone, char* filename);
void searh(structura& telephone, char* filename);
void delet(structura& telephone, char* filename);
void sort(structura& telephone, char* filename);

#endif // !IO_OPERATION_H
IO_Operation.cpp
// IO_Operation.cpp > definition of functions placed in IO_Operation.h
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cstring>
#include "IO_operation.h"

using namespace std;


void write(structura& telephone, char* filename)
{
    int n;
    cout << "Enter quality records : ";   //питаємося скільки телефонів вписати за 1 раз
    cin >> n;                              //вписуємо число
    ofstream diana(filename, ios::app | ios::binary);  //створюємо об'єкт для запису в файл
    for (int i = 0; i<n; i++) {         //цикл
        cout << "Enter namemark ";        //вписуємо назву марки телефону
        cin >> telephone.namemark;
        cout << "Enter namephone ";       //назву телефону
        cin >> telephone.namephone;
        cout << "Enter price ";      //його ціна
        cin >> telephone.price;
        diana.write((char*)&telephone, sizeof(structura));    //записує дані в кінець файлу як структуру
    }
    diana.close();  //закриває файл
}

void read(structura& telephone, char* filename)
{
    ifstream diana(filename, ios::binary);   //створюємо об'єкт для читання з нього
    int p = 0;
    while (diana.read((char*)&telephone, sizeof(structura))) {        //поки є дані в файлі працює цикл який виводить ці дані
        cout << p + 1 << ") " << setiosflags(ios::left) << setw(15) << telephone.namemark << setw(15) << telephone.namephone << setw(15) << telephone.price << endl;
        p++;
    }
    diana.close(); //закриваємо файл
}

void rewrite(structura& telephone, char* filename)
{
    int n = 0;
    int change;
    structura buff;
    ifstream diana(filename, ios::binary); //з нашого файлу ми будем зчитувати дані 
    ofstream dianaNew("prom.txt", ios::binary | ios::app); //і створюємо новий файл куди перепишемо всі дані з першого, але з відредагуванням
    cout << "Vvedit nomer dlya zminu : ";
    cin >> change;
    while (diana.read((char*)&telephone, sizeof(structura))) {     //то саме шо і в підпрограмі для запису телефону, просто заново вводимо дані
        if (change - 1 == n) {
            cout << "New namemark : ";
            cin >> buff.namemark;
            cout << "New namephone : ";
            cin >> buff.namephone;
            cout << "New price : ";
            cin >> buff.price;
            dianaNew.write((char*)&buff, sizeof(structura));
            n++;
        }
        else {
            dianaNew.write((char*)&telephone, sizeof(structura));
            n++;
        }
    }
    diana.close();       //закриваємо наші файли
    dianaNew.close();
    std::remove(filename);    //старий видаляємо
    std::rename("prom.txt", filename);   //новий переіменовуємо як старий
}

void searh(structura& telephone, char* filename)
{
    char enternamemark[124];
    char enternamephone[124];
    int number;
    int enterprice;
    cout << "On what criteria you want to search\n\t1. namemark\n\t2. namephone\n\t3. price\n\t\tEnter number : ";
    cin >> number;   //вибираємо по чому ми хочемо шукати
    switch (number) {   //далі вводимо те що вибрали
    case 1: {
        cout << "Enter namemark : ";
        cin >> enternamemark;
        break;
    }
    case 2: {
        cout << "Enter namephone : ";
        cin >> enternamephone;
        break;
    }
    case 3: {
        cout << "Enter price : ";
        cin >> enterprice;
        break;
    }
    default: {      //якщо ми щось погано ввели то вибиває - помилка
        cout << "Error enter !!!";
        break;
    }
    }
    ifstream diana(filename, ios::binary);
    while (diana.read((char *)&telephone, sizeof(telephone))) {  //відкриваємо файл і проводимо пошук
        switch (number) {
        case 1: {
            if (strcmp(enternamemark, telephone.namemark) == 0) {  //якщо є співпадіння то виводимо на екран
                cout << setiosflags(ios::left) << setw(15) << telephone.namemark << setw(15) << telephone.namephone << setw(15) << telephone.price << endl;
            }
            break;
        }
        case 2: {
            if (strcmp(enternamephone, telephone.namephone) == 0) {
                cout << setiosflags(ios::left) << setw(15) << telephone.namemark << setw(15) << telephone.namephone << setw(15) << telephone.price << endl;
            }
            break;
        }
        case 3: {
            if (enterprice == telephone.price) {
                cout << setiosflags(ios::left) << setw(15) << telephone.namemark << setw(15) << telephone.namephone << setw(15) << telephone.price << endl;
            }
            break;
        }
        default: {
            cout << "Error !!!" << endl;
            break;
        }
        }
    }
    diana.close();
}

void delet(structura& telephone, char* filename)
{
    int n = 0;    //працює так само як і редагування тільки записує в новий файл всі дані крім видаленого елементу
    int change;
    ifstream diana(filename, ios::binary);
    ofstream dianaNew("prom.txt", ios::binary | ios::app);
    cout << "Vvedit nomer dlya zminu : ";
    cin >> change;
    while (diana.read((char*)&telephone, sizeof(structura))) {
        if (change - 1 == n) {
            cout << setiosflags(ios::left) << setw(15) << telephone.namemark << setw(15) << telephone.namephone << setw(15) << telephone.price << endl;
            n++;
        }
        else {
            dianaNew.write((char*)&telephone, sizeof(structura));
            n++;
        }
    }
    diana.close();
    dianaNew.close();
    std::remove(filename);
    std::rename("prom.txt", filename);
}

void sort(structura& telephone, char* filename)
{
    int choice;
    int n = 0;
    structura peo[124];
    cout << "Sort : \n\t1. namemark\n\t2. namephone\n\t3. price\n\t\tEnter choice : ";
    cin >> choice;   //вибираємо по чому сортуємо
    ifstream diana(filename, ios::binary);
    ofstream dianaNew("prom.txt", ios::binary | ios::app);
    while (diana.read((char*)&peo[n], sizeof(structura))) {
        n++;
    }
    switch (choice) {   //в залежності що вибрали по тому і сортуємо
    case 1: for (int i = 0; i<n; i++) {   //тут марка
        for (int j = 0; j<n - 1; j++) {
            if (strcmp(peo[j].namemark, peo[j + 1].namemark) >0) {  //strcmp порівнює числові коди строк
                telephone = peo[j + 1];                                 //класичне сортування методом бульбашки
                peo[j + 1] = peo[j];
                peo[j] = telephone;
            }
        }
    }
            for (int i = 0; i<n; i++) {
                dianaNew.write((char*)&peo[i], sizeof(structura));
            }
            break;
    case 2: for (int i = 0; i<n; i++) {           //тут то саме для назви телефону
        for (int j = 0; j<n - 1; j++) {
            if (strcmp(peo[j].namephone, peo[j + 1].namephone) >0) {
                telephone = peo[j + 1];
                peo[j + 1] = peo[j];
                peo[j] = telephone;
            }
        }
    }
            for (int i = 0; i<n; i++) {
                dianaNew.write((char*)&peo[i], sizeof(structura));
            }
            break;
    case 3:
        for (int i = 0; i<n; i++) {           //а тут для його ціни
            for (int j = 0; j<n - 1; j++) {
                if (peo[j].price > peo[j + 1].price) {
                    telephone = peo[j + 1];
                    peo[j + 1] = peo[j];
                    peo[j] = telephone;
                }
            }
        }
        for (int i = 0; i<n; i++) {
            dianaNew.write((char*)&peo[i], sizeof(structura));
        }
        break;
    default: cout << "Error !!!";
    }
    diana.close();
    dianaNew.close();
    std::remove(filename);
    std::rename("prom.txt", filename);
}
main
#include <iostream>
#include "IO_operation.h"

using namespace std;



int main() {
    int choice;
    structura telephone;
    char* filename = new char[25];
    cout << "Enter the name of file to work: ";
    cin >> filename;
    while (true) {
        cout << "1. Write\n2. Read\n3. Rewrite\n4. Search\n5. Delete record\n6. Sort file\n\tEnter your choice : ";  //наше меню
        cin >> choice;                       //тут ми вводим з клавіатури номер який хочемо
        switch (choice) {
        case 1:   write(telephone, filename);                        break;   //тут перечисляються можливі варіанти
        case 2:   read(telephone, filename);                         break;
        case 3:   rewrite(telephone, filename);                      break;
        case 4:   searh(telephone, filename);                        break;
        case 5:   delet(telephone, filename);                        break;
        case 6:   sort(telephone, filename);                         break;
        default:   cout << "Error !!! " << endl;   break;
        }
    }
    delete[] filename;
    filename = 0;
    return 0;
}

3

(15 відповідей, залишених у Обговорення)

:D З нервів все повидаляла. Зараз тільки ту програму на компі маю і все.

/KIT\ написав:

Покажіть як розділяли

4

(15 відповідей, залишених у Обговорення)

Просто для мене було легше написати такий код,аніж розділений на модулі. А викладач вимагає розділити.
Чесно, вже передивилась купу відео,перечитала багато літератури. Пробувала розділяти, але вибиває помилку.
Тому прошу у вас допомоги, бо дійсно не знаю як зробити це((

P.Y. написав:

А чому не раді в даному випадку? Технічно, власні напрацювання в дівчини є (див. код — хто б іще дав таке ім'я змінній? :) ), тож пункт 3.5 не порушено.

Поділ програми на модулі — питання більш філософське, ніж алгоритмічне. Технічно, звичайно, функції можна порозкидати по модулях як-завгодно (наприклад, усі службові функції — в один модуль, main — у другий, і не забути зробити спільний інклуд-файл з описами типів та заголовками функцій), але чому саме так, а не інакше... По ідеї, в модулі виноситься функціонал, який можна буде використати в іншій програмі (але в якій?).

5

(15 відповідей, залишених у Обговорення)

Тут програма

6

(15 відповідей, залишених у Обговорення)

Будь ласка, допоможіть мені розділити цю програму на модулі.
Дуже потрібно))