IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Одномерные массивы - вычисление суммы индексов положительных элементов., очень надо помогите пожалста уже неделю сижу на ней...
HumFF
сообщение 24.12.2009 16:54
Сообщение #1





Группа: Пользователи
Сообщений: 1
Пол: Мужской
Реальное имя: Alexandr

Репутация: -  0  +


Написать программу, которая вводит с клавиатуры 25 действительных чисел, организовывает их хранение в одномерном массиве, а затем определяет число положительных элементов ланной последовательности и выводит результат... Помогите пожалуста, я уже не знаю что и делать. Да знаю, задача элементарная, но я в паскале новичок и толком ничего не знаю... wacko.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 7)
Рустам
сообщение 24.12.2009 22:16
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 40
Пол: Мужской

Репутация: -  1  +


Я не понял конкретно что тебе надо получить, поэтому вывел все

uses crt; // модуль работы с экраном
const n=25; //количество элементов в массиве
var
a: array [1..25] of integer;
i,k,j,s: integer;

begin
clrscr; // очистка экрана
randomize; // подключаем случайные числа

for i:=1 to n do
begin
a[i]:=random(20)-10; // в цикле заполняем массив случайными числами от -10 до 9, если хочешь вручную
// то вместо этого напиши read(a[i]);
write(a[i],' '); // выводим на экран последовательность
end;

for i:=1 to n do
if a[i]>0 then // если число положительное
begin
s:=s+a[i]; // то суммируем его
inc(k); // увеличиваем количество
j:=j+i; // считаем сумму индексов
end;
writeln;
writeln('Summa polojitelnih elementov ',s); // выводим
writeln('Kol-vo polojitelnih elementov ',k);
writeln('Summa indecsov polojit elementov ',j);

readln;
end.


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 24.12.2009 22:28
Сообщение #3


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Рустам, пара замечаний:
- в условии ясно сказано про количество, остальное - фантазии ));
- обязательно инициализируй переменные (счетчики, суммы..), не рассчитывай на компилятор;
- форматируй код - без этого не уйдешь дальше максимум сотни операторов.

PS
с крещением, +1 ))

Добавлено через 3 мин.
и отвыкай чистить экран в консольном режиме с последовательным выводом.. mauvais ton ))


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 24.12.2009 22:51
Сообщение #4


Гость






Можно еще одно замечание? smile.gif

Рустам, если уж ты ввел константу N и приписал в комментариях, что это "количество элементов в массиве", то надо было и массив описывать не через магическое число 25, а через N... А то надо будет изменить программу для работы с 30-ю значениями, ты N изменишь, и запустишь программу. А она что? Правильно, вылетит с ошибкой...

Цитата
отвыкай чистить экран в консольном режиме с последовательным выводом..
yes2.gif Первое, что делаю при тестировании чужих программ - отключаю CRT и убираю разноцветность и очистку экрана...
 К началу страницы 
+ Ответить 
Рустам
сообщение 25.12.2009 16:38
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 40
Пол: Мужской

Репутация: -  1  +


lapp, -просто в названии темы одно а в задании другое..
- окей буду знать)
- в смысле форматировать? вроде и так все не в одну строчку написал))

и почему нельзя чистить экран , и надо убирать crt?
а про константу в описании массива я забыл ... извините
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 26.12.2009 7:02
Сообщение #6


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Рустам @ 25.12.2009 16:38) *
lapp, -просто в названии темы одно а в задании другое..
думаю, надо ориентироваться на задание. А то, что в названии у него что-то другое - это вообще наказуемо smile.gif.

Цитата
- окей буду знать)
Это особенно относится к процедурам/функциям. А поскольку любой кусок кода может быть неожиданно перенесен в процедуру, то..

Цитата
- в смысле форматировать? вроде и так все не в одну строчку написал))
Это большое упущение твоего преподавателя.. Ты совсем не знаешь про формат??
Объяснять это ГОРАЗДО сложнее, чем показывать на примере. Внимательно рассмотри мои коды или коды volvo. У нас с ним есть некоторые различия в подходах, но не в главных моментах. Попробуй усвоить, что неясно - спрашивай.

Цитата
и почему нельзя чистить экран

- во время отладки КРАЙНЕ полезно иметь предыдущий вывод перед глазами.

- ты когда нибудь видел, чтоб нормальные команды делали это? dir, например. Когда я работаю в командной строке (а это нередко, и совсем не только в UNIX), я могу навыводить кучу полезной инфы, и вдруг мне потребуется твоя прога (калькулятор или еще что-то). Я и ее вызываю - хренак, она мне все стерла.. Зачем? А для красоты! smile.gif Если бы ты стирал только свои данные - это полбеды. Но ты стираешь ВСЕ! Надо УВАЖАТЬ чужую работу и не подвергать ее ненужному риску. А если мне понадобится очистить свой терминал - я это сделаю САМ. Это, конечно, не относится к программам с позиционным выводом - и то, там лучше промотать вверх перед работой.

Цитата
и надо убирать crt?
Модуль CRT противоречит основным принципам работы с терминалом. Более того, он переделывает по-своему работу с файлами. Я уж не говорю про то, что он увеличивает размер программы, а также может содержать ошибки (и содержит, в FPC, например). Это как трость, которая по сути не нужна, но если привык - не можешь без нее.

Кстати еще: randomize - это не инициализация случайных чисел. Это просто перемешивание. Этот оператор следует вставлять только после полной отладки. Отлаживаться на случайной, но ПОВТОРЯЕМОЙ последовательности гораздо проще.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 26.12.2009 11:11
Сообщение #7


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Цитата(Lapp @ 26.12.2009 7:02) *
Это, конечно, не относится к программам с позиционным выводом - и то, там лучше промотать вверх перед работой.
Относится и к ним. И наиболее грамотно написанная часть из них не проматывает изображение вверх, а оставляет его как есть в 0-странице видеопамяти, а сама переключают вывод на 1-ю и пишет туда.
Ну а по окончании работы возвращаются в 0-ю, где сохранился весь предыдущий вывод.
Цитата

Модуль CRT противоречит основным принципам работы с терминалом.
Да.
Я, когда писал на ТР под DOS, специально сделал модуль MyCrt, содержащий лишь delay, readkey и keypressed, и пользовался только им.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Рустам
сообщение 26.12.2009 18:31
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 40
Пол: Мужской

Репутация: -  1  +


Lapp, Adriano, хорошо спасибо!!:)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 5:47
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"