14.05.2016, 11:23
общий
это ответ
Здравствуйте, Usagisan!
Исправленная программа:
[code h=200]
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
/** 2. Дано натуральные числа N и B. Используя функцию rand(),
произвести последовательность N целых чисел, принадлежащих диапазону [-B, B].
Напечатать количество элементов, содержащихся между первым и последним максимальными.
Если в последовательности один максимальный элемент, то вывести 0. */
int main()
{
srand(time(NULL));
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int B, N;
printf("Введите число B: ");
scanf("%d", &B);
printf("Введите кол-во элементов в последовательности N: ");
scanf("%d", &N);
int i, a;
int max, b, c;
for(i=0; i<N; i++)
{
a=rand()%(2*B+1)-B;
printf("%d ", a);
if(i==0) //0-й элемент, а не 1-й
{
max=a; //максимальное значение у нас только одно
b=c=i; //индексы первого и последнего
}
else //все остальные
{
if (a>max)
{
max=a; //новый максимальный
b=c=i; //индексы равны индексу нового максимального
}
else if (a==max)//если максимальные равны
c=i; //то сохраняем индекс последнего!
}
}
//количество элементов между последним и первым максимальным равно
//разности между индексами минус 1, ну или 0, если максимальный один
printf("\n\nmax = %d, k = %d\n", max, (c==b)?0:c-b-1);
return 0;
}[/code]
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен