Вычисление характеристик последовательности - C (СИ)
Формулировка задачи:
Вычислить указанные в Вашем варианте характеристики последовательности, вводимой с клавиатуры (без использования массивов и промежуточных файлов для хранения всей последовательности), учитывая, что элементы последовательности могут быть введены только один раз
В программе
обязательно применение функций
с передаваемыми параметрами. Подсчитать количество троек соседних чисел, которые можно взять в качестве длин сторон равнобедренного треугольника. Пример: 1, 8, 10, 3, 4, 4, 7, 20, 21, 21, 54, 45, 15, -18, 0 результат: K=3.Решение задачи: «Вычисление характеристик последовательности»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int check(int a, int b, int c) {
// проверка на треугольник, дальше сами
int aa = (a + b > c) && (b + c > a) && (c + a > b);
return aa;
}
void print(int a, int b, int c) {
if (check(a, b, c))
printf("\n%d %d %d => yes", a, b, c);
else
printf("\n%d %d %d => no", a, b, c);
}
int main() {
int t, a, b, c;
int i, j = 1;
// для тестов, впрограмме не нужно
int primer[] = { 0, 0, 0, 3, 4, 4, 7, 20, 21, 21, 54, 45, 15, -18, 0 };
int n = sizeof(primer) / sizeof(primer[0]);
// ввести свою n
for (i = 0; i < n; ++i) {
// тут свой ввод
t = primer[i];
if (j == 1) {
a = t;
} else if (j == 2) {
b = t;
} else if (j == 3) {
c = t;
}
j++;
if (i >= 2) {
print(a, b, c);
j = j <= 3 ? j : 1;
}
}
return 0;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Определяем функцию
check, которая проверяет, является ли данная комбинация чисел треугольником - Определяем функцию
print, которая выводит сообщение о том, является ли треугольник или нет - В функции
mainопределяем переменныеt,a,b,c,i,jи массивprimer - Задаем размер массива
nи выполняем ввод своих данных (уже не используется) - В цикле
forпроходим по массивуprimer - При каждой итерации присваиваем переменным
a,b,cсоответствующие значения - Если
jравно 1, тоaприсваивается значениеt - Если
jравно 2, тоbприсваивается значениеt - Если
jравно 3, тоcприсваивается значениеt - Увеличиваем
jна 1 - Если
iбольше или равно 2, то вызываем функциюprintи сбрасываемjдо 1, 2 или 3 - По завершению цикла выводим 0, чтобы указать, что программа успешно завершилась