Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Ярославна
0 / 0 / 0
Регистрация: 07.02.2012
Сообщений: 10
#1

Странные значения. В чем ошибка? - C++

08.12.2013, 19:09. Просмотров 146. Ответов 0
Метки нет (Все метки)

Получаются странные значения:
max и min элементы получаются вне диапазона. ПОчему?

Используя генератор случайных чисел, заполнить массив из 20 элементов целочисленными значениями в диапазоне [11, 39], сумма цифр которых меньше 7.
Прототип пользовательской функции:
int genprint(int*, const int, const int, const int);
параметры функции: массив, число элементов массива, левая и правая границы интервала случайных чисел, верхняя граница суммы чисел. Функция возвращает общее число сгенерированных значений, которое потребовалось для заполнения всего массива числами.
Вычислить сумму элементов массива, расположенных между вторым минимальным и вторым максимальным элементами.
ПРототип пользовательской функции:
int sum2mxn(int*, const int, int&, int&);
параметры функции: массив, число элементов масива, (вторые) максимальный и минимальный элементы(ссылки).
Функция возвращает сумму элементов массива, расположенных между вторым минимальным и вторым максимальным элементами.
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <ctime>
#include <cstdlib>

using namespace std;
#define N 10

int genprint(int *A, const int arrSize, const int left, const int right, const int high)
{
int a;
int i = 0, counter = 0;
while(i<N)
{
a=rand()%(right-left+1)+left;
counter ++;
if((a%10)+(a/10)<7)
{
A[i] = a;
i++;
}
}
return counter;
}

int find2min(int* pn, int& index)
{
int B[N] = { 0 };
int count = 2, n = 0;
while (--count >= 0)
{
int min = 0;
for (int i = 0; i < N; i++)
if (pn[i] < pn[min])
{
bool found = false;
for (int k = n-1; k >= 0 && !found; k--)
found = (B[k] == i) ? 1 : 0;

if (found == false)
min = i;
}

if (min >= 0) B[n++] = min;
}

if (index >= 0) index = B[1];
return index;
}

int find2max(int* pn, int& index)
{
int B[N] = { 0 };
int count = 2, n = 0;
while (--count >= 0)
{
int max = 0;
for (int i = 0; i < N; i++)
if (pn[i] > pn[max] || max == 0)
{
bool found = false;
for (int k = n-1; k >= 0 && !found; k--)
found = (B[k] == i) ? 1 : 0;

if (found == false)
max = i;
}

if (max >= 0) B[n++] = max;
}

if (index >= 0) index = B[1];
return index;
}

int sum2mxn(int* pn, int min_i, int max_i)
{
int l = 0, h = 0;
if (min_i > max_i)
{
l = max_i;
h = min_i;
}

else if (min_i < max_i)
{
l = min_i;
h = max_i;
}

else if (min_i == max_i)
return pn[min_i];

int sum = 0;
printf("Сгенерированные значения: ");
for (int i = l+1; i < h; i++)
{
printf("%d ",pn[i]);
sum+=pn[i];
}

printf("\n");

return sum;
}

int main()
{
setlocale(LC_ALL, "Russian");
srand(time(0));

const int arrSize = 20;
int A[arrSize];
int left = 11, right = 39, high = 7;
int chislo;
chislo = genprint(A, arrSize, left, right, high);

int min_i = 0, max_i = 0;
find2min(A, min_i);
find2max(A, max_i);
int max, min;
max=find2max(A, max_i);
min=find2min(A, min_i);

for (int i = 0; i < N; i++)
printf("%d ",A[i]);

printf("\n");
printf("-второй max элемент массива = %d\n", max);
printf("-второй min элемент массива = %d\n", min);
printf("Сумма элементов массива = %d\n", sum2mxn(A, min_i, max_i));

system("pause");
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2013, 19:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Странные значения. В чем ошибка? (C++):

Класс дроби. Странные значения - C++
Здравствуйте! Есть такой код: Fraction.h #ifndef FRACTION_H #define FRACTION_H class Fraction

Странные значения в созданном массиве - C++
Здравствуйте. При создании массива(bool next_area) в определенном месте он заполняется следующими значениями: {{253, 183, true, false,...

Странные значения уже инициализированной переменной - C++
std::cout &lt;&lt; &quot;Введите кол-во городов\n&quot;; std::cin &gt;&gt; N; city *A = new city; for (int j = 0; j &lt; N; j++) { std::cout...

Странные значения счетчика цикла. ПОМОГИТЕ! - C++
#include &lt;iostream&gt; using namespace std; double unitInterval = 0.2 ; double OX = 0; double OY = 0; int main() {

В цикле где выводится матрица j принимает какие-то странные значения. Почему? - C++
воде все верно, по в цикле где выводится матрица j принимает какие-то странные значения. Почему?#include &lt;iostream&gt; #include &lt;algorithm&gt; ...

Вывести номера элементов массива, значения которых отличаются менее чем на 3 от значения наименьшего элемента - C++
Ввести одномерный массив А , вывести его. Напечатать номера элементов, значение которых менее чем на 3 отличается от значения наименьшего...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2013, 19:09
Привет! Вот еще темы с ответами:

Реализовать через тип данных структура. При сборке и отладки возникает ошибка. В чем ошибка? - C++
С++ в таблице из 5 строк хранятся данные о товарах: наименование, цена, количество. Определить и вывести наименование товара, цена которого...

Ошибка 2 error LNK2019, не пойму в чем ошибка - C++
Выдает такую ошибку: Ошибка 2 error LNK2019: ссылка на неразрешенный внешний символ &quot;int __cdecl game(void)&quot; (?game@@YAHXZ) в функции....

В чем причина неработоспособности данного кода расчета значения формулы - C++
Задание При выполнении, 1 выполняет сразу два действия место одного и т.д., не хочет работать уже и условия менял. В другой...

В чем ошибка? - C++
В чем ошибка? Подскажите... //--------------------------------------------------------------------------- #include &lt;vcl.h&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru