русс | укр

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

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

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

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


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

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


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


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

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

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

int Push(const char*); //Помещение значения в стек

int Pop(char *); //Получение значения из стека

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

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

{

//Если число параметров командной строки не равно двум,

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

puts("Неправильное количество параметров!");

return 0;

}

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

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

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

return 0; //выход

}

char str[50]; //Буфер для ввода и обработки данных

while(1){//Цикл ввода

gets(str); //Чтение строки

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

//Помещение введенной строки в стек

if(Push(str)) {//Если поместить в стек не удалось, то

puts("Мало памяти!"); //вывод сообщения

break; //завершение ввода

}

}

//Цикл пока стек не пуст: чтение значения из стека и

while(!Pop(str)) fprintf(f,"%s\n",str); //запись в файл

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

return 0; //Выход

}

/* ------ Описание структуры и указателя на стек ------- */

typedef struct _Element{

char str[50];

struct _Element *next;

} Element;

Element *head = NULL;

/* ---------- Функция помещения значения в стек -----------

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

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

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

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

int Push(const char*str)

{

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

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



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

strcpy(tmp->str,str); //Копирование значения в элемент

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

tmp->next = head;

//Установка указателя на вершину стека на новый элемент

head = tmp;

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

}

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

Параметры: str - полученное значение

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

1 - стек пуст

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

int Pop(char *str)

{

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

//Установка локального указателя на вершину стека

Element *tmp = head;

strcpy(str,tmp->str); //Копирование значения из элемента

head = head->next; //Установка новой вершины стека

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

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

}

Задача 9.5: Пользователь с клавиатуры построчно вводит целые числа. Признак завершения ввода - пустая строка. Сформировать из введенной последовательности бинарное дерево по следующему правилу: новое значение помещается в левую ветвь узла дерева, начиная с корневого, если оно больше значения в этом узле, в противном случае - в правую ветвь. В полученном дереве найти ветвь наибольшей длины и вывести значения узлов этой ветви на экран, начиная с корневого узла.



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


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


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

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

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


 


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

 
 

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

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