43661

Обработка динамических списков

Курсовая

Информатика, кибернетика и программирование

Метод нисходящего проектирования (сверху-вниз) предполагает последовательное разложение общей функции обработки данных на простые функциональные элементы. В результате строится иерархическая схема, отражающая состав и взаимоподчиненность отдельных функций.

Русский

2013-11-04

306.65 KB

32 чел.

ПЕНЗЕНСКАЯ ГОСУДАРСТВЕННАЯ ТЕХНОЛОГИЧЕСКАЯ АКАДЕМИЯ

                        Факультет ИПТ                          Кафедра ВМиС

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

К КУРСОВОЙ РАБОТЕ ПО ДИСЦИПЛИНЕ  “АЯиП”

На тему: “Обработка динамических списков”

                                                                                 Выполнил студент гр. 10В2 Пономарёв К.А..

                                                                Руководитель: Кутепова  Л.А.     

Проект защищён с оценкой:_____________

2011-2012 уч. Год

З А Д А Н И Е

на курсовое проектирование по курсу

  «Алгоритмические языки и программирование»           

Студенту  Пономарёву К.А.      Группа 10В2           

Тема проекта Создание и обработка динамического списка            

                   

                   

Исходные данные (технические требования на проектирование)

Разработать программу для формирования и редактирования однонаправленного
динамического списка с использованием интерфейса пользователя типа «горизонтальное
меню с выбором по функциональной клавише».              

Программа должна выполнять следующие функции:            

1) создавать динамический список и заполнять поля данных элементов динамического
списка данными из текстового файла;               

2) выводить данные динамического списка в файл в виде таблицы;           

3) производить добавление элемента в начало списка;             

4) производить удаление элемента с заданным номером;            

5) производить обмен местами элементов с заданными ключами.           

Предметная область элементов динамического списка – «планеты солнечной системы». Запись должна содержать не менее 4-х информационных полей.             

При разработке программы использовать заголовочные файлы пользователя ________          _______________________________________________  

                   

                   

                   

                   

                   

                   

                   

                   

                   

                   

                   

Объем работы по курсу

1. Расчетная часть

Отсутствует                  

                   

                   

                   

                   

                   

                   

                   

                   

                   

                   

2. Графическая часть

Схема программы                 

                   

                   

                   

                   

                   

                   

                   

3. Экспериментальная часть

Разработка, отладка и тестирование программы             

                   

                   

                   

                   

                   

                   

                   

Срок выполнения проекта по разделам

1. Постановка задачи     к  20 сентября   2011 г.

2. Метод решения задачи и ее формализация  к  27 сентября   2011 г.

3. Выбор языка программирования   к  04 октября   2011 г.

4. Разработка состава и структуры данных  к  04 октября   2011 г.

5. Разработка алгоритма решения задачи   к  18 октября   2011 г.

6. Разработка программы     к  01 ноября   2011 г.

7. Отладка и тестирование программы   к  22 ноября   2011 г.

8. Оформление ПЗ      к  20 декабря   2011 г.

   Дата выдачи задания «  20  »  сентября  2011 г.

   Дата защиты проекта « »     2011 г.

Руководитель   Л.А.Кутепова

Задание получил «  20  »  сентября 2011  г.

Студент  Пономарев К.А. 


СОДЕРЖАНИЕ

Введение…………………………………………..…………………………………………….....6

  1.  Постановка задачи……………………………….……………………………………………………........7
  2.  Метод решения задачи и её формализация……………………………………………………..….....8
  3.  Выбор языка программирования…………………………………….………………….…………..…11
  4.  Разработка состава и структуры исходных данных результатов……..…………………………12
  5.  Разработка алгоритма решения задачи………………………………………...……………..……..13
  6.  Разработка программы…………………………………………………....…………………………...14
  7.  Отладка и тестирование программы……………………………………..……….…..……………….15

Заключение……………………………………….…………………………………………………………….20

Библиографический список………………………………………………………………………………….20

Приложение 1. Схемы программы………………………………………………………………………...21

Приложение 2. Листинг программы………………………………………..……………………………...25

КР.230101.14.2011  81

Изм.

Лист

№ докум.

Подп.

Дата

Разраб.

Пономарев К.А.

Создание и обработка динамического списка

Пояснительная записка

Лит.

Лист

Листов

Пров.

Кутепова Л.А.

 3

Н. Контр.

 

    ПГТА, гр. 10В2

Утв.

Введение

Очень часто, при разработке приложений, оперирующих с большим количеством входных данных, возникает вопрос об их хранении во время выполнения программы. Например в массивах. Несомненно, данный тип решает вопрос хранения данных, однако он не лишен недостатков. Главным из них является его фиксированный размер. Это свойство не поддается изменению даже у динамически созданных массивов, что довольно часто заставляет программистов, использующих исключительно их, выделять память "с запасом". Ну а во-первых, даже "запас" ограничен, и никто не может дать гарантии, что и его будет достаточно, а во-вторых, наоборот, "запаса" может хватить настолько, что немалая часть отведенной программе памяти будет занята понапрасну.

Данную проблему решает другой тип хранения данных, которому и посвящен этот курсовой проект - связанный список динамических переменных, или проще - динамический список. Компоненты добавляются и удаляются во время выполнения программы, и их количество зависит исключительно от размера доступной памяти. Однако, за это преимущество приходится расплачиваться недостатком - если в случае с массивом, мы в любой момент получаем доступ к любому компоненту, то в случае со списком, в один момент времени нам доступны максимум 3 компонента (это зависит от способа представления списка в программе). В большинстве случаев, это очень даже приемлемая цена.

В данной курсовом проекте необходимо создать однонаправленный динамический список  на основе текстового файла и выполнять над ним некоторые действия.

Элементом списка будет служить структура (составной тип данных, построенный с использованием  других типов).

 

Постановка задачи.

Разработать программу для формирования и редактирования однонаправленного динамического списка с использованием интерфейса пользователя типа «вертикальное меню с выбором по функциональной клавише».

Программа должна выполнять следующие функции:

  1.  Создавать динамический список и заполнять поля данных элементов динамического списка данными из текстового файла;
  2.  Выводить данные динамического списка на экран и в файл в виде таблицы;
  3.  Добавлять элемент в список после указанного ключа
  4.  Производить удаление элемента по номеру;
  5.  Работу программы регулировать с помощью меню.

Метод решения задачи и ее формализация.

Для более удобного и простого решения поставленной задачи мы разбиваем её на отдельные подзадачи. Управление динамическим списком происходит в файле funcs.cpp. Функция  Input() принимает введенные данные пользователя и на их основе создаёт динамический список. Функция  Output()  выводит данные на экран и в файл. Функция  Add()  добавляет данные в динамический список. Функция  Del()  удаляет запись из списка после указанного номера. Функция StructSave()  сохраняет структуру и данные динамического списка в файл. Функция  StructLoad()  загружает структуру и данные динамического списка в программу.

В программе используются INFO - тип (структура). Содержит 4 полея. Первое поле типа int (счетчик). Остальные поля типа char (название планеты, площадь, количество спутников).  

Динамический список.

Связанный список - это динамическая структура данных, т.е. она непостоянная и в процессе своей работы может менять свои размеры в памяти компьютера как в сторону увеличения, так и в сторону уменьшения. Думаю, что с этим понятно. Продолжим... Связанный список - структура данных, состоящая из узлов, которые содержат в себе в классическом варианте два значения: первое - это какое-либо данное (этим данным может быть что угодно: обычная переменная, объект класса и так далее), а второе - это указатель на следующий узел в списке (не зря же список является связанным).

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

Метод нисходящего проектирования.

Метод нисходящего проектирования ("сверху-вниз") предполагает последовательное разложение общей функции обработки данных на простые функциональные элементы. В результате строится иерархическая схема, отражающая состав и взаимоподчиненность отдельных функций.

Эта технология является неотъемлемой частью создания хорошо структурированных программ. Она начинаем с записи псевдокода вершины. Вершина — это единственное предложение (оператор), выражающее общее назначение программы. Таким образом, вершина отображает всю программу в целом. К сожалению, вершина редко отображает достаточное количество деталей, на основании которых можно написать программу на C++. Поэтому надо начинать процесс детализации. Для этого вершину делят на ряд более мелких задач и записывают их в том порядке, в котором они должны выполняться. В результате получают первую детализацию: здесь использована только структура следования — записанные шаги должны выполняться последовательно один за другим. Каждая детализация, так же, как и сама вершина, является полным описанием алгоритма; меняется только уровень детализации. Многие программы могут быть логически разделены на три этапа: этап задания начальных значений, в котором задаются начальные значения переменных программы; этап обработки данных, в котором вводятся данные и устанавливаются значения соответствующих переменных программы; заключительный этап, в котором вычисляются и печатаются окончательные результаты. Программист завершает процесс нисходящей разработки с пошаговой детализацией, когда алгоритм на псевдокоде настолько детализирован, чтобы его псевдокод можно было бы преобразовать в программу на C++. Реализованная программа на C+ + окажется в этом случае простой и наглядной.

В своей программе я также использую метод нисходящего проектирования. Данный метод можно представить в виде следующей схемы:

 

Выбор языка программирования.

C++ — компилируемый статически типизированный язык программирования общего назначения.

Поддерживает разные парадигмы программирования, сочетает свойства как высокоуровневых, так и низкоуровневых языков[1][2]. В сравнении с его предшественником — языком C, — наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования.[2] Название «C++» происходит от названия языка C, в котором унарный оператор ++ обозначает инкремент переменной.

Являясь одним из самых популярных языков программирования,[3][4] C++ широко используется для разработки программного обеспечения. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (например, видеоигры). Существует несколько реализаций языка C++ — как бесплатных, так и коммерческих. Наиболее популярный проект GNUMicrosoftIntel и Embarcadero (Borland). C++ оказал огромное влияние на другие языки программирования, в первую очередь на Java и C#.

При создании C++ Бьёрн Страуструп стремился сохранить совместимость с языком C. Множество программ, которые могут одинаково успешно транслироваться как компиляторами C, так и компиляторами C++, довольно велико — отчасти благодаря тому, что синтаксис C++ был основан на синтаксисе C.


Достоинства С++ :

  1.  Масштабируемость. На языке C++ разрабатывают программы для самых различных платформ и систем
  2.  Возможность работы на низком уровне с памятью, адресами, портами. Что, при неосторожном использовании, может легко превратиться в недостаток.
  3.  Возможность создания обобщенных алгоритмов для разных типов данных, их специализация, и вычисления на этапе компиляции, используя шаблоны.

Разработка состава и структуры исходных данных и результатов.

В качестве исходных данных в программе используются:

  1.  Файл созданный ранее.
  2.  Данные для дополнения списка (название планеты, площадь, количество спутников).
  3.  Ключи (номера) элементов которые нужно добавить или удалить.

 

Результатом  работы программы является список, представленный в виде таблицы.


Разработка алгоритма.

Алгоритм работы программы заключается в следующем:

  1.  Вызывается основной метод программы MAIN который отрисовывает  меню для упрощения работы с программой.   
  2.  С помощью меню выбирается нужное действие – в зависимости от нажатой клавиши вызывается метод:

F1 – Input();

F2 – Output();

F3 – StructLoad();

F4 – StructSave();

F5 – Add();

F6 – Del();

ESCexit(0);

Функция Input()  добавляет новые данные в список. В качестве параметров  принимает  данные введенные с клавиатуры.  

Функция Output() выводит данные списка на экран и в файл, для этого используется  цикл while() условием выхода из цикла является нахождение элемента с указателем значение которого равно NULL.

Функция Add() добавляет новый элемент после элемента с заданным ключом. Для  этого в цикле for() осуществляется поиск элемента с ключом и после него добавляется новый элемент. Для добавления метод запрашивает данные о новом элементе.

Функция Del() удаляет элемент с заданным номером.

Функция StructSave() сохраняет текущую структуру и данные в файл.

Функция StrutLoad() загружает в программу структуру данные из файла.

Функция exit() осуществляет выход из программы..

 

Разработка программы.

В программе используются следующие стандартные процедуры,  функции и операторы:

  1.  Оператор new – выделяет место в динамической памяти.
  2.  Оператор delete – освобождает место в динамической памяти.
  3.  Функция getch()  - обрабатывает нажатие клавиши.
  4.  Функция exit() – производит выход из программы.
  5.  Функция strcmp() – для сравнения строк.
  6.  Функция fopen() – для открытия файла.
  7.  Функция fread () – считывает строку из файла.
  8.  Функция fwrite () – записывает строку в файл.
  9.  Метод fclose () закрывает файл.
  10.  Оператор scanf – ввод с клавиатуры
  11.  Оператор printf – вывод на экран

В программе используются следующие стандартные заголовочные файлы:

  1.  stdio.h – для выполнения операций ввода/вывода.
  2.  conio.h – для вызова функции getch().
  3.  string.h – для работы со строками.
  4.  locale.h – для вывода сообщений на экран на кириллице.

Программа состоит из трех файлов (DynamicList1.cpp, funcs.cpp, funcs.h)

Заголовочный файл funcs.h  подключаются к главному файлу DynamicList1.cpp в котором описана главная функция  main().

Описание  заголовочного файла funcs.h находится в файле  funcs.cpp.

Отладка и тестирование программы.

Для обнаружения и устранения ошибок в программе выполняется её отладка.

Для этого в интегрированной среде Microsoft Visual Studio существуют встроенные средства – отладчик.

Для проверки правильности работы программы выполняется тестирование -исполнение программы с использованием некоторого набора  входных данных, охватывающего всю область возможных значений для данного типа задач и проверяющего граничные условия, а также позволяющего посредством контроля промежуточных и конечных результатов решения задачи в ходе выполнения программы проверить выполнение операторов программы в требуемой  последовательности и правильности всех алгоритмических конструкций.

Примеры тестовых наборов разрабатываемой программы.

Главное меню:

Ввод данных:

Вывод данных:

Добавить  запись:


 

Заключение.

Для разработки программы были проведены следующие виды работ:

Вначале мы определились с методом решения задачи и её формализации, что позволило нам понять общий подход для решения поставленной задачи. Затем мы выбрали

язык программирования с помощью которого будем разрабатывать программу. Далее разработали состав и структуру исходных данных и результатов. Это позволило нам определиться какие данные будет принимать программа и каким должен быть результат её работы. После этого мы приступили к разработке алгоритма что позволило нам определить количество необходимых функций и задачи которые они должны решать. После этого мы приступили к разработке программы, определили необходимые операторы, стандартные заголовочные файлы, структуру программы.  После написания программы произвели её отладку и тестирование для проверки всех критических условий. Для этого мы изменяли состав входных данных и порядок выполнения операций.

Библиографический список.

  1.  В.В Подбельский “ Язык Си++” Финансы и статистика 2001.
  2.  http://study.pgta.ru/course/view.php?id=171

Приложение 2. Схемы программы.

Схема метода Add


Схема функции Del:

Схема функции Input:

Схема функции Main:

Схема функции Output:

Схема функции Struct:

Приложение 2. Листинг программы.

Код файла funcs.cpp

#include "stdio.h"

#include "conio.h"

#include "windows.h"

// Две константы, одна используется для имени, в которую выведится файл с таблицей ( данные)

// Вторая для хранения структуры

#define OUTPUT_FILE "./OUTPUT.TXT"

#define STRUCT_FILE "./STRUCT.DAT"

// Структура, для записи

struct info

{

 int id;

 char key1[100];// Номер по порядку

 char key2[100];// Кол-во населения

 char key3[100]; // Имя президента

};

//Динамический список, хранит себе список и ссылку на следующий элемент

struct node

{

info har;

node *next;

};

// Переменные-указатели, через которые мы работаем со списком

node *first, *last, *list, *addM;

// Общий глобальный счетчик записей

int n;

// Функция для ввода данных

void Input()

{

// Переменная, в которую будет записываться клавиша, для продолжения ввода данных

 char key;

 

system("cls");

printf ("** ВВОД ДАННЫХ: ** \n");

// Проверка, есть ли уже введенные данные, тогда указатель first будет не пустой

 if (first!=NULL) {

 printf("\nОшибка! Данные уже введены.");

 getch();

 return;

}

// Выделяем память под первую запись, и увеличиваем счетчик записей на +1

n = 1;

// Выделяем память под первую запись

first = new node;

// Присваиваем ключу id номер

 (*first).har.id = n;

printf ("\nВведите название: ");

 scanf ("%s", (*first).har.key1);

printf ("\nВведие площадь: ");

scanf ("%s", (*first).har.key2);

printf ("\nВведите кол-ко спутников: ");

 scanf ("%s", (*first).har.key3);

// Указатель на следующий элемент присваиваем ноль

 first->next = NULL;

last = first;

 while (true) {

 printf ("\nПродолжить? (Нажмите Y) ");

 scanf("%s", &key);

 if (key!='y' && key!='Y')

  return;

  

 system("cls");

 printf ("** ВВОД ДАННЫХ: ** \n");

 n++;

 list = new node;

 (*list).har.id = n;

printf ("\nВведите название: ");

  scanf ("%s", (*list).har.key1);

 printf ("\nВведие площадь: ");

 scanf ("%s", (*list).har.key2);

 printf ("\nВведите кол-ко спутников: ");

 scanf ("%s", (*list).har.key3);

 

list->next = NULL;

 last->next = list;

 last = list;

}

}

//Функция вывода данных

void Output()

{

// Инициализция файла

// Переменная (дескриптор) в которй будет хранится ссылка на открытый файл

FILE *fil;

// Открываем файл, параметр w - файл для записи

 fil = fopen(OUTPUT_FILE, "w");

// Перемещаем курсор файла на начало

fseek(fil, 0, SEEK_SET);

system("cls");

printf("+-----------------------------------+\n");

printf("| # | Название | Площадь | Спутники |\n");

 printf("+-----------------------------------+\n");

fprintf(fil, "+-----------------------------------+\n");

fprintf(fil, "| # | Название | Площадь | Спутники |\n");

 fprintf(fil, "+-----------------------------------+\n");

 // Делаем ссылку лист на начало списка

 list = first;

 int i = 1;

 while (list) {

 printf("| %d |  %s  |  %s  |  %s  \n", (*list).har.id, (*list).har.key1, (*list).har.key2, (*list).har.key3);

 fprintf(fil, "| %d |  %s  |  %s  |  %s  \n", (*list).har.id, (*list).har.key1, (*list).har.key2, (*list).har.key3);

 

// Перемещаемся на следующую позицию списка

 list = list->next;

 }

 

printf("+----------------------------------------+\n");

fprintf(fil, "+----------------------------------------+\n");

// Закрываем файл

fclose(fil);

getch();

}

//Функция добавления записи

void Add()

{

// переменная, которая будет хранить имя ключа, после которого добавить значение

 char cur3[100];

system("cls");

printf ("** ДОБАВИТЬ ЗАПИСЬ: ** \n");

 printf("\nВведите номер ключа, после которого нужно добавить данные: ");

 scanf("%s", &cur3);

last = first;

list = first;

 while (list) {

// Сравнивает строки

 if (strcmp((*list).har.key1, cur3)==NULL)

  break;

 last = last->next;

 list = list->next;

}

n++;

list = new node;

(*list).har.id=n;

printf ("\nВведите название: ");

 scanf ("%s", (*list).har.key1);

printf ("\nВведие площадь: ");

scanf ("%s", (*list).har.key2);

printf ("\nВведите кол-ко спутников: ");

 scanf ("%s", (*list).har.key3);

list->next=last->next;

last->next=list;

 printf ("Хорошо!\n");

getch();

}

// Функция удаления

void Del()

{

list = first;

while(list->next) {

 last = list;

 list = list->next;

}

last->next = NULL;

delete list;

 

printf("\nПоследняя запись удалена.");

 getch();

}

void StructSave()

{

FILE *fil;

 

fil = fopen(STRUCT_FILE, "w+b");

fseek(fil, 0, SEEK_END);

 

list = first;

 while (list) {

 fwrite(list, sizeof(info), 1, fil);

 list = list->next;

}

 

fclose(fil);

}

void StructLoad()

{

FILE *fil;

info h;

int res;

 

fil = fopen (STRUCT_FILE, "r+b");

if (!fil) {

 printf("\nОшибка! Файл со структурой не существует! Загрузка невозможна.");

 getch();

 return;

}

fseek (fil, 0, SEEK_SET);

res = fread (&h, sizeof(info), 1, fil);

if (res == 1) {

 first = new node;

 (*first).har = h;

 first ->next = NULL;

 last = first;

}

do {

 res = fread (&h, sizeof(info), 1, fil);

 if (res == 1){

  list = new node;

  (*list).har = h;

  list->next = NULL;

  last->next = list;

  last=list;

 }

}

while (res == 1);

fclose(fil);

getch();

}

Код файла DynamicList1.cpp

#include "stdafx.h"

#include "stdio.h"

#include "conio.h"

#include "windows.h"

#include <locale>

#include "funcs.h"

void main()

{

char globalKey;

 

SetConsoleCP(866);

SetConsoleOutputCP(866);

setlocale(LC_ALL, "russian_russia.1251");

while (true) {

 // UI

 system("cls");

 printf("+----------------------------+\n");

 printf("+- - - - ГЛАВНОЕ МЕНЮ - - - -+\n");

 printf("+----------------------------+\n");

 printf("+ Планеты солнечной системы  +\n");

 printf("+----------------------------+\n");

 printf("|  1. Ввод ------------------|\n");

 printf("|  2. Вывод -----------------|\n");

 printf("|  3. Загрузка структуры ----|\n");

 printf("|  4. Сохранение структуры --|\n");

 printf("|  5. Добавить запись -------|\n");

 printf("|  6. Удалить запись --------|\n");

 printf("+----------------------------+\n");

 printf("| ESC. Выход ----------------|\n");

 printf("+----------------------------+\n");

 // Menu switch

 globalKey = getch();

 switch (globalKey)

 {

  case '1':

   Input();

   break;

  case '2':

   Output();

   break;

  case '3':

   StructLoad();

   break;

  case '4':

   StructSave();

   break;

  case '5':

   Add();

   break;

  case '6':

   Del();

   break;

  case 27:

   exit(0);

 }

}

}


 

А также другие работы, которые могут Вас заинтересовать

73627. Статистика труда 176 KB
  Понятие и роль рынка труда в экономике. Задачи статистического изучения рынка труда. Категории рынка труда. Показатели, их характеризующие. Понятие производительности труда и значение её статистического изучения. Показатели уровня производительности труда. Изучение динамики производительности труда...
73628. Статистика результатов экономической деятельности 101.5 KB
  Понятие промышленной продукции и ее видов по степени готовности. Стоимостные показатели объема производства продукции. Факторный анализ изменения объема производства продукции. Анализ динамики производства продукции индексным методом.
73630. Риск-менеджмент в организации 144.78 KB
  Рискменеджмент в организации Система управления риском. Развитие концепции управления риском. Общая характеристика системы управления риском. Свойства системы управления риском.
73631. СВІТОВА ВАЛЮТНА СИСТЕМА 376 KB
  Ця мета потребує щоб: окремі країни проводили економічну та фінансову політику яка б сприяла підтриманню збалансованої міжнародної системи платежів; фінансові механізми забезпечували регулювання платіжного балансу; уряди сприяли збереженню рівноваги на ринках іноземної валюти. Основні елементи національної і світової валютних систем Національна валютна система Світова та міжнародна валютні системи Національна валюта Резервні валюти міжнародні рахункові валютні одиниці Умови конвертування національної валюти Умови взаємного конвертування...
73632. Міжнародна міграція робочої сили 206.5 KB
  Міжнародна міграція робочої сили. Регулювання міжнародної міграції робочої сили. Сутність структура та основні риси світового ринку праці Одним із важливих елементів глобальної економічної системи на яку перетворився світ наприкінці другого тисячоліття є міжнародний ринок праці з його уніфікованою шкалою критеріїв щодо якості трудових ресурсів розвитком нових форм зайнятості гнучкістю та надзвичайною мобільністю сукупної робочої сили. Світовий міжнародний ринок праці це система відносин що виникають між державами з приводу...
73633. Міжнародні розрахунки і платіжний баланс 121.5 KB
  Економічний зміст платіжного балансу та методологія складання. Економічний зміст платіжного балансу та методологія складання. Стан платіжного балансу визначає попит і пропозицію національної й іноземної валюти в цей момент і він є одним із факторів формування валютного курсу. Прибуткові та витратні статті балансу міжнародних рахунків Прибуткові статті Джерела грошових коштів Витратні статті Способи використання грошових коштів Експорт товарів та послуг Імпорт товарів та послуг Приток капіталу Вивіз капіталу Приватні та...
73634. Реформы А.Н. Косыгина и причины их неудач 73.1 KB
  Для изучения этой системы и хода реформы дают материал интервью взятые у министра легкой промышленности СССР 1965 1980 гг. начальника главного управления трикотажной и текстильногалантерейной промышленности Софьи Николаевны Чупрыгиной. Министерство легкой промышленности СССР являлось такой же частью системы государственного управления как другие министерства и принципы его работы были такими же как у них. он прошел путь от сменного мастера на Ореховозуевском хлопчатобумажном комбинате до министра легкой промышленности СССР.
73635. Ответственность организаций и исполнителей за нарушение метрологического обеспечения 75.5 KB
  Дисциплинарная и материальная ответственность исполнителей за нарушение законодательства о метрологическом обеспечении производства и испытаний продукции Федеральный закон Российской федерации О техническом регклировании постатейный коментарий...