Содержание
Задание на разработку …………………………………………………………2-8
Блок-схемы программ ………………………………………………………...9-16
Интерфейс работы программ………………………………………………..17-23
Список использованных источников…………………………………………...24
Задание на разработку
Задание 1.
Разработать приложение, выполняющее следующие функции. Ввести с клавиатуры значения элементов символьного двумерного массива. Отсортировать по возрастанию (методом выбора) элементы тех строк, которые содержат символ «/». Результат вывести на экран и записать в файл.
#include <stdio.h>
#include <conio.h>
#define ROW 3 /* можно изменить */
#define COL 3 /* можно изменить */
#define FILENAME 64
int main(void)
{
int i, j, k, fl;
char mas[ROW][COL], tmp, fileName[FILENAME];
FILE *f;
puts("Itsakov Vadim\nGroup 002301");
puts("\n\nVvedite elementi massiva razmerom 3x3:\n");
for (i = 0; i < ROW; i++)
for (j = 0; j < COL; j++) {
printf("mas[%d][%d] = ", i + 1, j + 1);
fflush(stdin);
scanf("%c", &mas[i][j]);
}
printf("\n\nMassiv pered sortirovkoi:\n\n");
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++)
printf("%2c", mas[i][j]);
putchar('\n');
}
for (k = 0; k < ROW; k++) {
fl = 1;
for (i = 0; i < COL && fl; i++)
if (mas[k][i] == '/')
fl = 0;
if (!fl) {
for (i = 0; i < COL - 1; i++)
for (j = i + 1; j < COL; j++)
if (mas[k][i] > mas[k][j]) {
tmp = mas[k][i];
mas[k][i] = mas[k][j];
mas[k][j] = tmp;
}
}
}
printf("\n\nOtsorterovaniy massiv:\n\n");
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++)
printf("%2c", mas[i][j]);
putchar('\n');
}
printf("\n\nVvedite imya faila dlya sohranenya rezultata: ");
fflush(stdin);
gets(fileName);
if (f = fopen(fileName, "w")) {
fprintf(f, "\n\nOtsortirovaniy massiv:\n\n");
for (i = 0; i < ROW; i++) {
fprintf(f, " ");
for (j = 0; j < COL; j++)
fprintf(f, "%2c", mas[i][j]);
putc('\n', f);
}
if (fclose(f) == EOF)
printf("\n\nOshibka zakritiya faila!\n");
else
printf("\n\n Done!\n");
}
else
printf("\n\nNevernoe imya faila!\n");
printf("\n\n Nazhmite Enter...");
getch();
return 0;
}
Задание 2.
Разработать приложение, работающее с односвязным списком, содержащим данные о налогоплательщиках. Элементом списка является структура, содержащая не менее 4-ех элементов. Выполнить добавление, удаление, редактирование элемента списка, распечатку всего списка.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define NAMELEN 64
typedef struct Taxpayer {
char name[NAMELEN];
int tax, day, month, year;
struct Taxpayer *next;
} taxpayer;
typedef struct ListInf {
taxpayer *beg, *end;
} listInf;
void addition(listInf *);
void deletion(listInf *);
void editing(listInf *);
void printing(listInf *);
int main(void)
{
char choice = '*';
listInf list;
taxpayer *tmp;
list.beg = list.end = (taxpayer *) malloc(sizeof(taxpayer));
list.beg->next = NULL;
puts("Itsakov Vadim\nGroup 002301");
printf("\n\nDobavit' element v spisok - 1");
printf("\nYdalit' element is spiska - 2");
printf("\nRedaktirovanie elementa - 3");
printf("\nVivod spiska - 4");
printf("\n[ EXIT ] - 0\n\n\n");
do {
printf(" Sdelayte vibor: ");
fflush(stdin);
scanf("%c", &choice);
switch (choice) {
case '1':
addition(&list);
break;
case '2':
deletion(&list);
break;
case '3':
editing(&list);
break;
case '4':
printing(&list);
break;
}
}
while (choice != '0');
while (list.beg) {
tmp = list.beg->next;
free(list.beg);
list.beg = tmp;
}
printf("\n\n Nazhmite Enter...");
getch();
return 0;
}
void addition(listInf *list)
{
list->end->next = (taxpayer *) malloc(sizeof(taxpayer));
list->end = list->end->next;
list->end->next = NULL;
printf(" **************************************************************************\n * Dobavlenie elementa v spisok *\n **************************************************************************\n");
printf(" * FIO: ");
fflush(stdin);
gets(list->end->name);
printf(" * Day: ");
fflush(stdin);
scanf("%d", &list->end->day);
printf(" * Month: ");
scanf("%d", &list->end->month);
printf(" * Year: ");
scanf("%d", &list->end->year);
printf(" * Nalog: ");
scanf("%d", &list->end->tax);
printf(" **************************************************************************\n\n\n");
}
void deletion(listInf *list)
{
int num = 0, pos;
taxpayer *tmp1 = list->beg->next, *tmp2;
while (tmp1) {
num++;
tmp1 = tmp1->next;
}
printf(" **************************************************************************\n * Ydalenie elementa is spiska *\n **************************************************************************\n");
printf(" * Vvedite nomer elementa v diapasone [0; %d], kotoriy nuzhno ydalit': ", num);
fflush(stdin);
scanf("%d", &pos);
if (pos < 0 || pos > num)
printf(" * ERROR: nomer elementa ne v diapasone [0; %d]\n", num);
else
if (pos) {
tmp1 = list->beg;
for (num = 1; num < pos; num++)
tmp1 = tmp1->next;
if (tmp1->next)
tmp2 = tmp1->next->next;
else
tmp2 = NULL;
free(tmp1->next);
tmp1->next = tmp2;
}
printf(" **************************************************************************\n\n\n");
}
void editing(listInf *list)
{
char choice = '*';
int num = 0, pos;
taxpayer *tmp = list->beg->next;
while (tmp) {
num++;
tmp = tmp->next;
}
printf(" **************************************************************************\n * Redaktirovanie elementa is spiska *\n **************************************************************************\n");
printf(" * Vvedite nomer elementa v diapasone [0; %d], kotoriy nuzhno redaktirovat': ", num);
fflush(stdin);
scanf("%d", &pos);
if (pos < 0 || pos > num)
printf(" * ERROR: ERROR: nomer elementa ne v diapasone [0; %d]\n", num);
else
if (pos) {
tmp = list->beg->next;
for (num = 1; num < pos; num++)
tmp = tmp->next;
printf(" * FIO - 1\n * Day - 2\n * Month - 3\n * Year - 4\n * Nalog - 5\n * [ EXIT ] - 0\n *\n");
do {
printf(" * Sdelayte vibor: ");
fflush(stdin);
scanf("%c", &choice);
switch (choice) {
case '1':
printf(" * Vvedite novoe znachenie FIO: ");
fflush(stdin);
gets(tmp->name);
break;
case '2':
printf(" * Vvedite novoe znachenie day: ");
fflush(stdin);
scanf("%d", &tmp->day);
break;
case '3':
printf(" * Vvedite novoe znachenie month: ");
fflush(stdin);
scanf("%d", &tmp->month);
break;
case '4':
printf(" * Vvedite novoe znachenie year: ");
fflush(stdin);
scanf("%d", &tmp->year);
break;
case '5':
printf(" * Vvedite novoe znachenie nalog: ");
fflush(stdin);
scanf("%d", &tmp->tax);
break;
}
}
while (choice != '0');
}
printf(" **************************************************************************\n\n\n");
}
void printing(listInf *list)
{
taxpayer *tmp = list->beg->next;
printf(" **************************************************************************\n * Vivod spiska *\n **************************************************************************");
while (tmp) {
if (tmp != list->beg->next)
printf(" *");
putchar('\n');
printf(" * FIO: %s\n * Day: %d\n * Month: %d\n * Year: %d\n * Nalog: %d\n", tmp->name, tmp->day, tmp->month, tmp->year, tmp->tax);
tmp = tmp->next;
}
if (!list->beg->next)
putchar('\n');
printf(" **************************************************************************\n\n\n");
}