ALEVER
18-04-2017, 13:42
Доброго времени суток.
Есть одномерный массив из 10 элементов (положительных и отрицательных), которые генерируются рандомно.
Ищется произведение одинаковых отрицательных нечетных элементов.
Есть верно работающий код:
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <time.h>
int main() {
system("cls");;
int ARR[10], i, j, k, n, P;
srand(time(NULL));
printf("\t\t\t\tARRAY\n");
for(i=0; i<10; i++) {
ARR[i]=rand() % 11 - 7;
printf("%i\t", ARR[i]);
}
printf("\n");
for (i = 0; i < 10; i++) {
if (ARR[i] < 0 && ARR[i]%2 != 0) {
j = 0;
while (j < i && ARR[j] != ARR[i]) j++;
if (j == i) {
n = 0;
for (k = i + 1; k < 10; k++) {
if (ARR[k] == ARR[i]) n++;
}
if (n != 0) {
P = ARR[i];
for (k = 0; k < n; k++) P *= ARR[i];
printf("\nNumber [%d] is repeated [%d] times. Result = [%d]", ARR[i], n+1, P);
}
}
}
}
return 0;
}
Например, для ряда:
1 -7 -7 -5 0 -2 -5 0 -7 -4
Получаем:
Number [-7] is repeated [3] times. Result = [-343]
Number [-5] is repeated [2] times. Result = [25]
Задача стоит вывести тоже самое, но использовав функции пользователя. Т.к. ф-ция может возвращать только лишь 1 значение, то соответственно выходит, что нужно 3 таких функции, одна вернет повторяющееся число, вторая - количество повторений и третья - результат. Но т.к. пар таких чисел может быть несколько, то нужна функция, которая их посчитает, а потом что, обернуть в мейне в цикл функции и вывод до кол-ва этих пар. И уже начиная с этого момента возникают трудности. Буду благодарен за любые подсказки и реализации. (Код можно изменять, например, вместо умножения с присваиваниям, возвести в степень число в ко-во повторений, но вывод должен остаться таким же).
Спасибо.
Есть одномерный массив из 10 элементов (положительных и отрицательных), которые генерируются рандомно.
Ищется произведение одинаковых отрицательных нечетных элементов.
Есть верно работающий код:
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <time.h>
int main() {
system("cls");;
int ARR[10], i, j, k, n, P;
srand(time(NULL));
printf("\t\t\t\tARRAY\n");
for(i=0; i<10; i++) {
ARR[i]=rand() % 11 - 7;
printf("%i\t", ARR[i]);
}
printf("\n");
for (i = 0; i < 10; i++) {
if (ARR[i] < 0 && ARR[i]%2 != 0) {
j = 0;
while (j < i && ARR[j] != ARR[i]) j++;
if (j == i) {
n = 0;
for (k = i + 1; k < 10; k++) {
if (ARR[k] == ARR[i]) n++;
}
if (n != 0) {
P = ARR[i];
for (k = 0; k < n; k++) P *= ARR[i];
printf("\nNumber [%d] is repeated [%d] times. Result = [%d]", ARR[i], n+1, P);
}
}
}
}
return 0;
}
Например, для ряда:
1 -7 -7 -5 0 -2 -5 0 -7 -4
Получаем:
Number [-7] is repeated [3] times. Result = [-343]
Number [-5] is repeated [2] times. Result = [25]
Задача стоит вывести тоже самое, но использовав функции пользователя. Т.к. ф-ция может возвращать только лишь 1 значение, то соответственно выходит, что нужно 3 таких функции, одна вернет повторяющееся число, вторая - количество повторений и третья - результат. Но т.к. пар таких чисел может быть несколько, то нужна функция, которая их посчитает, а потом что, обернуть в мейне в цикл функции и вывод до кол-ва этих пар. И уже начиная с этого момента возникают трудности. Буду благодарен за любые подсказки и реализации. (Код можно изменять, например, вместо умножения с присваиваниям, возвести в степень число в ко-во повторений, но вывод должен остаться таким же).
Спасибо.