Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metodichka_SI.doc
Скачиваний:
30
Добавлен:
23.02.2015
Размер:
2.05 Mб
Скачать

Самостоятельная работа

В разобранной задаче добавить функцию поиска файла и, если файл найден, вывести полный путь к этому файлу.

Лабораторная работа №14

Побитовая арифметика

Цель: закрепление на практике знаний работы с побитовой арифметикой.

Методические рекомендации: лабораторная работа рассчитана на 2 часа и состоит из анализа двух решенных заданий и самостоятельной работы.

Обязательное зачетное задание.

Необходимый уровень знаний:

  • работа с функциями;

  • работа с текстовыми файлами;

  • работа с побитовой арифметикой.

1 Задача

Из текстового файла считывается текст, затем вызывается функция кодировки. Кодировка (все 0 в двоичной записи слов заменить на 1)

Требуется реализовать кодирование и декодирование текста с использованием побитовой арифметики.

#include <stdio.h>

// функция кодирования: побитовое дополнение

char encode(char c)

{

return ~int(c);

}

// функция декодирования

chardecode(charc)

{

return ~int(c);

}

// кодирование/декодирование, в зависимости от значения параметра enc

char code(char c, int enc)

{

if (enc)

return encode(c);

else

return decode(c);

}

int main()

{

char c;

// пользователь выбирает тип действия: кодирование или декодирование

printf("Encode/decode? (E/D) ");

scanf("%c",&c);

int enc = (c == 'e');

char s1[255],s2[255];

// ввод имён файлов

printf("Name of source file: ");

scanf("%s",s1);

printf("Name of result file: ");

scanf("%s",s2);

FILE*f1,*f2;

// открытие текстового файла для чтения

// f1 = fopen(s1,"r");

if (fopen(s1, "r"==NULL)

{

printf("Cannot open file \n"); exit(0);

}

// открытие текстового файла для записи

// f2 = fopen(s2,"w");

if (fopen(s2, "r"==NULL)

{

printf("Cannot open file \n"); exit(0);

}

// пока не достигнут конец файла1, из него считываются символы

while (fscanf(f1,"%c",&c) != -1)

// запись в файл2 символов после обработки

fprintf(f2,"%c",code(c,enc));

// закрытие файлов

if(fclose(f1)!=0)

fprintf("Cannot close file \n");

if (fclose(f2)!=0)

fprintf("Cannot close file \n");

return0;

}

2 Задача

Из текстового файла считывается текст, затем вызывается функция кодировки.

Дополнительное условие: кодирование с помощью операции xor.

xor:

1,1 -> 0

1,0 -> 1

0,1 -> 1

0,0 -> 0

#include <stdio.h>

intkey= 111111111;

// кодирование: операция xorс ключомkey

char encode(char c)

{

return key^int(c);

}

// декодирование

char decode(char c)

{

return key^int(c);

}

// кодирование/декодирование, в зависимости от значения параметра enc

char code(char c,int enc)

{

if (enc)

return encode(c);

else

return decode(c);

}

int main()

{

char c;

// кодировать или декодировать собирается пользователь

printf("Encode/decode? (E/D) ");

scanf("%c",&c);

int enc = (c == 'e');

char s1[255],s2[255];

// ввод имён файлов

printf("Name of source file: ");

scanf("%s",s1);

printf("Name of result file: ");

scanf("%s",s2);

FILE*f1,*f2;

// открытие текстового файла на чтение

// f1 = fopen(s1,"r");

if (fopen(s1, "r"==NULL)

{

printf("Cannot open file \n"); exit(0);

}

// открытие текстового файла на запись

// f2 = fopen(s2,"w");

if (fopen(s2, "r"==NULL)

{

printf("Cannot open file \n"); exit(0);

}

// пока не достигнут конец файла1, из него считываются символы

while (fscanf(f1,"%c",&c) != -1)

// запись в файл2 символов после обработки

fprintf(f2,"%c",code(c,enc));

// закрытие файлов

// fclose(f1);

if (fclose(f1)!=0)

fprintf(" Cannot close file \n");

// fclose(f2);

if (fclose(f2)!=0)

fprintf(" Cannot close file \n");

return0;

}

Самостоятельная работа

Написать функции шифровки-дешифровки текста. Исходный текст должен храниться в текстовом файле, зашифрованный текст должен записываться в другой текстовый файл.

Лабораторная работа №15

Работа со структурами и объединениями

Цель: закрепление на практике знаний работы со структурой. Массив структур. Запись и чтение структуры из файла.

Методические рекомендации: лабораторная работа рассчитана на 4 часа и состоит из анализа трех заданий и выполнения самостоятельной работы.

Обязательное зачетное задание.

Необходимый уровень знаний:

  • работа с указателями;

  • работа с массивами;

  • работа со строками.

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