Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2019, 12:45   #11
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Код:
цикл с номера минимального  до конца
Код:
цикл с номера следующего за минимальным  до конца
Если с минимального, то условие убывания никогда не выполнится: он же минимальный.
А вообще условие задания, какими они чаще всего и бывают, накорябано по принципу: "В огороде бузина..."

Последний раз редактировалось digitalis; 09.11.2019 в 12:50.
digitalis вне форума Ответить с цитированием
Старый 12.11.2019, 12:11   #12
Enotik_1998
Пользователь
 
Регистрация: 09.03.2018
Сообщений: 77
По умолчанию

А как проверить вот это: если элементы, расположенные за минимальным, упорядочены в порядке убывания?
Остальное я сделал. Можете проверить?
Код:
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
main()
{
int a[100];
int i, j, n, min, max, ind, temp;
bool flag;
printf("Vvedite razmer vectora n=");
scanf("%d",&n);
for (i=0; i<n; i++) 
{
	printf("a[%d]=",i);
	scanf("%d", &a[i]);
}
min = a[0];
for (i = 0; i < n; i++)
if (min > a[i])
	{
		min = a[i];
		ind=i;	
	}
printf("\n Min element = %d", min);
printf("\n Index min elementa = %d \n", ind);
max = a[0];
for (i = 0; i < n; i++)
if (max < a[i])
		max = a[i];
printf("\n Max element = %d \n", max);
for (ind = 0; ind < n; ind++)
	if условие flag = 1;
	if flag = 0
	for (i = 0; i < min; i++)
	{
		sum = sum + a[i];
		sum = sum / max;		
	} 
for (i=0; i<n; i++)
	printf("%2d", a[i]);
}

Последний раз редактировалось Enotik_1998; 12.11.2019 в 12:32.
Enotik_1998 вне форума Ответить с цитированием
Старый 12.11.2019, 13:11   #13
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

Енотик, ты читать-то умеешь ? Мои советы проигнорированы полностью, начальное значение индекса минимального не задано. Если минимальным будет а[0], то в ind будет х.з.что, так какой тогда уж будет "поиск упорядоченности" ?
Ну ленивый до посинения студеньт пошел - даешь ему готовое, так скопипастить и вставить в свой опус - лень
Еще совет (хотя и он пролетит мимо кассы как пуля у виска) : делить сумму на макс нужно после окончания цикла. Иначе получится бред сивой кобылы. Взять карандаш и на бумаге прокрутить пару циклов, наблюдая результат... Но (см. выше)
Начальное значение sum не определено.
Код:
for (i = 0; i < min; i++)
- это что за <censored>ня ?
Короче - медкомиссия - и в армию !

Последний раз редактировалось digitalis; 12.11.2019 в 15:42.
digitalis вне форума Ответить с цитированием
Старый 13.11.2019, 11:08   #14
Enotik_1998
Пользователь
 
Регистрация: 09.03.2018
Сообщений: 77
По умолчанию

Вот я переделал:
Код:
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
int a[100];
int i, j, n, min, max, ind, sum;
double ch;
char flag = 0;
sum = 0;
printf("Vvedite razmer vectora n=");
scanf("%d",&n);
for (i=0; i<n; i++) 
{
	printf("a[%d]=",i);
	scanf("%d", &a[i]);
}
min = a[0];
ind = 0;
for (i = 0; i < n; i++)
if (min > a[i])
	{
		min = a[i];
		ind=i;	
	}
printf("\n Min element = %d", min);
printf("\n Index min elementa = %d \n", ind);
max = a[0];
for (i = 0; i < n; i++)
	if (max < a[i]) max = a[i];
printf("\n Max element = %d \n", max);
for(i=ind+2; i<n; i++)
	{
		if(a[i-1] < a[i])
			{
				flag = 1; 
				break;
			}
		if(!flag) sum = sum + a[i]; 				
	}
ch = min / max;
printf("\n Summa elementov do min = %d \n", sum);
printf("\n Chastnoe min / max = %d \n", ch);
for (i=0; i<n; i++)
	printf("%2d", a[i]);
}
Только у меня сумму элементов до минимального считает неправильно. И деление минимального элемента на максимальный считает неправильно, туда всегда записывается 0.
Enotik_1998 вне форума Ответить с цитированием
Старый 13.11.2019, 11:11   #15
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Потому что инт / инт дает инт и 1 / 2 = 0
p51x вне форума Ответить с цитированием
Старый 13.11.2019, 11:48   #16
Enotik_1998
Пользователь
 
Регистрация: 09.03.2018
Сообщений: 77
По умолчанию

Вот я делаю преобразование типов:
Код:
 ch = (double)min / max;
и оно мне, например, при min = 1 и max = 5 выдаёт ch = -1717986918, хотя должно выдавать ch=0.2
Сама переменная ch у меня типа double
В чём тут ошибка?
Enotik_1998 вне форума Ответить с цитированием
Старый 13.11.2019, 11:52   #17
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Не дает https://ideone.com/vZqbcy
p51x вне форума Ответить с цитированием
Старый 13.11.2019, 11:56   #18
Enotik_1998
Пользователь
 
Регистрация: 09.03.2018
Сообщений: 77
По умолчанию

У меня выбивает: https://prnt.sc/pwa05t
Enotik_1998 вне форума Ответить с цитированием
Старый 13.11.2019, 11:59   #19
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

А, ну так, %d - это для целых, а не даблов
p51x вне форума Ответить с цитированием
Старый 13.11.2019, 12:00   #20
Enotik_1998
Пользователь
 
Регистрация: 09.03.2018
Сообщений: 77
По умолчанию

А для даблов какой используется?
Enotik_1998 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с массивами. Си Sting95 Помощь студентам 5 28.04.2014 02:16
Работа с массивами. BaRSyk174 Помощь студентам 0 27.12.2010 23:03
работа с массивами Sparky Win Api 2 24.02.2010 19:02
Работа с массивами. DomiR Помощь студентам 1 22.05.2009 12:09