Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Подготовка к экзамену ПЯВУ осень 2011.RTF
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
137.6 Кб
Скачать

Int inf_1_el (inf_type *X, struct list *s)

{

if(s==NULL) return 1; // неудача

else {

*X = s->INF_;

return 0; // успех

}

}

int main()

{ struct LIST *q; // указатель списка

Int kz; // Код завершения функции: 0 - успех, 1 - неудача

Inf_type rez; // Результат - значение 1-го элемента

if ((fin=fopen("input.txt","r"))==NULL)

{ puts ("File INPUT.TXT is not found"); return 1; }

if ((fout=fopen("output.txt","w"))==NULL)

{ puts ("File OUTPUT.TXT is not opened"); return 1; }

CreateList(&q); // создание списка p из значений файла input.txt

// PrintList(q); // Вывод списка p для отладки или решения задачи

// Вызов функции-решения задачи

kz = INF_1_EL(&rez, q); // Код завершения функции: 0/1

fprintf(fout, "%d", kz);

if(kz==0) // есть 1-й элемент

fprintf(fout, " " F_, rez); // вывод 1-го элемента в формате F_

fclose(fin); fclose(fout);

return 0;

}

// P00_5.C Пример решения задачи 00.5 (вместе с файлом LISTNE.C)

// Задача 00.5. Составить функцию получения значения k-го элемента

// заданного списка из вещественных чисел.

#include <stdio.h>

#include <stdlib.h>

// РЕШЕНИЕ ЗАДАЧИ 00.5: описание данных и функция inf_k_el

#define INF_TYPE float // ТИП информации ВЫБРАТЬ: int char float char*

#define F_ "%f" // ФОРМАТ информации ВЫБРАТЬ: %d %c %f %s

#define INF_ Z // ИМЯ информации Z можно оставить или заменить

struct LIST // элемент списка

{ INF_TYPE INF_; // информация элемента списка

struct LIST *next; // ссылка на следующий элемент

};

FILE *fin, *fout; // Входной и выходной файлы

#include "listNE.c" // Функции создания и вывода списка

// Получение x - значения k-го элемента списка p

Int inf_k_el (inf_type *X, int k, struct list *p)

{

struct LIST *i; // Указатель текущего элемента

// while(k==3); // Имитация зацикливания

for (i=p; k>1 && i!=NULL; k--)

i = i->next; // Переход к следующему элементу

if (k==1 && i!=NULL) // p указывает на k-й элемент

{ *x = i->INF_;

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

}

else return 1; // Неудача: в списке нет k-го элемента

}

int main()

{ struct LIST *p; // указатель списка

int ExitCode; // Код завершения: 0 - успех, 1 - неудача

Inf_type rez; // Результат - значение k-го элемента

Int k; // Номер искомого элемента

fin = fopen("input.txt","r");

fout = fopen("output.txt","w");

if (fin==NULL || fout==NULL)

{ puts ("File INPUT.TXT or OUTPUT.TXT is not opened");

return 1;

}

fscanf(fin, "%d", &k); // Номер искомого элемента

CreateList(&p); // создание списка p из значений файла input.txt

// PrintList(p); // Вывод списка

ExitCode = inf_k_el(&rez,k,p); // Получение k-го элемента rez

fprintf(fout, "%d ", ExitCode); // Вывод кода завершения

if(ExitCode==0) // есть k-й элемент

fprintf(fout, F_, rez); // Вывод k-го элемента в формате F_

fclose(fout); fclose(fin);

return 0;

}

// P00_6.C Пример решения задачи (вместе с файлом LIST2NE.C)

// Задача 00.6. Составить функцию получения значения k-го элемента

// заданного списка - ПАРЫ ВЕЩЕСТВЕННЫХ ЧИСЕЛ.

#include <stdio.h>

#include <stdlib.h>

// РЕШЕНИЕ ЗАДАЧИ 00.6: описание данных и функция inf_k_el

#define INF_TYPE float // ТИП информации ВЫБРАТЬ: int char float char*

#define F_ "%f" // ФОРМАТ информации ВЫБРАТЬ: %d %c %f %s

#define INF1_ Z1 // имена полей информации: Z1

#define INF2_ Z2 // и Z2

struct LIST2 // элемент списка

{ INF_TYPE INF1_, INF2_; // информация элемента списка

struct LIST2 *next; // ссылка на следующий элемент

};

FILE *fin, *fout;

#include "LIST2NE.c" // Ф-ции создания и вывода списка ПАР ЧИСЕЛ

// Получение x1 и x2 - значений k-го элемента списка p