Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
Glebordan
0 / 0 / 0
Регистрация: 07.04.2014
Сообщений: 37
#1

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

30.05.2014, 21:14. Просмотров 3739. Ответов 2
Метки нет (Все метки)

Я искал код по этому заданию:
"Имеется картографическая информация, представляющая собой серии пар целых
чисел. Диапазон величин этих чисел 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" нужно поместить в нужную папку, но в какую?
Буду очень благодарен если вкратце получится объяснить ,что выполняет каждый блок программы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2014, 21:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Слишком сложный код программы, ничего не понимаю( (C++):

Хочу разбить код на функции, но ничего в них не понимаю - C++
Задача: написать ввод и вывод в отдельных функциях. #include &lt;iostream&gt; using namespace std; int main() { int a; ...

Почему я ничего не понимаю в C++? - C++
Я пол года изучаю этот язык и ничего не понимаю, выезжаю за счёт вопросов на киберфоруме, вот допустим я вчера что-то учил, а сегодня(!)...

Не всё записывается в файл. Ничего не понимаю - C++
Здравствуйте. У меня появилась такая проблема: нужно записать в один файл данные из двух функций. Казалось бы, что ничего сложного. Но вот...

Ничего не понимаю в языках программирования но хочу создать свою программу. - C++
Помогите плз!:scratch:

Выручайте! Нужно переделать прогу под двусвязный список.ничего не понимаю) - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; struct Node { int memSize; Node *Next; }; Node *BegList; using namespace...

посоветуйте - сложный ли код - C++
Допустим имеем текстовый файл .txt необходимо просчитать сколько существует пар слов в тексте, таких, что 1 слово из пары начинается с...

2
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.05.2014, 21:17 #2
Цитата Сообщение от Glebordan Посмотреть сообщение
Я так понял для корректной работы файл "cur_io" нужно поместить в нужную папку, но в какую?
Что за файл? Этот?
Цитата Сообщение от Glebordan Посмотреть сообщение
Есть двоичный файл, в котором содержатся метрики объектов.
0
Glebordan
0 / 0 / 0
Регистрация: 07.04.2014
Сообщений: 37
30.05.2014, 21:36  [ТС] #3
Я вот и не понимаю, ведь пользователь сам вводит имя файла в котором будут сохраняться метрики, зачем нам нужен этот файл?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2014, 21:36
Привет! Вот еще темы с ответами:

Слишком большие программы! - C++
Я начинаю писать консольные приложения на Dev C++. Компилирую. Я раньше не смотрел на размер, а сейчас увидел, что он больше 400 Кб!!! и...

Не понимаю текста программы. Что будет напечатано в результате программы? И что вообще происходит в программе? - C++
class B { int x; B (int a=0) { x = a; cout « 1; } -B () { cout « 3; } }; class D : B { D (int d ) : B (d) {...

не понимаю код - C++
прокоментируйте пожалуйста код, я совсем не понимаю что здесь написано или переправьте на более простой само условие: &quot;Задан текст. ...

Не понимаю, как работает код? - C++
int main(int argc, char** argv) //кол-во аргументов, указатель на массив указателей на сами аргументы. { setlocale( LC_ALL ,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru