Организовать обмен компонентов между файлами в соответствии со схемой - C (СИ)
Формулировка задачи:
Заданы файлы f1, f2, f3, f4, f5, компонентами которых являются действительные числа. Организовать обмен компонентов между файлами в соответствии со схемой:
f1->f2,
f2->f3,
f3->f4,
f4->f5,
f5->f1.
Разрешается использовать один промежуточный файл h.
У меня есть наработки, но я не могу понять как правильно совершить обмен между файлами. Я уже много разных способов для этого пыталась использовать.
Хотя бы объясните как правильно обменивать содержимое файлов - желательно на каком-то примере. Я уже не прошу писать мне программу полностью.
#include <stdio.h> main() {float ch1[10], ch2[10], ch3[10], ch4[10], ch5[10]; int n, i; printf("Vvedite n:\n"); scanf("%i", &n); FILE *f1; f1=fopen("g:\\prog13\\f1.txt", "w"); printf("Vvedite chisla\n"); for(i=0;i<n;i++) {scanf("%f", &ch1[i]);} for(i=0;i<n;i++) fprintf(f1, "%8.3f", ch1[i]); fclose(f1); FILE *f2; f2=fopen("g:\\prog13\\f2.txt", "w"); printf("\nVvedite chisla\n"); for(i=0;i<n;i++) {scanf("%f", &ch2[i]);} for(i=0;i<n;i++) fprintf(f2, "%8.3f", ch2[i]); fclose(f2); FILE *f3; f3=fopen("g:\\prog13\\f3.txt", "w"); printf("\nVvedite chisla\n"); for(i=0;i<n;i++) {scanf("%f", &ch3[i]);} for(i=0;i<n;i++) fprintf(f3, "%8.3f", ch3[i]); fclose(f3); FILE *f4; f4=fopen("g:\\prog13\\f4.txt", "w"); printf("\nVvedite chisla\n"); for(i=0;i<n;i++) {scanf("%f", &ch4[i]);} for(i=0;i<n;i++) fprintf(f4, "%8.3f", ch4[i]); fclose(f4); FILE *f5; f5=fopen("g:\\prog13\\f5.txt", "w"); printf("\nVvedite chisla\n"); for(i=0;i<n;i++) {scanf("%f", &ch5[i]);} for(i=0;i<n;i++) fprintf(f5, "%8.3f", ch5[i]); fclose(f5); FILE *h; h=fopen("g:\\prog13\\h.txt", "w"); f1=fopen("g:\\prog13\\h.txt", "r"); . . . . . . for(i=0;i<n;i++){ while (fread(&ch1[i], sizeof(float), 1, f1)!=0) { fwrite(&ch1[i], sizeof(float), 1, h); } } fclose(f1); fclose(h); }
Решение задачи: «Организовать обмен компонентов между файлами в соответствии со схемой»
textual
Листинг программы
FILE *f; char name[40]; float ch; for(j=1; j<=5; j++) { sprintf(name, "d:\\prog13\\f%d.txt", j); f=fopen(name, "w"); printf("Vvedite chisla\n"); for(i=0;i<n;i++) { scanf("%f", &ch); fprintf(f, "%8.3f", ch); } fclose(f); }
Объяснение кода листинга программы
- Создается переменная типа FILE* и ей присваивается значение, открывающее файл.
- Создается массив из 40 символов для хранения имени файла.
- Создается переменная типа float для хранения числа с плавающей точкой.
- Запускается цикл от 1 до 5.
- В каждой итерации цикла формируется строка, представляющая имя файла, путем конкатенации строк и вставки числа в строку.
- В каждой итерации цикла открывается файл с помощью функции fopen, которой передаются имя файла и режим открытия
w
. - Выводится приглашение для ввода чисел.
- Запускается внутренний цикл от 0 до n.
- В каждой итерации внутреннего цикла считывается число с плавающей точкой с помощью функции scanf.
- В каждой итерации внутреннего цикла число записывается в файл с помощью функции fprintf, которой передаются файл, число и формат вывода.
- После завершения внутреннего цикла файл закрывается с помощью функции fclose.
- После завершения внешнего цикла файлы закрываются, но порядок их закрытия не указан.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д