Напечатать в обратном порядке наибольший элемент последовательности и его номер в массиве - C (СИ) (74896)
Формулировка задачи:
Всем добра) Ребята как выполнить эти задания? Дан массив из N целых чисел, где N<=16, каждое число в диапазоне от –32000 до 32000.
Массив для каждой задачи должен задаваться в секции объявлений глобальных переменных, например:
Примечание:
· Массив перед обработкой и после обработки распечатать в виде строки чисел.
· Массив должен задаваться в секции объявлений.
· В программе необходимо использовать функции с передаваемыми параметрами.
· Рекомендуется использовать операции целочисленной арифметики. Если в массиве отсутствует искомый элемент, то об этом следует вывести сообщение.
Задание. Определение характеристик массива.Две задачи решаются в рамках одной программы.
int A[16] = {85,-3,13,94,72,169,-21,43,57,46,9,12,83,101,49,28}; int B[16] = {18,21,563,-412,84,-17,520,321,121,954,7,19,883,10,17,1};
Напечатать в обратном порядке наибольший элемент последовательности и его номер в массиве. Пример: 1 5 16 234 587 14; результат: R=785, i=5.
Найти сумму всех элементов, состоящих только из разных цифр. Пример: 32 122 343 166 -2 521; результат: 32+521+(-2)=551.
Решение задачи: «Напечатать в обратном порядке наибольший элемент последовательности и его номер в массиве»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <stdbool.h> //----------------------------------------------------------------------------- void Print(const int array[], unsigned size) { unsigned i; for (i = 0; i < size; ++i) { printf("%d ", array[i]); } printf("\n"); } //----------------------------------------------------------------------------- unsigned GetMax(const int array[], unsigned size) { unsigned i; unsigned max = 0; for (i = 1; i < size; ++i) { if (array[max] < array[i]) { max = i; } } return max; } //----------------------------------------------------------------------------- unsigned NumberToDigits(unsigned number, unsigned digit[]) { if (number == 0) { return 0; } *digit = number % 10; return 1 + NumberToDigits(number / 10, digit + 1); } //----------------------------------------------------------------------------- bool IsUnique(int number) { unsigned digits[10]; unsigned len = NumberToDigits(abs(number), digits); bool isUnique = true; unsigned i, j; for (i = 0; (i < len - 1) && isUnique; ++i) { for (j = i + 1; (j < len) && isUnique; ++j) { isUnique = (digits[i] != digits[j]); } } return isUnique; } //----------------------------------------------------------------------------- int Sum(const int array[], unsigned size, bool (*Func)(int)) { unsigned i; int sum = 0; for (i = 0; i < size; ++i) { if (Func(array[i])) { sum += array[i]; } } return sum; } //----------------------------------------------------------------------------- int main() { int A[] = {32, 122, 343, 166, -2, 521}; unsigned size = sizeof(A) / sizeof(*A); unsigned max = GetMax(A, size); Print(A, size); printf("max[%u] = %d\n", max + 1, A[max]); printf("sum = %d\n", Sum(A, size, IsUnique)); return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д