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

Int inf_k_el (inf_type *x1, inf_type *x2, int k, struct list2 *p)

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

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

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

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

{ *x1 = i->INF1_;

*x2 = i->INF2_;

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

}

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

}

int main()

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

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

Inf_type rez1, rez2; // Вставить описания необходимых величин

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

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; }

fscanf(fin, "%d", &k);

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

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

ExitCode = inf_k_el(&rez1,&rez2,k,p); // Получение результата rez

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

if(ExitCode==0) // Успешное завершение

fprintf(fout, F_" "F_, rez1,rez2); // Вывод результата в формате F_

fclose(fout); fclose(fin);

return 0;

}

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

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

// заданного СПИСКА СЛОВ. Сумма длин слов <= (NMAX - кол-слов).

// Вход ::= K [{пробел|\n|\t}...слово]...EOF Выход ::= 0 слово | 1

// Пример. Вход: 2 a bb ccc EOF Выход: 0 bb

#include <stdio.h>

#include <stdlib.h>

#include <string.h> //* Функции над строками

// РЕШЕНИЕ ЗАДАЧИ 00.7: описание списка и функция (= 00.5)

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

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

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

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

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

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

};

#define NMAX 300 //* Максимум (суммы длин слов + количество слов)

char w[NMAX]; //* ОБЛАСТЬ СЛОВ: слова с \0 в конце слова

INF_TYPE x; // указатель текущего слова в массиве w

FILE *fin, *fout;

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

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

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

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()

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

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

Inf_type rez; // Вставить описания необходимых величин

int k;

x = w; // Указатель 1-го слова в массиве w

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

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

{ puts ("input.txt or output.txt is not opened"); return 1; }

fscanf(fin, "%d", &k);

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

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

ExitCode = inf_k_el(&rez, k, p); // Получение результата rez

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

if(ExitCode == 0) // Успешное завершение

fprintf(fout, F_, rez); // Вывод результата в формате F_

fclose(fout); fclose(fin);

return 0;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]