Главная страница

Задания по файлам на С. Работа с файлами с 8. Программа #include #include #include int main() file txt char strtxt100100, d1


Скачать 23.77 Kb.
НазваниеПрограмма #include #include #include int main() file txt char strtxt100100, d1
АнкорЗадания по файлам на С
Дата02.11.2021
Размер23.77 Kb.
Формат файлаdocx
Имя файлаРабота с файлами с 8.docx
ТипПрограмма
#261356

Задание 8.

В данном файле символы каждой строки упорядочить по алфавиту.

Программа:

#include

#include

#include
int main()

{

FILE* txt;

char strtxt[100][100], d[1];

int i, j, k, count = 0, len, max = 0;
if (!(txt = fopen("p3.txt", "r"))) { //Проверяем открывается ли файл.

printf("Error opening file!");

return 0;

}
while (fgets(strtxt[count], 100, txt)) count++; //Считаем количество строк в файле.
txt = fopen("p3.txt", "w");
for (k = 0; k < count; k++) //Пока не for не пройдёт все строки.

{

len = strlen(strtxt[k]) - 1; //Без -1 появляется пробел, с -2 удаляется первый символ.
for (i = 0; i < len; i++) //Пока не пройдёт все символы в строке.

{

for (j = 0; j < len - i; j++)
if ((int)strtxt[k][j] > (int)strtxt[k][max]) //Если max значение меньше j, то присваиваем max значение j.

max = j; //Находим максимальное значение.
d[0] = strtxt[k][max];

strtxt[k][max] = strtxt[k][len - i - 1];

strtxt[k][len - i - 1] = d[0];

max = 0; //Сортируем "массив" символов в строке по возрастанию.

}

fputs(strtxt[k], txt); //Записываем ответ.

}

printf("Конец.");

fclose(txt);

return 0;

}

Задание 9.

В файле записана непустая последовательность целых чисел (целое число – это последовательность десятичных цифр, начинающаяся знаком + или -). Создать новый файл, где все отрицательные числа заменены нулем.

Программа:

#include

#include
using namespace std;
int main()

{

setlocale(LC_ALL, "Russian");
FILE* txt1;

FILE* txt2 = fopen("p.txt", "wt");

ifstream inp("p9.txt");
if (!(txt1 = fopen("p9.txt", "r+"))) { //Проверяем наличие файла.

printf("Файл не открывается.");

return 0;

}

while (inp.peek() != EOF) { //Проходит через каждый символ в файле.
int t;

inp >> t; //Значение симвала в файле присваивается переменной t.
if (t > 0 || t == 0) { //Если t больше 0 или равно ему, то просто записываем значение в файл.

fprintf(txt2, "%d \n ", t);

}
if (t < 0) { //Если t меньше нуля, то присваиваем t значение 0 и записываем в файл.

t = 0;

fprintf(txt2, "%d \n ", t);

}

}
return 0;

}

Задание 10.

В файле подсчитать количество строк, которые начинаются и оканчиваются один и тем же символом.

#include

#include
int main()

{

setlocale(LC_ALL, "rus");
FILE* txt;

char strtxt[80];

int count = 0;

if (!(txt = fopen("p10.txt", "r+"))) { //Проверяем наличие файла.

printf("Файл не открывается");

return 0;

}

while (fgets(strtxt, 80, txt)) //Пока не пройдёт все строки.

if (strtxt[0] == strtxt[strlen(strtxt) - 2]) //Сравниваем первый и последний символ.

count++; //Считаем количество строк.

printf("Количество строк: %d", count);

fclose(txt);

return 0;

}

Задание 11.

Даны три файла разного размера (имена файлов вводит пользователь). Заменить содержимое самого длинного файла на содержимое самого короткого.

Программа:

#include

#include
int main()

{

setlocale(LC_ALL, "rus");
FILE* txt1, * txt2, * txt3;

FILE* txtB = nullptr; //Нулевой указатель типа FILE.

FILE* txtM = nullptr;

char strtxt[80], str1[80], str2[80], str3[80];

int count1 = 0, count2 = 0, count3 = 0;

printf("Имя 1-го файла:\n");

gets_s(str1); //Присваиваем переменной файл.

printf("Имя 2-го файла:\n");

gets_s(str2);

printf("Имя 3-го файла:\n");

gets_s(str3);

if (!(txt1 = fopen(str1, "r"))) { //Проверяем наличие и работу файла.

printf("Файл 1 не открывается.");

return 0;

}

if (!(txt2 = fopen(str2, "r"))) {

printf("Файл 2 не открывается.");

return 0;

}

if (!(txt3 = fopen(str3, "r"))) {

printf("Файл 3 не открывается.");

return 0;

}
while (fgetc(txt1) != EOF) //Проходит весь файл.

count1++; //Считает количество символов.

while (fgetc(txt2) != EOF)

count2++;

while (fgetc(txt3) != EOF)

count3++;

fclose(txt1);

fclose(txt2);

fclose(txt3);

if (count1 < count2 && count1 < count3) { //Находим самый короткий файл.

txtB = fopen(str1, "r");

if (count2 < count3) //Находим самый длинный файл.

txtM = fopen(str3, "w");

else

txtM = fopen(str2, "w");

}

else if (count2 < count1 && count2 < count3) {

txtB = fopen(str2, "r");

if (count1 < count3)

txtM = fopen(str3, "w");

else

txtM = fopen(str1, "w");

}

else if (count3 < count1 && count3 < count2) {

txtB = fopen(str3, "r");

if (count1 < count2)

txtM = fopen(str2, "w");

else

txtM = fopen(str1, "w");

}

while (fgets(strtxt, 80, txtB)) //Считываем сиволы из txtB и сохраняем их в strtxt.

fputs(strtxt, txtM); //Записываем в файл txtM strtxt.

fclose(txtB);

fclose(txtM);

printf("Конец.");

return 0;

}

Задание 12.

Имеются два файла (размеры файлов могут не совпадать). Переписать элементы первого файла во второй, второго – в первый. Использовать вспомогательный файл.

Программа:

#include

#include
int main()

{

FILE* txt1, * txtP, * txt2;

char strtxt[80];

if (!(txt1 = fopen("p12.txt", "r"))) { //Проверяем наличие и работу файла.

printf("Файл 1 не открывается.");

return 0;

}

if (!(txtP = fopen("P.txt", "w"))) {

printf("Файл не открывается.");

return 0;

}

if (!(txt2 = fopen("p21.txt", "r"))) {

printf("Файл 2 не открывается.");

return 0;

}

while (fgets(strtxt, 80, txt1)) //Считываем символы из txt1 и записываем их в strtxt.

fputs(strtxt, txtP); //Записываем strtxtx в txtP.

fclose(txt1);

fclose(txtP);

txt1 = fopen("p12.txt", "w");

while (fgets(strtxt, 80, txt2)) //Считываем символы из txt2 и записываем их в strtxt.

fputs(strtxt, txt1); //Записываем strtxtx в txt1.

fclose(txt1);

fclose(txt2);

txtP = fopen("P.txt", "r");

txt2 = fopen("p21.txt", "w");

while (fgets(strtxt, 80, txtP)) //Считываем символы из txtP и записываем их в strtxt.

fputs(strtxt, txt2); //Записываем strtxtx в txt2.

fclose(txtP);

fclose(txt2);

printf("Конец.");

return 0;

}

Задание 13.

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

Программа:

#include

#include
int main()

{

setlocale(LC_ALL, "rus");
FILE* txt;

char strtxt[80];

int i = 0, max = 0, maxLen = 0;

if (!(txt = fopen("p13.txt", "r+"))) { //Проверяем работу и наличие файла.

printf("Файл не открывается.");

return 0;

}

while (fgets(strtxt, 80, txt)) { //Считываем символы из txt и записываем их в strtxt.

if (strlen(strtxt) > maxLen) { //Сравниваем длину данной строки с максимальной.

maxLen = strlen(strtxt); //Если данная строка больше максимальной.

max = i + 1; //Определяем номер максимальной строки.

}

i++;

}

printf("Самая длинная строка: %d", max);

fclose(txt);

return 0;

}


написать администратору сайта