• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Одномерный массив, задание из контрольной

  • Автор темы Автор темы Ma-sha
  • Дата начала Дата начала

Ma-sha

Ученик
Регистрация
10 Дек 2015
Сообщения
7
Реакции
0
Баллы
0
Одномерный массив, задание из контрольной

Добрый день! Помогите, пожалуйста с последним заданием в контрольной. Формулировка: "Написать программу формирования одномерного массива М. Полученный массив напечатать. Выполнить обработку и преобразование массива в соответствии со своим вариантом. Напечатать преобразованный массив. Задание по моему варианту: Определить количество элементов массива, больше среднего арифметического всех его элементов. Получить новый массив путем вычитания из всех элементов наименьшего элемента."
Вот, что я нарешала:

CLS
INPUT "Введите количество элементов М ="; М
DIM Z(M)
PRINT "Исходный массив"
FOR i=1 TO M
INPUT Z(i)
NEXT i
FOR i=1 TO M
PRINT Z(i)
NEXT i
PRINT
REM Вычисление ср. арифм. всех элементов массива
C=0 : k=0
FOR i=1 TO M
INPUT Z(i)
IF Z(i)<0 THEN C=C+Z(i) : k=k+1
NEXT i
S=C/k
PRINT "S="; S
REM Нахождение количества элементов массива, больше ср. арифм. всех его элементов
R=0
FOR i=1 TO M
IF Z(i)<S THEN R=R+1
NEXT i
IF R=0 THEN
PRINT "Количество элементов, больших "; S; "равно "; R
REM Нахождение минимального элемента
FOR i=1 TO M
IF Z(i)< Zmin THEN Zmin=Z(i)
NEXT i
PRINT "Zmin=", Zmin
REM Вычитаем из всех элементов наименьший элемент
...................................................................................
А дальше не знаю, как. Сомнения вообще в правильности предыдущего. Кто может, помогите. А то сроки поджимают....
 
да, забыла. На языке Basic/
 
IF R=0 THEN
PRINT "Количество элементов, больших "; S; "равно "; R
зачем это условие?
REM Нахождение минимального элемента
FOR i=1 TO M
IF Z(i)< Zmin THEN Zmin=Z(i)
NEXT i
PRINT "Zmin=", Zmin
перед циклом сделать Zmin = Z(0)
вычислить Zmin, а дальше в цикле:
Z(i) = Z(i) - Zmin
PRINT Z(i)
если язык такое позволяет)
 
Спасибо, что откликнулись.

Да, "IF R=0 THEN" - наверное это лишнее. (Просто смотрела подобную задачу, но там условие немного другое). Поэтому надо наверное просто:

REM Нахождение количества элементов массива, больше ср. арифм. всех его элементов
R=0
FOR i=1 TO M
IF Z(i)<S THEN R=R+1
NEXT i
PRINT "Количество элементов, больших "; S; "равно "; R
 
И еще проблема с последним условием задачи, когда из всех элементов массива нужно вычесть наименьший элемент. Я не знаю как это написать в программе.
 
Да, по условию нужно напечатать преобразованный массив.
Спасибо огромное! Вы мне очень помогли!
 
Прошу прощения за надоедливость, но можно я напишу Вам, grelly, окончательный вариант программы. А Вы посмотрите, может опять где ошибки. ??? Заранее благодарна!

CLS
INPUT "Введите количество элементов М ="; М
DIM Z(M)
PRINT "Исходный массив"
FOR i=1 TO M
INPUT Z(i)
NEXT i
FOR i=1 TO M
PRINT Z(i)
NEXT i
PRINT
REM Вычисление ср. арифм. всех элементов массива
C=0 : k=0
FOR i=1 TO M
INPUT Z(i)
IF Z(i)<0 THEN C=C+Z(i) : k=k+1
NEXT i
S=C/k
REM Нахождение количества элементов массива, больше ср. арифм. всех его элементов
R=0
FOR i=1 TO M
IF Z(i)<S THEN R=R+1
NEXT i
PRINT "Количество элементов массива, больших ср. арифм. всех его элементов равно"; R
REM Нахождение минимального элемента
Zmin=Z(0)
FOR i=1 TO M
IF Z(i)< Zmin THEN Zmin=Z(i)
NEXT i
REM Вычитаем из всех элементов наименьший элемент
PRINT "Преобразованный массив"
FOR i=1 TO M
Z(i)=Z(i) - Zmin
PRINT Z(i)
NEXT i
END
 
REM Вычисление ср. арифм. всех элементов массива
C=0 : k=0
FOR i=1 TO M
INPUT Z(i)
IF Z(i)<0 THEN C=C+Z(i) : k=k+1
NEXT i
S=C/k

проверка что Z(i)<0 не нужна

C=0
FOR i=1 TO M
C=C+Z(i)
NEXT i
S=C/M

если я ничего не путаю
 
Ну да, точно! Среднее арифметическое ВСЕХ же элементов. Спасибо еще раз. Вы меня очень выручили.
 
незачто. стоит все-таки разобраться, какое действие за что отвечает. иначе смысл обучения теряется.
 
Назад
Сверху