Skip to content

Работа с файлами и циклами

Доброго времени суток. Сегодня мы разберём несколько примеров, а точнее четыре, на работу с файлами в Си. Сразу скажу, если вы читали предыдущие статьи этой рубрики, то вам не составит труда разобраться в коде. Итак, не будем тянуть резину.

Вывести в файл каждое пятое число из диапазона [-45; 67]. Числа расположить в строках по восемь чисел в каждой. Вывести на экран в столбик все числа из этого диапазона с последней цифрой равной единице. Выполнить программу с использованием оператора цикла for().

Код:

#include <stdio.h>
#include <stdlib.h>

int main(void) {
	FILE*open;
	open = fopen("open.txt","w");
        int n = 67, i = -45, e = 1;
	for (i = -45; i <= n ;i += 5, e++){
		if (e < 8) {
			fprintf(open,"%d,", i);
		}
		else {
			e = 0; fprintf(open,"%d,\n", i);
		}
	}
	for (i = -45; i <= n; i ++ ){
		if (i % 10 == 1 || i % 10 == -1) {
			fprintf(open,"\n%d", i);
		}
	}
	fclose(open);
	return EXIT_SUCCESS;
}

Вывод в файле:
Снимок2

Даже не знаю какой комментарий тут оставить, все команды были разобраны, и алгоритм незамысловатый. =)
Давайте, тогда второй:

Вывести в файл десять случайных чисел кратных семи из диапазона [-578; 832]. Числа выводить в строчку, используя поле для вывода в 5 клеток. Выполнить программу с использованием оператора цикла for().

Код:

#include <stdio.h>
#include <stdlib.h>

int main(void) {
	FILE*open;
	open = fopen("open.txt", "w");
	int n = 0, e = 0;
	for (e = 1 ; e <= 10 ; ){
		n = -578 + rand() % (832 + 578 + 1);
		if (n % 7== 0){
			e++;
			fprintf(open,"%5d", n);
		}
	}
	fclose(open);
	return EXIT_SUCCESS;
}

Вывод в файле:
Снимок3
Суть этого примера в том, что мы увеличиваем переменную e только в том случаем, если «рандомное» число кратно 7.
К сожалению, больше ничего интересного в этом примере нет.

Ввести с клавиатуры дробное число. Если это число окажется положительным, то циклически отнимать от него 5 до тех пор, пока оно не станет отрицательным. Если оно отрицательное или ноль, то циклически прибавлять к нему случайные дробные числа до тех пор, пока оно не превысит 35. Вывести на экран в столбик промежуточные значения числа в формате «число + случайное_число = результат». Выполнить программу с использованием оператора цикла while или do- while.

Код:

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>

int main(void) {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);

	double n = 0,t = 0, r = 0;
	scanf("%lf", &n);
	if (n > 0) {
		do {
			n -= 5;
		}while (n >= 0);
		printf("Число отрицательное, уменьшается до %+.3lf", n);
	}
	else {
		while (n<= 35) {
			t = rand() % 100 / 10.0;
			r += n+t;
			printf("%.3lf + %.3lf = %.3lf\n", n, t, r);
			n += t;
		}
	}
	return EXIT_SUCCESS;
}

Напомню, что команды SetConsoleCP(1251), SetConsoleOutputCP(1251) из библиотеки windows.h отвечают за корректный вывод кириллицы в консоль. В алгоритме ничего сложного нет. Но, если всё-таки не понятно — пишите в комментариях.
И последний на сегодня:

Ввести с клавиатуры целое число. Вывести на экран произведение четных и нечетных цифр в этом числе. Повторить процедуру для еще десяти таких чисел. Выполнить программу с использованием оператора цикла while для подсчета произведения цифр.

Код:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>

int main(void) {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
	int n = 0, chet = 1, nechet = 1, i=0;
	for (i=1; i <= 10; i++) {
        chet = 1;
        nechet = 1;
		scanf("%d", &n);
		while (n>0){
			if (n % 10 % 2 == 0) {
				chet *= n % 10;
				n /= 10;
			}
			else {
				nechet *= n % 10;
				n /= 10;
			}
		}
        printf("Перемножение чётных = %d, перемножение нечётных = %d\n", chet, nechet);
	}

	return EXIT_SUCCESS;
}

Суть алгоритма в отрезании по одной цифре справа числа, с помощью команды % ( деление без остатка ). Определяем чётная цифра или нет, и перемножаем с соответствующей группой. Замечу, что 0 относится к чётным в нашей программе.

Вот и всё. Пишите вопросы, комментируйте, всем ответим.

Все исходники без файлов txt.
Скачать исходники задачи — 1
Скачать исходники задачи — 2
Скачать исходники задачи — 3
Скачать исходники задачи — 4

Опубликовано вСи

Будьте первым, кто оставит комментарий

    Добавить комментарий

    Ваш e-mail не будет опубликован. Обязательные поля помечены *