![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Lesnik |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
Дан целочисленный массив с кол-вом элементов N. Напечатать те его элементы, индексы которых являются степенью двойки (2,4,8,16 итд)
Код program ggg; uses crt; var mas:array[1..30000] of integer; i,index:integer; begin clrscr; Writeln('Vvedite koli4estvo 4isel'); Readln(n); randomize; for i:=1 to n do begin mas[i]:=random(99); writeln(mas[i],' '); end; index:=2; writeln; writeln('Vivod'); for i:=1 to n do begin if(i=index) then begin index:=index*2; writeln(i,' = ',mas[i]); end; end; readln; end. Как это можно сделать через функцию? Пытался передалать, получилось вот это: Код program COK; uses crt; type mas=array[1..30000]of integer; var a:mas; i,n:integer; Function f(c:mas):integer; var index,i1:integer; begin index:=2; for i1:=1 to n do begin If i=index then begin index:=index*2; writeln(index); end; end; end; begin clrscr; Writeln('Vvedite koli4estvo'); readln(n); For i:=1 to n do begin a[i]:=random(99); end; f(a); end. Но не работает, помогите отредактировать. Спасибо. Сообщение отредактировано: Lesnik - 13.12.2006 21:51 |
![]() ![]() |
мисс_граффити |
![]()
Сообщение
#2
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
ты вообще не читаешь, что я тебе пишу?
Procedure P(m:matr;x,y:integer); выдели, пожалуйста, в этой строке слова var и const ладно, не критично. поместится в стек маленькая матрица. зачем здесь x,y - не понимаю. все равно ты не физически удаляешь строки, а просто не выводишь. ну ладно, тоже никому жить не мешает. Но дальше!!! (Админы, простите, теги не использовала, чтобы выделить жирным) Цитата Procedure P(m:matr;x,y:integer); var i1,j1:integer; begin for i1:= 1 to n-1 do begin no_null := true; for j1:= 1 to n-1 do no_null := no_null and (mas[i, j] <> 0); if no_null then begin for j1:= 1 to n-1 do write(m[i, j]); writeln end; end; end; ОПЯТЬ i,j!!!! ну неужели так сложно исправить?! кроме того, забудь ты про mas. Он - для основной программы! в процедуре ты работаешь ТОЛЬКО с m, раз уж решил передавать как параметр! Хочешь работать с глобальной переменной - вперед. Но тогда: 1) не передавай никаких m 2) при выводе тоже работай с глобальной. В общем, если исправить то, о чем я тебе пишу с первого моего сообщения в этой теме - все будет работать. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 17:38 |