Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Задача на массивы

Автор: SOKOLx 9.02.2007 0:17

Помогите плз с задачейЮ оч нужно =)
Вася Иванов получил за год 250 оценок по алгебре. Определите сколько среди них пятёрок, четверок и троек. НАйти среднюю оценку за год по алгебре.
Заранее пасибо)

Автор: Артемий2 9.02.2007 0:23

Данные оценок хранятся в массиве?Пользователь руками оценки вводит?

Автор: SOKOLx 9.02.2007 0:24

я хз я вообщеначинающий в паскале, нам в таком виде задачу продиктовали)

Автор: volvo 9.02.2007 0:25

Что не получается?

Опиши массив

var
grades: array[1 .. 5] of integer;
, при вводе очередной оценки (назовем ее X) просто напросто увеличивать arr[X] на единицу... Тогда в конце процесса у тебя в arr[i] будет храниться число оценок равных i...

Где проблема?

Автор: SOKOLx 9.02.2007 0:29

Цитата(Артемий2 @ 8.02.2007 20:23) *

Данные оценок хранятся в массиве?Пользователь руками оценки вводит?

нет ничего вводить ненадо)

Автор: Артемий2 9.02.2007 0:52

Тогда описывай как константу:

const
a: array [1..250] of Integer = ({Тут твои данные об оценках...});

Автор: SOKOLx 9.02.2007 0:54

Я школьник =) мы пока константы непроходили только начали массивы sad.gif

Автор: Артемий2 9.02.2007 0:55

Ну а где тогда, раз не вводится руками, они хранятся?Ты не ответил на этот вопрос! blink.gif

Автор: SOKOLx 9.02.2007 1:00

Цитата(Артемий2 @ 8.02.2007 20:55) *

Ну а где тогда, раз не вводится руками, они хранятся?Ты не ответил на этот вопрос! blink.gif

хм... blink.gif

Добавлено через 4 мин.
тогда наверное надо всё таки вводить)

Автор: Артемий2 9.02.2007 1:16

Тогда заполняй и вычисляй среднее..

program Project1;
var
arr: array [1..250] of Integer;
var
i,d,a,o: Integer;
e: real;
begin
writeln('Vvedite ocenki: ');
for i:=1 to 250 do
begin
readln(o);
arr[i]:=o;
end;
d:=0;
a:=0;
for a:=1 to 250 do begin
d:=d+(arr[a]);
end;
e:=d/250;
writeln(e:1:2);
readln
end.


Автор: SOKOLx 9.02.2007 1:19

Большое спасибо . Всё получилось =)

Автор: klem4 9.02.2007 1:27

Артемий2 Ты задание внимательно прочитал ?

SOKOLx, успел мой пост посмотреть ? Или сам сделал ?

Автор: SOKOLx 9.02.2007 19:10

Сам сделал через рандомайз )

Автор: /7popok 9.02.2007 19:26

а что если после формирования массива посчитать сначала среднее значение, потом в цикле преобразовать все элементы массива из целочисленного типа в строковый, а потом пройтись по массиву 3 раза условными операторами в поиске значений "3", "4" и "5", увеличивая значение соответствующей переменной на 1 каждый раз при обнаружении нужного значения?
или я сильно перемудрил с планом написания этой программы?

Автор: мисс_граффити 9.02.2007 19:51

а что нам даст преобразование в строку?
ради чего оно нужно?
что значит "пройтись по массиву 3 раза условными операторами"? проходятся циклами как-то традиционно... только зачем СТОЛЬКО циклов, если все можно сделать в одном - заполнение, подсчет суммы оценок (для среднего арифметического) и подсчет кол-ва каждого вида оценок.

Автор: /7popok 9.02.2007 20:11

мисс_граффити
если я не ошибаюсь, то работа со строковыми переменными занимает меньше времени, чем с целочисленными.
а "пройтись по массиву 3 раза условными операторами" имелось ввиду, что в 1 цикл запихать 3 условных оператора.

Автор: volvo 9.02.2007 20:20

Цитата
то работа со строковыми переменными занимает меньше времени, чем с целочисленными
no1.gif Ошибаешься. Даже если сама работа с символом будет быстрее, чем с числом, все равно с учетом времени на конвертацию общая продолжительность обработки сильно увеличится...

Автор: /7popok 9.02.2007 20:26

volvo
хмм... да, а это время я не учёл...
спасибо за замечание! исправлюсь! yes2.gif

Автор: Артемий2 9.02.2007 21:08

Цитата
Артемий2 Ты задание внимательно прочитал ?

Да.я читал..Я не выкладывал все решение, я показал алгоритм нахождения средней оценки.