Форум программистов, компьютерный форум CyberForum.ru

Слишком сложный код программы, ничего не понимаю( - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
Glebordan
0 / 0 / 0
Регистрация: 07.04.2014
Сообщений: 36
30.05.2014, 21:14     Слишком сложный код программы, ничего не понимаю( #1
Я искал код по этому заданию:
"Имеется картографическая информация, представляющая собой серии пар целых
чисел. Диапазон величин этих чисел 0-32737, т.е. для их размещения
достаточно описания short. Каждая серия - это множество прямоугольных
координат точек картографических объектов, например, рек, озер, домов и т.д.
Принято называть такую серию точек, приближенно описывающих географический
объект, МЕТРИКОЙ объекта.
Есть двоичный файл, в котором содержатся метрики объектов. Объекты
пронумерованы произвольными целыми номерами в возрастающем порядке.
Файл имеет следующую структуру."
Вот так вот, код то я нашёл, но очень важно знать как всё работает, т.к. интересно и важно для обучения языку.
Вот сам код:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cyr_io.h"
 
void add(void)
{
        FILE    *File;
        char myfile[50];
        short   Iter=0;
        short   Temp=0;
        short   CoordX=0;
        short CoordY=0;
        short   SumObj=0; //Коллличество объектов уже записанных в файле
        short NPoint=0; // Количество точек в метрике объекта
// Открываем файл на чтение, чтобы проверить его на наличие и количество записаных объектов
        rprintf("Введите имя файла\n");
        gets(myfile);
        if((File=fopen(myfile,"rb"))!=NULL)
        {
            while(!feof(File))
            {
                fread(&Temp,sizeof(short),1,File);
                if(Temp=='\n')  SumObj++;
            }
            SumObj--;
            fclose(File);
        }
 
        if(SumObj==0)
        {
            File=fopen(myfile,"wb");
        }
        else
        {
            File=fopen(myfile,"ab");
        }
 
        SumObj++;
        fwrite(&SumObj,sizeof(short),1,File);
 
    rprintf("Введите количество точек в метрике объекта:");
    scanf("%d",&NPoint);
        fwrite(&NPoint,sizeof(short),1,File);
 
        for(Iter=0;Iter<NPoint;++Iter)
        {
            rprintf("Введите X координат объекта:");
            scanf("%d",&CoordX);
            rprintf("Введите Y координату объекта:");
            scanf("%d",&CoordY);
            fwrite(&CoordX,sizeof(short),1,File);
            fwrite(&CoordY,sizeof(short),1,File);
        }
        Temp='\n';
        fwrite(&Temp,sizeof(short),1,File);
 
        fclose(File);
    getchar();
}
 
void view(void)
{
    FILE    *File;
    short   NPoint=0;//Количество точек в метрике объекта
    char myfile[50];
    short   NObj=0;// № объекта
    short   SumObj=0;// Количество объектов уже записаных в файе
    short   Iter=0;
    short   Temp=0;
// Открываем файл на чтение, чтобы проверить его наличие и количество записаных объектов
        rprintf("Введите имя файла\n");
        gets(myfile);
    if((File=fopen(myfile,"rb"))!=NULL)
    {
        while(!feof(File))
        {
            fread(&Temp,sizeof(short),1,File);
            if(Temp=='\n')  SumObj++;
        }
 
        SumObj--;
 
        fclose(File);
    }
    else
    {
        rprintf("Файл с метриками отсутствует !");
        return;
    }
 
    do
    {
        rprintf("Введите номер объекта:");
        scanf("%d", &NObj);
    }   while(NObj<1 || NObj>SumObj);
 
    File=fopen(myfile,"rb");
    while(!feof(File))
    {
        fread(&Temp,sizeof(short),1,File);
        if(Temp==NObj)
        {
            fread(&NPoint,sizeof(short),1,File);
            for(Iter=0;Iter<NPoint;++Iter)
            {
                fread(&Temp,sizeof(short),1,File);
                rprintf("Координата X: %2d, ",Temp);
                //CoordObj1[0][Iter]=Temp;
                fread(&Temp,sizeof(short),1,File);
                rprintf("Координата Y: %2d\n, ",Temp);
                //CoordObg1[1]=Temp;
            }
        }
        do
        {
            fread(&Temp,sizeof(short),1,File);
        } while(Temp !='\n');
    }
    fclose(File);
}
int menu_select(void)
{
    char str[2],pos;
 
    printf("\n");
    rprintf("1. Добавить объект в картограф.\t");
    rprintf("2. Вывести метрику объекта.\t");
    rprintf("3. Выход");
 
    do
    {
        rprintf("\n Введите номер нужного пункта:");
        gets(str);
        pos=atoi(str);
    } while(pos<0 || pos>3);
    return pos;
}
 
void main(void)
{
    char select;
    system("cls");
    for(;;)
    {
        select=menu_select();
        switch(select)
        {
        case 1: add(); break;
        case 2: view(); break;
        case 3: exit(0); break;
        default: break;
        }
    }
}
Если нужен файл "cur_io", пишите в личку.
Хочу узнать в каком файле он сохраняет метрики? Как его можно поменять?
Я так понял для корректной работы файл "cur_io" нужно поместить в нужную папку, но в какую?
Буду очень благодарен если вкратце получится объяснить ,что выполняет каждый блок программы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2014, 21:14     Слишком сложный код программы, ничего не понимаю(
Посмотрите здесь:

C++ Слишком большие программы!
C++ Ничего не понимаю в языках программирования но хочу создать свою программу.
C++ Не понимаю суть программы с массивами
C++ не совсем понимаю код *указатели
C++ не понимаю код
посоветуйте - сложный ли код C++
C++ Выручайте! Нужно переделать прогу под двусвязный список.ничего не понимаю)
простенькие задачи нубу, ничего в этом не понимаю =( C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.05.2014, 21:17     Слишком сложный код программы, ничего не понимаю( #2
Цитата Сообщение от Glebordan Посмотреть сообщение
Я так понял для корректной работы файл "cur_io" нужно поместить в нужную папку, но в какую?
Что за файл? Этот?
Цитата Сообщение от Glebordan Посмотреть сообщение
Есть двоичный файл, в котором содержатся метрики объектов.
Glebordan
0 / 0 / 0
Регистрация: 07.04.2014
Сообщений: 36
30.05.2014, 21:36  [ТС]     Слишком сложный код программы, ничего не понимаю( #3
Я вот и не понимаю, ведь пользователь сам вводит имя файла в котором будут сохраняться метрики, зачем нам нужен этот файл?
Yandex
Объявления
30.05.2014, 21:36     Слишком сложный код программы, ничего не понимаю(
Ответ Создать тему
Опции темы

Текущее время: 13:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru