![]() |
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 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Function f(const c:mas):integer; вот... иначе переполнение стека получишь. или, если массив собираешься менять, пиши var -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Lesnik |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
мисс_граффити |
![]()
Сообщение
#4
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
![]() program COK; насколько я вижу, выводить он будет индексы, а не элементы... и не совсем поняла, зачем внутри ф-ции использовать глобальную переменную i... вроде про i1 речь шла. Сообщение отредактировано: мисс_граффити - 13.12.2006 22:18 -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Lesnik |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
Не работает
![]() Программа просит ввести количество чисел, потом завершает работу и не выводит никаких индексов ![]() |
мисс_граффити |
![]()
Сообщение
#6
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
так я и не обещала, что будет работать правильно.
я показала, где ошибка, из-за которой не компилируется... а отлаживай уж ты сам... если исправить ошибку, о которой я тебе написала в сообщении 4, то прога делает вот что: вводим 4 выводит 4,8 вводим 8 выводит 4,8,16 -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Lesnik |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
мисс_граффити |
![]()
Сообщение
#8
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
а что ты хочешь получить в итоге?
я бы сказала, что степени двойки - это 1,2,4... но тогда и твоя первая прога работает неправильно. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Lesnik |
![]()
Сообщение
#9
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
мисс_граффити |
![]()
Сообщение
#10
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
я же тебе сказала: исправь
If i=index then там i1 должно быть! -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Lesnik |
![]()
Сообщение
#11
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
мисс_граффити |
![]()
Сообщение
#12
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
ну так... относительно нормально.
![]() но лишь бы тебе нравилось... -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Lesnik |
![]()
Сообщение
#13
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
Если не тяжело, можете ещё посмотреть задачу?
Сделать надо через процедуру. Дана матрица Аmxn. Исключить строки, содержащие хотябы один нулевой элемент. Код без процедуры: Код Program BAJEHOK; uses crt; var mas:array[1..8,1..8] of real; n,i,j: integer; no_null: boolean; begin clrscr; n:=8; randomize; for i := 1 to n-1 do for j := 1 to n-1 do mas[i, j] := random(10); writeln('Matrix'); writeln; for i := 1 to n-1 do begin for j := 1 to n-1 do write(mas[i, j]:5:0); writeln; end; writeln; writeln('Bez nulei...'); writeln; for i := 1 to n-1 do begin no_null := true; for j := 1 to n-1 do no_null := no_null and (mas[i, j] <> 0); if no_null then begin for j := 1 to n-1 do write(mas[i, j]:5:0); writeln end; end; readln; end. А теперь то убожество, которое я попытался сделать через процедуру: Код Program BAJEHOK; uses crt; type mas=array[1..8,1..8]of integer; var a,b:mas; n,i,j: integer; no_null: boolean; procedure P(c:mas; str,stb:byte;var kol:byte); 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 (c[i, j] <> 0); if no_null then begin for j1 := 1 to n-1 do write(c[i, j]); writeln end; end; end; begin clrscr; n:=8; randomize; for i := 1 to n-1 do for j := 1 to n-1 do a[i, j] := random(10); writeln('Matrix'); writeln; for i := 1 to n-1 do begin for j := 1 to n-1 do write(a[i, j]); writeln; end; writeln; writeln('Bez nulei...'); writeln; readln; P({не знаю, что выводить}); end. |
мисс_граффити |
![]()
Сообщение
#14
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
такая маленькая матрица переполнение стека не вызовет, но все равно - зачем его забивать всякой ерундой?
напиши const, если не хочешь менять матрицу, и var - если хочешь, как я тебе показывала в прошлой задаче. замени в подпрограмее i,j на i1, j1 (тоже обсуждали в прошлой задаче). и сделай нормальное форматирование! сложно читать, когда под begin нет соответствующего ему end! -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Lesnik |
![]()
Сообщение
#15
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот то, что пока получается.
Начальную матрица строится, а строки не удаляются (сама подпрограмма не работает). Код Program BAJEHOK; uses crt; type matr=array[1..8,1..8]of integer; var mas:matr; n,i,j: integer; no_null: boolean; 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; begin clrscr; n:=8; randomize; for i := 1 to n-1 do for j := 1 to n-1 do mas[i, j] := random(10); writeln('Matrix'); writeln; for i := 1 to n-1 do begin for j := 1 to n-1 do write(mas[i, j],' '); writeln; end; writeln; writeln('Bez nulei...'); P(mas,n,n); writeln; readln; end. Вроде надо ещё передовать строки со столбцами, но не могу понять как ![]() |
мисс_граффити |
![]()
Сообщение
#16
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 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) при выводе тоже работай с глобальной. В общем, если исправить то, о чем я тебе пишу с первого моего сообщения в этой теме - все будет работать. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
klem4 |
![]()
Сообщение
#17
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Функция возвращает true если ее входной параметр X - степень двойки:
function IsTwoPower(X: LongInt): Boolean; Кстати единица - тоже степень двойки ... -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
![]()
Сообщение
#18
|
Гость ![]() |
Цитата Функция возвращает true если ее входной параметр X - степень двойки: ![]() Общие вопросы по математике. ("Является ли число степенью двойки?") FAQ для кого делается, хотелось бы узнать? |
мисс_граффити |
![]()
Сообщение
#19
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Кстати единица - тоже степень двойки ... см. сообщения 8-9 ...а зачем здесь вообще эта ф-ция? предлагаете делать так: for i:=1 to n do ? что-то не поняла замысел. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
klem4 |
![]()
Сообщение
#20
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Замысел не понял я
![]() ![]() -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 9:49 |