|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Перенос части кода в функцию пользователя |
|
C/C++ - Перенос части кода в функцию пользователя
|
Новый участник Сообщения: 17 |
Профиль | Отправить PM | Цитировать Доброго времени суток.
Есть одномерный массив из 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 таких функции, одна вернет повторяющееся число, вторая - количество повторений и третья - результат. Но т.к. пар таких чисел может быть несколько, то нужна функция, которая их посчитает, а потом что, обернуть в мейне в цикл функции и вывод до кол-ва этих пар. И уже начиная с этого момента возникают трудности. Буду благодарен за любые подсказки и реализации. (Код можно изменять, например, вместо умножения с присваиваниям, возвести в степень число в ко-во повторений, но вывод должен остаться таким же). Спасибо. |
|
Отправлено: 13:42, 18-04-2017 |
Ветеран Сообщения: 3247
|
Профиль | Отправить PM | Цитировать Цитата ALEVER:
|
|
Отправлено: 13:50, 18-04-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 17
|
Профиль | Отправить PM | Цитировать shisik, можно использовать только циклы, условия. Структуры и дополнительные функции запрещены.
|
Отправлено: 16:15, 18-04-2017 | #3 |
Ветеран Сообщения: 3247
|
Профиль | Отправить PM | Цитировать ALEVER, тогда перейдайте параметры по ссылкам, так получите несколько значений из одной функции.
Цитата ALEVER:
|
|
Отправлено: 16:32, 18-04-2017 | #4 |
Новый участник Сообщения: 17
|
Профиль | Отправить PM | Цитировать shisik, подразумевается запрет функций, например, для сортировки и прочего, а суть реализации через функцию(ии) пользователя.
|
|
Отправлено: 13:00, 19-04-2017 | #5 |
Ветеран Сообщения: 3247
|
Профиль | Отправить PM | Цитировать Цитата ALEVER:
|
|
Отправлено: 14:45, 19-04-2017 | #6 |
Новый участник Сообщения: 17
|
Профиль | Отправить PM | Цитировать shisik, ок, перефразируем: реализовать тот же самый результат(вывод) с помощью функции(ий) пользователя, используя в них и мейне только проверки и циклы.
|
Отправлено: 17:09, 19-04-2017 | #7 |
Ветеран Сообщения: 3247
|
Профиль | Отправить PM | Цитировать ALEVER, хорошо, тогда такой вопрос: вот функция main должна вызывать какую-то другую функцию, которая и будет производить все эти вычисления, так? Принимать эта функция должна исходный массив (это логично), так? А что она должна возвращать? Вывод должен остаться в main? В этом случае результатом должен быть массив, даже многомерный массив. Ну или массив структур.
Ну то есть варавнтов реализации на самом деле очень очень много. Только вот и это нельзя, и то нельзя... Условие не совсем понятно. |
Отправлено: 17:47, 19-04-2017 | #8 |
Новый участник Сообщения: 17
|
Профиль | Отправить PM | Цитировать shisik, функция мейн передает в функции пользователя массив из 10 рандомных элементов. После чего эти функции должны вернуть в мейн нужные значения, а именно: число(а)(которое(ые) подходит условию), его кол-во повторений и результат, выводом из мейна должна быть строка "Number [%d] is repeated [%d] times. Result = [%d]", где 1 - нечетное отрицательное число, повторяемое 2 и более раз, 2 - кол-во повторений этого числа, 3 - результат перемножения этого числа кол-ва повторений, либо, проще говоря, возвести повторяемое число в кол-во этих повторений. При чем учесть, что таких пар повторяемых чисел может быть больше 1 и соответственно предусмотреть.
|
Отправлено: 22:07, 19-04-2017 | #9 |
Ветеран Сообщения: 3247
|
Профиль | Отправить PM | Цитировать Цитата ALEVER:
#include <iostream> #include <cmath> bool inArray(int *arr, int length, int number) { for (int i = 0; i < length; ++i) if (arr[i] == number) return true; return false; } int filterRepeats(int *arr, int length, int *filtered) { int count = 0; for (int i = 0; i < length; ++i) if (!inArray(filtered, count, arr[i])) { filtered[count] = arr[i]; ++count; } return count; } int countNumbers(int *arr, int length, int number) { int count = 0; for (int i = 0; i < length; ++i) if (arr[i] == number) ++count; return count; } int main() { int arr[10] = {1, -7, -7, -5, 0, -2, -5, 0, -7, -4}; int filtered[10]; int uniqueCount = filterRepeats(arr, 10, filtered); for (int i = 0; i < uniqueCount; ++i) { int number = filtered[i]; if (number >= 0 || number % 2 == 0) continue; int count = countNumbers(arr, 10, number); if (count < 2) continue; std::cout << "Number [" << number << "] is repeated ["; std::cout << count << "] times. Result = [" << pow(number, count); std::cout << "]" << std::endl; } return 0; } |
|
Последний раз редактировалось shisik, 19-04-2017 в 23:01. Причина: забыл про условие нечётности Отправлено: 22:58, 19-04-2017 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - перенос профиля пользователя | xoy | Microsoft Windows 2000/XP | 10 | 21-07-2010 15:37 | |
Разное - [решено] Перенос данных пользователя | kvorum | Microsoft Windows 7 | 3 | 04-03-2010 10:21 | |
[решено] Разбор HTML-кода на логические части | Мартиша | Вебмастеру | 9 | 20-06-2009 00:09 | |
[решено] перенос части страницы HTML на другую через DOM | rus-4-ever | Вебмастеру | 1 | 29-10-2008 01:11 | |
подгрузка части кода на html-страницу из отдельного файла | shmond | Вебмастеру | 3 | 04-04-2007 16:43 |
|