Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Козырева И., лабораторные работы.doc
Скачиваний:
4
Добавлен:
16.04.2019
Размер:
2.95 Mб
Скачать

Лабораторная работа №6 Работа с файлами

Цель работы

Освоить функции для работы с файлами: чтения и записи символов, строк и байтов, управления указателем на текущую позицию в файле и др. познакомиться с различными типами файлов и режимами работы с ними.

Варианты заданий

  1. Дан символьный файл f. Записать в файл g элементы файла f в обратном порядке.

#include "stdafx.h"

#include <iostream>

#include <locale>

#include <stdio.h>

#include <string.h>

using namespace std;

Void main()

{

setlocale(LC_ALL,"Russian");

FILE *f;//указатель на файл

f= fopen("1.txt","w");//открытие файла для записи

char *a=new char[];//строка

puts("Введите строку: ");//диалог с пользователем

gets(a);

int len=strlen(a);//длина строки

for(int i=len;i>=0;i--)//запись в файл в обратном порядке

fputc(a[i],f);

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

puts("Выполнено!");

}

  1. Дан символьный файл f. Получить файл g из файла f заменой всех его прописных букв одноименными строчными.

#include "stdafx.h"

#include <iostream>

#include <locale>

#include <stdio.h>

#include <string.h>

using namespace std;

Void main()

{

setlocale(LC_ALL,"Russian");

FILE *f;//указатель на файл

f= fopen("1.txt","w");//открытие файла для записи

char *a=new char[];//строка

puts("Введите строку: ");//диалог с пользователем

gets(a);

int len=strlen(a);//длина строки

char *b=new char[];//вспом. массив

for (int i=0;i<len;i++){//конвертация

if (islower(a[i]))//для букв нижнего регистра

b[i]=toupper(a[i]);

if (isupper(a[i]))//для букв верхнего регистра

b[i]=tolower(a[i]);

if (a[i]==' ')//для пробела

b[i]=' ';

}

for(int i=0;i<len;i++)//запись в файл

fputc(b[i],f);

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

puts("Выполнено!");

}

  1. Дан файл целых чисел f. Записать в файл g все четные элементы файла f, а в файл t - нечетные. Порядок следования чисел сохраняется.

  2. Дан файл целых чисел f. Записать в файл g все положительные элементы файла f, а в файл t - отрицательные.

  3. Дан символьный файл f, содержащий слова, разделенные пробелами. Записать в файл g самое длинное и самое короткое слова текста.

  4. Дан символьный файл f, содержащий слова, разделенные пробелами. Подсчитать сколько слов в нем, состоящих из одной буквы, количество записать в файл g.

  5. Дан файл целых чисел f. Записать в файл g количество элементов файла f, больших заданного числа x.

  6. Дан файл целых чисел f. Записать в файл g все числа из него, являющиеся полными квадратами.

  7. Даны два символьных файла f и g. Определить, совпадают ли элементы файла f с элементами файла g. Если нет, то получить номер первого элемента, в котором файлы отличаются между собой.

  8. Дан файл целых чисел f. Определить, есть ли в нем повторяющиеся числа. Записать в файл g только различающиеся элементы файла f.

#include "stdafx.h"

#include <iostream>

#include <time.h>

#include <stdio.h>

using namespace std;

Void main()

{

FILE *f;//файл для чтения

f = fopen("1.txt","r");

FILE *g;//файл для записи

g = fopen("2.txt","wt");

int k=0;//счетчик

int m[10];//массив для работы

for(int i=0; i<10; i++)

fscanf(f,"%d", &m[i]);//запись из файла в массив

for(int i=0; i<10; i++){

for(int j=0; j<10; j++)

if(m[i]==m[j])//проверка

k++;

if (k==1) fprintf(g,"%d",m[i]);//если число встречается только один раз то записываем его в новый файл

k=0;//обнуляем счетчик

}

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

fclose(g);

}