Убедительная просьба ко всем, кто выкладывает исходники: 1. Обязательно пользуйтесь тэгом code (иначе очень трудно читать)
2. Старайтесь делать отступы
Если вы хотите чтобы вам помогли в написании программы, внятно излагайте задание!
Прежде чем задать вопрос, воспользуйтесь учебником
Возможно, что нужная вам программа уже написана, поэтому советую просмотреть список здесь и здесь Отредактировано куратором: Lord_of_Darkness. Дата: 07.07.2006 19:36
Дело тут не в размерах памяти которую может выделить паскаль а в ПРАВИЛЬНОМ ЭФФЕКТИВНОМ АЛГОРИТМЕ (т.е. должна хорошо поработать голова а не компилятор, на него не стоит надеяться)
правильным решением же будет такое:
сождаем массив
Код:
mas: array [1..100] of longint;
- т.е. есть массив который занимает всего 4*100 байт при нахождении в файле числа k просто увеличиваем содержимое ячейки k а при выводе делаем так: пробегаем по всем элементам масива
Код:
for i:=1 to 100
и если они не равны 0, то выводим это число mas[i] раз!!!
Вот и все и не нада никакие дэлфы и динамические массивы!
Member
Статус: Не в сети Регистрация: 21.09.2004 Откуда: Санкт-Петербург
Integer? Это же целое число куда его округлять?
Не знаю чем отличается FreePascal от обычного, но вобщем в паскале округление происходит с помощью этих двух операторов: trunc() и round(), где первый просто отрезает дробную часть, а второй округляет до целого.
Добавлено спустя 2 минуты, 7 секунд:
Цитата:
If k=6 then begin writeln('‚ўҐ¤ЁвҐ ЇҐаҐ¬ҐлҐ'); readln(a); c=sqrt(a) end;
точку с запятой поставь.
_________________ Безжалостна глубь океана!
Но твари, скользящие в ней..... хороши к холодному пиву! <<Fishing Overclan>>
Member
Статус: Не в сети Регистрация: 27.11.2004 Откуда: Россия/Саратов
Короче фишка такая,(я написал Integer а имел в виду real) после вычислений надо вывести ответ, но не так как обычно это делает real : 1,00000000000000+Е300 ну или что-то вроде того, мне наде если после запятой нет нулей то чтобы было целое число, а если после запятой есть цифры то чтоб он показал послезапятой 5 или например 8 чисел..................вот так!
Member
Статус: Не в сети Регистрация: 27.11.2004 Откуда: Россия/Саратов
sKs5th для повторения будет использоваться GOTO
А прога некомпилится не из за того что нет точки с запятои, а из-за чегото другого! Отредактировано куратором: Lord_of_Darkness. Дата: 05.03.2006 14:20
Member
Статус: Не в сети Регистрация: 21.09.2004 Откуда: Санкт-Петербург
Цитата:
он показал послезапятой 5 или например 8 чисел..................вот так!
Короче. Берешь свое число умножаешь его на 10 в той степени в которой тебе надо потом цифр после запятой (5 значит 100 000), затем округляешь его Round() и делишь на тоже число ( 100 000 ). В итоге получишь число с пятью знаками после запятой.
Добавлено спустя 2 минуты, 17 секунд:
Цитата:
If k=2 then begin writeln('‚ўҐ¤ЁвҐ ЇҐаҐ¬ҐлҐ'); readln(a); readln(b); c=a-b;
Ты тут еще End; забыл.
Последний раз редактировалось sKs5th 25.01.2005 18:54, всего редактировалось 1 раз.
Member
Статус: Не в сети Регистрация: 21.09.2004 Откуда: Санкт-Петербург
Цитата:
If k=2 then begin writeln('‚ўҐ¤ЁвҐ ЇҐаҐ¬ҐлҐ'); readln(a); readln(b); c=a-b;
Тут как сказал уже End; поставь и двоеточие перед равно.
Цитата:
If k=6 then begin writeln('‚ўҐ¤ЁвҐ ЇҐаҐ¬ҐлҐ'); readln(a); c=sqrt(a) end;
Тут только двоеточие перед равно
Добавлено спустя 2 минуты, 9 секунд:
Цитата:
goto - выполняется не аппаратно, и с ним могут быть проблемы
Не то чтобы проблемы, но его использование сильно затрудняет чтение кода и можно посасть в дыру из пересылок. Программа получается не структурированной. Вобщем его использование не принято и считается дурным тоном.
Последний раз редактировалось sKs5th 25.01.2005 19:03, всего редактировалось 1 раз.
Member
Статус: Не в сети Регистрация: 27.11.2004 Откуда: Россия/Саратов
sKs5th Во теперь заработало, всё не упомниш, и написать прогу без ошибок(темболее таких мелких) чел который впервые увидил FP(и вообще тока сел за програмирование), помоему не реально...........но остались ещё люди которые могут помоч.....спасибо огромное!
Toshk@ я вот одного не пойму: насколько я знаю в Паскале символ 'означает' РАВНО а символ ' := " означает присвоить, а у тебя везде
в проге используется символ '=' (т.е. равно).
Например чтобы присвоить переменной С результат сложения переменных А и В надо писать так - С:=A+B а не С=A+B
Member
Статус: Не в сети Регистрация: 14.08.2004 Откуда: Москва
riskie вроде заработало, только новая трабла появилась...
в инпуте у меня
Код:
1 2 3
теоретически в аутпуте должно быть сумма и произведение этих чисел, т.е.
6(сумма) и 6(произведение)
он выдаёт 413532370 как сумму и 413532341 как произведение... что не так?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения