русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Программа для задачи


Дата добавления: 2013-12-24; просмотров: 740; Нарушение авторских прав


#include <stdio.h> //Библиотека функций ввода и вывода

#include <stdlib.h>//Библиотека стандартных функций

int Put(double); //Помещение значения в очередь

int Get(double*); //Получение значения из очереди

/* --------------- Главная функция main ---------------- */

int main(int argc, char *argv[])

{

double value, mid = 0.0; //Локальные переменные

unsigned count = 0; //Счетчик введенных значений

//Если имя файла не указано или указано неверно, то

if(argc != 2){//вывод сообщения и выход

puts(“Неправильно указаны параметры!”);

return 0;

}

FILE *f = fopen(argv[1],"wb");//Открытие файла для записи

if(!f) {//Если открыть файл не удалось, то

puts("Невозможно создать файл!"); //вывод сообщения

return 0; //и выход

}

while(1){//Цикл ввода значений

char str[100]="", *ptr = NULL; //Локальные переменные

gets(str); //Ввод строки

if(str[0]==0) break; //Если строка пустая, то выход

value = strtod(str,&ptr);//Преобразование в число

if(strlen(ptr)==0){//Если преобразовалось успешно

if(Put(value)){//Помещение в очередь

puts("Мало памяти!");//и проверка результата

break;

}

mid += value;//Подсчет суммы введенных значений

count++; //Подсчет количества введенных значений

}

}

mid /= count; //Вычисление среднего значения

while(!Get(&value)) //Цикл пока в очереди есть значения,

//то извлечение значения из очереди

if(value>mid) //Проверка: значение больше среднего

fwrite(&value,sizeof(double),1,f);//запись в файл

fclose(f); //Закрытие файла

return 0; //Завершение программы

}

/* ----- Описание структуры и указателей на очередь ---- */

typedef struct _Element{

double value;

struct _Element *next;

} Element;

Element *head = NULL, *tail = NULL;

/* --------- Функция помещения значения в очередь ---------



Параметры: value - помещаемое значение.

Возвращаемое значение: 0 - успешное завершение,

1 - ошибка выделения памяти

-------------------------------------------------------- */

int Put(double value)

{

//Выделение памяти под новый элемент

Element *tmp = (Element *)malloc(sizeof(Element));

if(!tmp) return 1; //Если память не выделилась, то выход

//Инициализация ссылки на следующий элемент в очереди

tmp->next = NULL; //нулевым значением

tmp->value = value; //Запись значения в новый элемент

//Связывание последнего элемента в очереди с новым

if(tail) tail->next = tmp; //элементом

tail = tmp; //Установка указателя на конец очереди

//Если это первый элемент, то установка указателя

if(!head) head = tmp; //на начало очереди

return 0; //Успешное завершение

}

/* --------- Функция получения значения из очереди --------

Параметры: value - полученное значение (по ссылке).

Возвращаемое значение: 0 - успешное завершение,

1 - очередь пуста

-------------------------------------------------------- */

int Get(double *val)

{

if(!head) return 1; //Если очередь пуста, то выход

*value = head->value;//Запись значения в параметр

Element *tmp = head; //Установка локального указателя

head = head->next; //Установка нового начала очереди

//Если это последний элемент, то инициализация указателя

if(!head) tail=NULL; //на конец очереди нулевым значением

free(tmp); //Освобождение памяти

return 0; //Успешное завершение

}

Задача 9.4: Пользователь с клавиатуры построчно вводит слова (максимальная длина слова - 50 символов). Признак завершения ввода - пустая строка. Записать слова в текстовый файл в обратном порядке. Имя файла передается в параметрах командной строки. При реализации использовать динамическую структуру - стек.



<== предыдущая лекция | следующая лекция ==>
 | Программа для задачи


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 4.094 сек.