Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 16 по 30 из 33

Тема: Информатика (архив)

  1. #16
    Группа удаления
    Регистрация
    14.12.2003
    Адрес
    Москва
    Сообщений
    290
    Спасибо
    я - 0; мне - 0
    Первая:

    Код:
    const
    	MSize = 10; { размер матрицы }
    
    var
    	A: array[0..MSize-1, 0..MSize-1] of integer;
    	i, j: integer;
    	ok: boolean;
    
    begin
    	ok:=true;
    
    { здесь должен быть ввод матрицы, а не просто ее обнуление :) }
    	for i:=0 to MSize-1 do begin
    		for j:=0 to MSize-1 do begin
    			A[i, j]:=0;
    		end;
    	end;
    
    { Для проверки с нулевой матрицей ее можно сделать ненулевой }
    	{ A[3, 5]:=1; }
    
    	if (MSize>1) then begin { матрицу 1-на-1 проверять нет смысла }
    		for i:=0 to MSize-2 do begin
    			for j:=i+1 to MSize-1 do begin
    				if (A[i, j] <> 0) then ok:=false;
    			end;
    		end;
    	end;
    
    	if (ok) then
    		writeln('OK!')
    	else
    		writeln('NOT OK!');
    end.
    Под "нижней треугольной" я понимаю матрицу со всеми элементами выше главной диагонали равными нулю. (Так, на всякий случай :) )

  2. #17
    Группа удаления
    Регистрация
    14.12.2003
    Адрес
    Москва
    Сообщений
    290
    Спасибо
    я - 0; мне - 0
    И вторая:

    Код:
    const
    	MSize = 6;
    
    type
    	Matrix = array[0..MSize-1, 0..MSize-1] of integer;
    
    var
    	A: Matrix;
    
    { ввод матрицы }
    procedure FillMatrix(MS: integer; var MTX: Matrix);
    var
    	i, j: integer;
    begin
    	if (MS>0) then begin
    		for i:=0 to MS-1 do begin
    			for j:=0 to MS-1 do begin
    { лень вспоминать, как рандом работает - напишем свой :) }
    				MTX[i, j]:=22 - (i*733+j*519) mod 45;
    			end;
    		end;
    	end;
    end;
    
    { вывод матрицы }
    procedure DumpMatrix(MS: integer; MTX: Matrix);
    var
    	i, j: integer;
    begin
    	if (MS>0) then begin
    		for i:=0 to MS-1 do begin
    			write('    ');
    			for j:=0 to MS-1 do begin
    				write(MTX[i, j]:5);
    			end;
    			writeln;
    		end;
    	end;
    end;
    
    { та-самая-процедура :) параметры - размер матрицы и  собственно матрица }
    procedure FindMaxInRowAndSwapItWithDiagonal(MS: integer; var MTX: Matrix);
    var
    	i, j: integer;
    	m, k: integer;
    	s: integer;
    begin
    	if (MS>1) then begin
    		for i:=1 to MS-1 do begin
    
    { поиск максимума }
    			m:=abs(MTX[i, 0]);
    			k:=0;
    			for j:=0 to MS-1 do begin
    				if (m < abs(MTX[i, j])) then begin
    	 				m:=abs(MTX[i, j]);
    					k:=j;
    				end;
    			end;
    { обмен элементов }
    			s:=MTX[i, k];
    			MTX[i, k]:=MTX[i, i];
    			MTX[i, i]:=s;
    		end;
    	end;
    end;
    
    begin
    	FillMatrix(MSize, A);
    
    	writeln('Before:');
    	DumpMatrix(MSize, A);
    
    	FindMaxInRowAndSwapItWithDiagonal(MSize, A);
    
    	writeln('After:');
    	DumpMatrix(MSize, A);
    end.
    ЗЫ. Обе проги проверил в "Borland Pascal Version 7.0" - компилятся, запускаются. Для каждой существует по крайней мере один набор данных, на которых они выдают верный результат

  3. #18
    Поэт
      Золотой художник-романтик
    Аватар для Arrgot
    Регистрация
    02.06.2003
    Адрес
    Castlevania
    Сообщений
    1,197
    Спасибо
    я - 0; мне - 0
    RuMoHoR, cпасибо. Буду разбираться.
    Под "нижней треугольной" я понимаю матрицу со всеми элементами выше главной диагонали равными нулю
    Я тоже, плюс к этому все элементы на упомянутой диагонали равны единице.

    Еще вопрос: что вам известно про оператор выбора case?
    Чем отличаются и когда использовать подпрограмму функцию, а когда процедуру?

    3*. составить процедуру для транспонирования матрицы.
    снежинки, вернувшись от королевы, обглодали труп героя, и легли спать. была уже зима. (с) .brandy

  4. #19
    Группа удаления
    Регистрация
    14.12.2003
    Адрес
    Москва
    Сообщений
    290
    Спасибо
    я - 0; мне - 0
    Argo
    ...плюс к этому все элементы на упомянутой диагонали равны единице.
    Тогда надо добавить пару строчек. Исправленная версия:
    Код:
    	if (MSize>1) then begin
    		for i:=0 to MSize-2 do begin
    			for j:=i+1 to MSize-1 do begin
    				if (A[i, j] <> 0) then ok:=false;
    			end;
    			if (A[i, i] <> 1) then ok:=false;
    		end;
    	end;
    	if (MSize>0) then begin
    		if (A[MSize-1, MSize-1] <> 1) then ok:=false;
    	end else ok:=false;
    ЗЫ: Матрица размером менее 1x1 не считается нижней треугольной

    3*. составить процедуру для транспонирования матрицы.
    Легко :
    Код:
    procedure Transpose(MS: integer; var MTX: Matrix);
    var
    	i, j: integer;
    	s: integer;
    begin
    	if (MS>1) then begin
    		for i:=0 to MS-2 do begin
    			for j:=i+1 to MS-1 do begin
    				s:=MTX[i, j];
    				MTX[i, j]:=MTX[j, i];
    				MTX[j, i]:=s;
    			end;
    		end;
    	end;
    end;
    Вызывать как во второй проге.

    Да, во второй проге я немного ошибся (в циклах - пропускалась первая строка и делалось лишнее сравнение с первым элементом строки). Читать так:
    Код:
    procedure FindMaxInRowAndSwapItWithDiagonal(MS: integer; var MTX: Matrix);
    var
    	i, j: integer;
    	m, k: integer;
    	s: integer;
    begin
    	if (MS>1) then begin
    		for i:=0 to MS-1 do begin
    			m:=abs(MTX[i, 0]);
    			k:=0;
    			for j:=1 to MS-1 do begin
    				if (m < abs(MTX[i, j])) then begin
    	 				m:=abs(MTX[i, j]);
    					k:=j;
    				end;
    			end;
    			s:=MTX[i, k];
    			MTX[i, k]:=MTX[i, i];
    			MTX[i, i]:=s;
    		end;
    	end;
    end;
    Еще вопрос: что вам известно про оператор выбора case?
    Оператор как оператор
    Можно вместо него и лесенку IF-ов нагородить, но с CASE-ом удобнее и нагляднее.
    Пример:
    Код:
    case ch of
      'A': RestoreCmos;
      'B': WriteCmos;
      'C': Help;
    end;
    - в зависимости от значения переменной ch выполнится та или иная процедура.

    Чем отличаются и когда использовать подпрограмму функцию, а когда процедуру?
    Первая возвращает результат, вторая нет.

    Вывести на экран значения элементов матрицы - процедура, т.к. ничего не возвращает.

    Найти максимальный элемент - функция, возвращает число - значение элемента.

    Ввод или транспонирование матрицы - особый случай.
    Тут используют процедуры (можно и функции) с параметрами-переменными (в отличии от обычных параметров-значений), описанными с помощью var. В этом случае процедура может изменить их (и тем самым передать что-либо). Полезно, если надо вернуть либо большой по объему массив данных, либо сразу несколько значений (например значение и индексы максимального элемента).

  5. #20
    Поэт
      Золотой художник-романтик
    Аватар для Arrgot
    Регистрация
    02.06.2003
    Адрес
    Castlevania
    Сообщений
    1,197
    Спасибо
    я - 0; мне - 0
    RuMoHoR, еще раз огромное спасибо. Уже более-менее разобралась.
    И еще пара вопросов:
    4.подпрограмма реализующая метод половинного деления
    5. реализующая обратный ход в методе Гаусса для решения системы линейных алгебраических уравнений
    6. для перестановки 2х произвольных строк в матрице
    7. кто такие параметры процедурного типа и что про них хорошего известно?
    7*. Где бы взять хороший учебник по паскалю?
    снежинки, вернувшись от королевы, обглодали труп героя, и легли спать. была уже зима. (с) .brandy

  6. #21
    Группа удаления
    Регистрация
    14.12.2003
    Адрес
    Москва
    Сообщений
    290
    Спасибо
    я - 0; мне - 0
    Argo
    И еще пара вопросов:
    Ну все, я попал...

    4.подпрограмма реализующая метод половинного деления
    См. аттач.

    5. реализующая обратный ход в методе Гаусса для решения системы линейных алгебраических уравнений
    По Гауссу выложил сюда. Там описание и программка на бейсике, но перевести, я думаю, будет несложно.

    6. для перестановки 2х произвольных строк в матрице
    Переставляем строки j и k.
    Код:
    for i:=0 to N-1 do begin
    	s:=A[j, i];
    	A[j, i]:=A[k, i];
    	A[k, i]:=s; 
    end
    7. кто такие параметры процедурного типа и что про них хорошего известно?
    Пример в том же аттаче. Там реализованы два метода нахождения корня.
    Главному "искателю" передаются ссылки на тот или иной метод. Как вызовешь, так и будет искать.
    Самим методам также передается ссылка на функцию, вычисляющую значение в точке. Дай другую функцию - найдет ее корень. Сам метод при этом не меняется.

    7*. Где бы взять хороший учебник по паскалю?
    Неплохая книга для начинающих - Доналд Алкок, "Язык Паскаль в иллюстрациях".
    Москва "Мир" 1991, ББК 32.973 А 50 УДК 681.3
    Но это самое начало. Для серьезной работы нужно больше.
    Хотя я "учился" в основном на чужих прогах и встроенном хелпе.

    А тебе зачем? Сдать и забыть, просто хочется научиться, реально нужно в жизни/работе или что-то еще?

    PS. Аттач не клеится, бери тут

  7. #22
    Поэт
      Золотой художник-романтик
    Аватар для Arrgot
    Регистрация
    02.06.2003
    Адрес
    Castlevania
    Сообщений
    1,197
    Спасибо
    я - 0; мне - 0
    RuMoHoR, и еще раз тебе спасибо. Понимание мной все лучше и лучше
    Ну да, это еще не все:
    8. Для заданных N и х1, х2, .., хN Написать программу, используя подходящую функцию
    r=max(x1^2,x2^2, ..,xN^2)
    v=max(x1-r,(x2-r)/2,..,(xN-r)/N)
    Тут как я понимаю должно в итоге получиться 2 значения, то есть надо делать процедурой, так? Формулировка задания меня сильно напрягает.

    Ну все, я попал...
    Ага, на пару недель точно
    Хотя я "учился" в основном на чужих прогах и встроенном хелпе.
    Вот и я пытаюсь. Только вместо хелпа - лекции. Однако еще больший юмор кроется в том, что дома у меня ни Турбопаскаля, ни чего-то подобного. Представь себе, как я весь год сдаю работы
    А тебе зачем?
    Экзамен у меня на следующей неделе. Сам же курс информатики до 3 курса - так что учиться надо. Кроме того, знания не пропадут. Хотя как приложить паскаль к термической обработке металла? М-да это вопрос
    снежинки, вернувшись от королевы, обглодали труп героя, и легли спать. была уже зима. (с) .brandy

  8. #23
    Группа удаления
    Регистрация
    14.12.2003
    Адрес
    Москва
    Сообщений
    290
    Спасибо
    я - 0; мне - 0
    8. Для заданных N и х1, х2, .., хN Написать программу, используя подходящую функцию
    r=max(x1^2,x2^2, ..,xN^2)
    v=max(x1-r,(x2-r)/2,..,(xN-r)/N)
    Тут как я понимаю должно в итоге получиться 2 значения, то есть надо делать процедурой, так? Формулировка задания меня сильно напрягает.
    Да уж. Я раза с пятого врубился
    Тут те самые параметры-функции надо применять. Почти как в том примере, что я давал.
    Пишешь две функции
    Код:
    function FuncR(x: real): real;
    begin
    	FuncR:=x*x;
    end;
    FuncV аналогично.
    Потом поиск максимума
    Код:
    function MaxVal(F: FuncType): real;
    var a, b: real;
    	i: integer;
    begin
    	a:=F(x[0]);
    	for i:=1 to N-1 do begin
    		b:=F(x[i]);
    		a:=max(a,b);
    	end;
    end;
    И вызываешь ее два раза
    Код:
    r:=MaxVal(FuncR);
    v:=MaxVal(FuncV);
    Примерно так.
    Вот и я пытаюсь. Только вместо хелпа - лекции. Однако еще больший юмор кроется в том, что дома у меня ни Турбопаскаля, ни чего-то подобного. Представь себе, как я весь год сдаю работы
    А че так, ээээ, нетрадиционно?
    Экзамен у меня на следующей неделе.
    Заметно
    Сам же курс информатики до 3 курса - так что учиться надо. Кроме того, знания не пропадут. Хотя как приложить паскаль к термической обработке металла? М-да это вопрос
    Учиться на абстракных матрицах не очень эффективно.
    Хорошо бы найти какую-нибудь реальную задачу, тогда язык легко пойдет.
    Я когда первый раз решил заняться паскалем взял книжку, набрал пример, откомпилил, запустил. А дальше что? Где-то на год забросил. Продолжал развлекаться на васике.
    Потом он стал мне тесен, да и что-то интересное надо было сделать (уже не помню что именно ). Паскаль пошел на ура.
    С сишкой аналогично. Пока хватало паскаля, сидел в нем. Попалась задача, которую проще и удобнее было реализовать в си - перешел на него.
    Мне правда было легче - не было "экзамена на следующей неделе" , можно было не спешить.

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

    А вообще, любой язык можно быстро освоить. Важнее владеть различными алгоритмами. А то два года учат, а лучшие достижения - сортировка пузырьком и поиск корня методом дихотомии (ладно, ладно, Ньютон тоже был . О культуре програмирования вообще молчу. Но этому тяжело учить, тут человек сам должен понимать, что писать код, склонный к глюкам, мягко говоря, нехорошо. Без этого никуда.

    По методам полезно почитывать Дональда Кнута (трехтомник, в 2000 выпустили, наконец, третье издание; очень много полезного, но примеры оформлены не совсем удачно - под какой-то абстрактный глючный проц, тяжело воспринимаются).
    Еще неплохая книга - "Алгоритмы. Построение и анализ". Т.Корчмен, Ч.Лейзерсон, Р.Ривест. 2001г. (Здесь примеры оформлены на паскале-подобном языке, значительно легче воспринимается)
    Рекомендую также Numerical Recipes. Хоть и на английском (а это разве проблема?), но с исходниками на си и фортране (паскаль за денежку).

  9. #24
    Поэт
      Золотой художник-романтик
    Аватар для Arrgot
    Регистрация
    02.06.2003
    Адрес
    Castlevania
    Сообщений
    1,197
    Спасибо
    я - 0; мне - 0
    RuMoHoR, еще раз скажу спасибо!
    Из 42 билетов уже 20 есть - прогресс И термообработка на отлично.
    А че так, ээээ, нетрадиционно?
    Я не ищу легких путей А если серьезно, мой комп вешается при любой попытке это дело запустить. Чего я только не пробовала.. Все только руками разводят и ссылаются на "индивидуальную непереносимость"
    Что касается задач, мне бы это хоть освоить. На ближайшие полторы недели - этот план минимум забивает все
    За рекомендованные книги отдельное спасибо, на выходных поищу.
    снежинки, вернувшись от королевы, обглодали труп героя, и легли спать. была уже зима. (с) .brandy

  10. #25
    RichGirl
    Гость
    Помогите пожалуйсто сделать програмку, а то уже 3 день мучаюсь.
    Определить принадлежит ли точка А (с координатами x и y) кругу с центром В (с кооординатами a и b) и радиусом r.

    [ADDED=Marsgirl]1102428990[/ADDED]
    Помогите пожалуйсто сделать програмку, а то уже 3 день мучаюсь.
    Определить принадлежит ли точка А (с координатами x и y) кругу с центром В (с кооординатами a и b) и радиусом r.
    Мне надо это к четвергу сделать.

  11. #26
    Забанен Аватар для hmm3rulez
    Регистрация
    17.06.2004
    Адрес
    Санкт-Петербург
    Сообщений
    855
    Спасибо
    я - 0; мне - 1
    МарсГирл, это скорее задачка по высшей математике, а не по информатике! На каком курсе, какого ВУЗа ТАКОЕ задают?

    [ADDED=hmm3rulez]1102432092[/ADDED]
    МарсГирл, это скорее задачка по высшей математике, а не по информатике! На каком курсе, какого ВУЗа ТАКОЕ задают?

  12. #27
    RichGirl
    Гость
    hmm3rulez, Это в 9 классе при изучении Паскаля.

  13. #28
    Старожил Аватар для Plutonium
    Регистрация
    25.10.2003
    Адрес
    Западный Урал
    Сообщений
    237
    Спасибо
    я - 1; мне - 1

    Срочно! Задание по информатике “Представление информации в компьютере”

    Вот такое задание… ничего не понимаю. Помогите мне пожалуйста. Я даже не знаю, как это все записать…:\

    1. зашифруйте данный текст, используя таблицу ASCII кодов (с помощью двоичного и шестнадцатиричного кодов): TURBO.
    2. Компьютер работает с целыми положительными и отрицательными числами. Каков диапазон изменения чисел, если для представления числа в памяти отводится 1 байт?
    3. Получить двоичную форму внутреннего представления целогочисла 1305 в 2-х байтовой ячейке.
    4. Получить шестнадцатиричную форму внутреннего представления числа 1305 в 2-х байтовой ячейке.
    5. По шестнадцатиричной форме внутреннего представления целого числа F700 в 2-х байтовой ячейке восстановить само число.
    6. Представить вещественное число 1) 0,00508 2) 12111,456 в нормализованной форме с плавающей точкой в десятичной системе счисления.
    404

  14. #29
    Футбольный болельщик
    Регистрация
    21.07.2003
    Сообщений
    1,950
    Спасибо
    я - 0; мне - 0
    Помогите решить задачу в Excel'е!!!!
    Задача:
    Мальвина, Пьеро, Буратино и Дуремар на празднике.

    Буратино съел -5 стаканов лимонада, 20 драже тик-така, 4 куска торта

    Мальвина - 1 стакан лимонада, 2 драже, 1 кусок торта

    Пьеро - 2 стакана лимонада, 2 куска торта

    Дуремар - 3 куска торта, 2 стакана лимонада.
    --------------------------------------------------
    1 стакан лимонада - 15 калорий
    1 кусок торта - 180 калорий
    1 драже тик-така - 2 калории
    ---------------------------------
    Сколько всего стаканов лимонада, кусков торта и драже было съедено, сколько калорий употребил каждый участник, сколько калорий содержится во всей съеденой еде и выпитом лимонаде?
    ---------------------------------------
    Помогите решить, пожалуйста!
    "Здесь нет кумиров.
    Theres only one United ."

  15. #30
    Rising_Sun
    Гость
    Задание лёгкое, но я никак не рублю...(((

    Составьте минимальный набор мультимедийного компьютера...

    Помогите, кто может...ведь для кого то это совсем не трудно....

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •