Консультация № 188561
27.12.2015, 18:10
0.00 руб.
0 2 1
Здравствуйте, уважаемые эксперты! Дана следующая задача:
Дано целое число N и набор из N целых чисел. Найти номера первого и последнего максимального элемента из данного набора и вывести их в указанном порядке. Массивы не использовать.
Найти номер первого максимального элемента у меня получается, но вот найти номер последнего максимального и вывести его значение я не могу, к сожалению.
Прошу вашей помощи.

Приложение:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <math.h>

int main()
{ SetConsoleCP(1251);
SetConsoleOutputCP(1251);
printf("Программа находит номера первого и последнего максимального элемента из набора\n");
int N;
printf("\tВведите количество элементов ряда N: ");
scanf("%d", &N);
printf("\n");
if (N<=0)
{
printf("Недопустимое значение. Попытайтесь снова. \n");
return 0;
}
int max=-1,maxn, a,j;

{

for (j=0;j<N;j++)
{
a=-17+rand()%100;
printf("%3d ", a);
if (a>max)
{
max=a;
maxn=j+1;
}
}
if (max>-1){
printf("\nНомер первого максимального элемента = %d\n", maxn);
printf("Его значение: %d\n", max);
max=-1;}
}
system("pause");
return 0;
}

Обсуждение

давно
Посетитель
7438
7205
28.12.2015, 00:32
общий
Адресаты:
Хм, а что понимается под "первым и последним максимальным элементом"?
Странная формулировка... Предполагается, что максимальных элементов несколько?
А если один, то выводим инфу об одном?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Старший Модератор
312929
1973
01.01.2016, 13:58
общий
это ответ
Здравствуйте, fridge!

Вот исправленный вариант программы:
[code lang=shell]
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <math.h>
#include <ctime>

int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
printf("Программа находит номера первого и последнего максимального элемента из набора\n");
int N;
printf("\tВведите количество элементов ряда N: ");
scanf("%d", &N);
printf("\n");
if (N<=0)
{
printf("Недопустимое значение. Попытайтесь снова. \n");
return 0;
}
int max=0, maxn, maxn2, a, j;
srand(time(0));
for (j=0;j<N;j++)
{
a = -17+rand()%100;
printf("%3d ", a);
if (a>max)
{
max = a;
maxn2 = maxn = j + 1;
}
else if (a==max)
{
maxn2 = j + 1;
}
}
if (max>-1)
{
printf("\nНомер первого максимального элемента = %d\n", maxn);
printf("\nНомер последнего максимального элемента = %d\n", maxn2);
printf("\nЕго значение: %d\n", max);
max=-1;
}
system("pause");
return 0;
}
[/code]
Форма ответа