Сегодня мы продолжаем говорить о работе с переменными на языке Си и знакомится с примерами будем в уже привычном вам формате «марафон» =). Особое внимание уделим работе с файлами. Что же, вперёд!
Для двух целых и одной дробной переменной задать случайные значения из диапазона [-72; -63]. Вывести переменные и их значения в файл output.txt в строчку.
И вот код:
#include <stdio.h> #include <stdlib.h> int main(void) { int x, y; double z; x = -72 + rand() % (-63 + 72 + 1); y = -72 + rand() % (-63 + 72 + 1); z = -72 + rand() % (-63 + 72 + 1); FILE * output; output = fopen("output.txt", "w"); fprintf(output, "%d,%d,%lf", x, y, z); fclose(output); return EXIT_SUCCESS; }
Новые команды и выражения:
-72 + rand() % (-63 + 72 + 1) — выражения для задания «рандомного» значения в промежутке от -72 до -63. Что бы лучше понять как задаётся период, советую самим поэкспериментировать.
FILE * output; — если точно, то создаётся ссылка на файл, тип ссылки FILE, но проще — объявим переменную, которой назовём рабочий файл.
fopen(,) — с помощью этой команды (как вы догадались) открываем файл, который у нас называется «output.txt». Через запятую указывается параметр (в нашем случае «w»). «w» и «r» — два основных параметра, один для записи, другой для чтения. Более детально о функции и параметрах тут.
fclose() — команда закрытия файла, не забывайте её прописывать после работы с файлом.
Побежали дальше!
В файле data.txt на первой строке записаны пять символов, на второй строке — три целых числа. Объявить необходимое количество переменных и записать в них значения из файла. Вывести на экран в строчку все переменные и их значения. Найти и вывести на экран среднее арифметическое значение всех целых переменных.
Код:
#include <stdio.h> #include <stdlib.h> #include <windows.h> int main(void) { SetConsoleCP(1251); SetConsoleOutputCP(1251); FILE * data; data=fopen("data.txt", "r"); char sim1, sim2, sim3, sim4, sim5; int ch1, ch2, ch3, arf; fscanf(data, "%c%c%c%c%c%d%d%d", &sim1, &sim2, &sim3, &sim4, &sim5, &ch1, &ch2, &ch3); printf("%c\t%c\t%c\t%c\t%c\t%d\t%d\t%d\n", sim1, sim2, sim3, sim4, sim5, ch1, ch2, ch3); arf= (ch1+ch2+ch3)/3; printf("Среднее арифметическое равно %d", arf); fclose(data); return EXIT_SUCCESS; }
Сразу скажу что команды SetConsoleCP(1251) и SetConsoleOutputCP(1251) из библиотеки нужны только для того, чтобы консоль поняла кириллицу и вывела не «абра-кадабру», а читабельный текст.
Больше тут нет ничего нового. И алгоритм банален: открываем файл, считываем последовательно символьные переменные, затем считываем числа. Далее выводим в консоль их среднее арифметическое значение. Следует отметить, что среднее арифметическое у нас имеет тип integer (целочисленный).
Файл, из которого выводим, выглядит так:
Следующий пример.
В файле data.txt на первой строке записаны два целых числа, на второй строке — три дробных числа. Прочитав файл, с помощью тернарных операций найти наибольшее из целых чисел и наименьшее из дробных. Результаты вывести на экран.
Код:
#include <stdio.h> #include <stdlib.h> #include <windows.h> int main(void) { SetConsoleCP(1251); SetConsoleOutputCP(1251); FILE*data; data = fopen("data.txt", "r"); int max, a, b; double min, c, d, e; fscanf(data, "%d%d%lf%lf%lf", &a, &b, &c, &d, &e); max=(a > b) ? a : b; min=(d < e) ? d : e; min=(min < c) ? min : c; printf("Максимально среди целых равно %d\nМинимально среди дробных равно %lf", max, min); fclose(data); return EXIT_SUCCESS; }
Тернарные операции — это своего рода замена условия if
Форма записи тернарной операции в Си : «условие» ? «выражение 1» : «выражение 2». Если условие истинно, то выполняется выражение 1, иначе (условие ложно) выполняется выражение 2. Более говорить об этом примере нечего.
Бежим дальше.
Объявить необходимое количество переменных и задать им начальные значения с клавиатуры. Вычислить результат выражения и вывести его на экран. Учесть допустимости значений переменных.
= * ( −10) / ( −10) + ( / ( +1))
Код:
#include <stdio.h> #include <stdlib.h> #include <math.h> int main(void) { int d, z, b, x, y; double l; scanf("%d%d%d", &d, &z, &b); x = (z * (d + 10)) / (abs(b - 10)); y = (log(b)) / (z = 1); l = x + y; printf("%.4lf", l); return EXIT_SUCCESS; }
В этом примере мы познакомимся с библиотекой math.h и её двумя командами log() и abs(). log() — натуральный логарифм, abs() — модуль числа. Не думаю, что здесь требуется какое либо объяснение действий. Только замечу что d, z, и b мы задаём в integer, а l в double.
И последнее на сегодня:
Установить соответствия между символами и чувствами. Ввести с клавиатуры символ и вывести на экран соответствующее чувство. ‘%’ — зрение, ‘#’ — осязание, ‘*’ — обоняние, ‘&’ — слух, ‘@’ — вкус. Выполнить программу с использованием оператора switch.
Код:
#include <stdio.h> #include <stdlib.h> #include <windows.h> int main(void) { SetConsoleCP(1251); SetConsoleOutputCP(1251); char x; scanf("%c", &x); switch(x) { case ('#'): printf("осязание"); break; case ('@'): printf("вкус"); break; case ('*'): printf("обоняние"); break; case ('%'): printf("зрение"); break; case ('&'): printf("слух"); break; default : ;break; } return EXIT_SUCCESS; }
Тут всё тоже несложно. Switch — по результату схож с if else. То есть мы предоставляем ему переменную (x), он её сравнивает с каждым пунктом и выводит, если находит совпадение. default — подразумевает все остальные случаи, кроме описанных выше в case. break — сама по себе эта команда позволяет выйти из цикла, и в данном случае, благодаря ей мы выходим из switch.
Советую вам посмотреть еще и 1 урок по работе с переменными в Си.
Вот и всё. Пишите вопросы, комментируйте, всем ответим.
Все исходники без файлов txt.
Скачать исходники задачи — 1
Скачать исходники задачи — 2
Скачать исходники задачи — 3
Скачать исходники задачи — 4
Скачать исходники задачи — 5
Будьте первым, кто оставит комментарий