RFpro.ru: Программирование на языке Pascal
Хостинг портала RFpro.ru: РАССЫЛКИ ПОРТАЛА RFPRO.RU
Чемпионы рейтинга экспертов в этой рассылке
/ КОМПЬЮТЕРЫ И ПО / Программирование / Pascal (Паскаль)
Вопрос № 176398: Добрый вечер!Помогите пожалуйста с одной задачкой: По массиву А получить b,присвоив его-к-му элементу значение истина,если выполнено ниже условие,и значение false иначе: а)если все элементы к-го столбца масива А-нулевые б)элементы к-й строки... Вопрос № 176402: Здравствуйте. Нужно написать программку, с помощью программы паскаль, которая должна анализировать содержание текстового файла с описанием переменных и определять, есть ли ошибка в этом описании. Задание. Анализ описания переменных Соз... Вопрос № 176406: Здравствуйте, прошу помочь в решении моей задачи. Писал в "Задачник" но что то не кто не ответил. Теперь попробую написать всем остальным(если я тут не чего не напутал) может хоть кто-то поможет. Есть код программы на нахождение минимуму фу... Вопрос № 176420: Добрый вечер!Уважаемые эксперты!Помогите решить пожалуйста вот такую задачу: Дана вещественная матрица размером 7*7,все элементы которой различны.Найти скалярное произведение строки,в которой находится наибольший элемент матрицы,на столбец с наиме... Вопрос № 176421: Добрый вечер,пожалуйста помогите решить одну вот такую задачу: Получить массива В из массива А,удалением n-й строки и к-го столбца ... Вопрос № 176422: Добрый день,уважаемые эксперты!!!!Помогите пожалуйста решить задачи на двумерные массивы вот ссылка на задачу http://depositfiles.com/files/pe4ednfwl , номер задачи которую надо решить № 9.14 рис.3 (все случаи)
Вопрос № 176426: Добрый вечер!Помогите пожалуйста вот с такой задачей: дан двумерный массив,определить к-количество различных элементов массива (повторяющиеся элементы считать один раз)...
Вопрос № 176398:
Добрый вечер!Помогите пожалуйста с одной задачкой:
Отправлен: 31.01.2010, 08:46 Отвечает Пупорев Юрий Борисович, Специалист : Здравствуйте, angel.nero! Поскольку задачи близнецы, подробно комментировал только первую. Решение в приложении.
Приложение:
Ответ отправил: Пупорев Юрий Борисович, Специалист
Вопрос № 176402:
Здравствуйте. Нужно написать программку, с помощью программы паскаль, которая должна анализировать содержание текстового файла с описанием переменных и определять, есть ли ошибка в этом описании.
Отправлен: 31.01.2010, 09:40 Отвечает Patriotix-N, 5-й класс : Здравствуйте, allxmiss. Есть множество способов решения данной задачи, я выбрал этот, т.к. мне он показался более простым. Все можно было свернуть и в простой "while" цикл и вести обработку через "if then". Я же выбрал структурированный вариант - "case", мне кажется, он не из лучших, но большую роль здесь сыграла и проблема с поиском начала объявления - ключевого слова "var" и последующим переходом к описанию переменных. Также можно было обрабатывать файл, получая по одному символу, а не по строке. По ряду причин, я выбрал вариант с построчной обработкой файла. И последнее - фактически массив строк "lines[][]" нигде не используется. Поэтому если есть ограничения на занимаемую память, то можно пользоватся всего одной строкой. Ну и, конечно, можно провести оптимизацию кода. Конечная доводка велась путем классического "шаманства", так что, кое-где просто вставлены нужные строчки. На первый взгляд, вс е работает, но попробуйте погонять программу в разных ситуациях - я на это уже не способен Еще одна проблема, на мой взгляд, так и осталась нерешенной - проблема "табуляции". Правил табуляции я не нашел и принял за единицу табуляции 4 символа. Для понятности кода, я использовал интуитивно-понятные имена переменных и комментарии, но если возникнут вопросы(по коду или если найдете ошибки) обращяйтесь(думаю, уже в личку, т.к. срок закрытия вопроса уже истекает). Код:
input.txt: Код:
output.txt Код:
----- Лучше знать ничего обо всем, чем все ни о чем.
Ответ отправил: Patriotix-N, 5-й класс
Оценка ответа: 5
Вопрос № 176406: Здравствуйте, прошу помочь в решении моей задачи. Писал в "Задачник" но что то не кто не ответил. Теперь попробую написать всем остальным(если я тут не чего не напутал) может хоть кто-то поможет. Есть код программы на нахождение минимуму функции(сам код прилагается). Так вот программа выводит на экран значение "min", надо дописать программу что бы среди этих "min" находилось самое наименьшее среди них. В приложении программа реализуюшая простой генетический алгоритм (селекция, скркшивание, мутация) для нахождения минимума функции Z(x,y)=x^2+y^2, -5.12<=x<=5.12, -5.12<=y<=5.12.
Отправлен: 31.01.2010, 10:52 Отвечает Лейла, 5-й класс : Здравствуйте, Hivrenko. Это делается просто: 1) заводим переменную min_of_min типа real. 2) в цикле repeat-until в главной процедуре добавляем условие if min_of_min>min then min_of_min:=min;
Приложение:
Ответ отправил: Лейла, 5-й класс
Вопрос № 176420:
Добрый вечер!Уважаемые эксперты!Помогите решить пожалуйста вот такую задачу:
Отправлен: 31.01.2010, 21:31 Отвечает riaman, 2-й класс : Здравствуйте, angel.nero. Скалярное произведение это сумма произведений соответствующих координат, то есть элементов массива. Ну и вот сразу решение: max:=M[1,1]; max_i:=1; min:=M[1,1]; min_j:=1; //поиск наименьшего и наибольшего эл-ов for i:=1 to 7 do for j:=1 to 7 do begin if M[i,j]>max then begin max:=M[i,j]; max_i:=i; end; if M[i,j]<min then begin min:=M[i,j]; min_j:=j; end end; //сколярное произведение строки на столбец sp:=0; for i:=1 to 7 do sp:=sp+M[max_i,i]*M[i,min_j]; //конец
Ответ отправил: riaman, 2-й класс
Вопрос № 176421:
Добрый вечер,пожалуйста помогите решить одну вот такую задачу:
Отправлен: 31.01.2010, 21:31 Отвечает riaman, 2-й класс : Здравствуйте, angel.nero. Я так понял, вам надо из двумерного массива удалить n столбец и k стлобец, а правельнее будет сказать, удалить их из матрицы. Для этого надо удалить из массива все элементы с индексами: [n,i], где i изменяется от 1 до N_str (N_str - кол-во строк) и элементы с индексами [j,k], где j изменяется от 1 до K_st (K_st - кол-во столбцов). Следует учесь, что при удалении размерность массива (матрицы) уменьшится и станет равной (N_str-1)*(K_st-1). Поэтому предлагаетю следующий алгоритм: 1) Удаляем строку n. Для этого сдвигаем все строки массива M с индексом строки i>=n на еденицу влево. 2) Удаляем столбец. Для этого сдвигаем все стролбцы массива M с индексом стлбца j>=k на еденицу влево. 3) По желанию обнуляем последюю строку и столбец массива с индексами строки и столбца равными соответственно N_str и K_st Всё это на языке паскаль будет выглядеть так: //удаление строки-------------------- for i:=n to N_str do for j:=1 to K _st do M[i,j]:=M[i+1,j]; //сдвиг в лево строк //удаление столбца----------------- for i:=1 to N_str-1 do //так как из матрицы уже удалена одна строка, то их число можно взять равны N_str-1 for j:=k to K_st-1 do M[i,j]:=M[i,j+1]; //сдвиг в лево столбцов //Обнуление последних строк и столбца: for j:=1 to K_st do M[N_str,j]:=0; //обнуление строки for i:=1 to N_str do M[i,K_st]:=0; //обнуление столбца //конец При выводе следует учесть что размерность массива (матрицы) уменьшилась и стала равной (N_str-1)*(K_st-1). Соответственно обнуление последних элементов строки и столбца можно
Ответ отправил: riaman, 2-й класс
Отвечает star9491, 5-й класс : Здравствуйте, angel.nero. Как мне показалось, что по смылу задачи в ней должнв фигурировать два массива A и B. Поэтому я решил написать второй вариант. Пусть массив A имеет размер m на s и, соответственно массв B - размер m-1 на s-1. Тогда массив B можно получить следующим образом: for i:=1 to m-1 do for j:=1 to s-1 do if (i<n)and(j<k) then b[i,j]:=a[i,j] else if j<k then b[i,j]:=a[i+1,j] else b[i,j]:=a[i+1,j+1];
Ответ отправил: star9491, 5-й класс
Отвечает Лейла, 5-й класс : Можно так: Смотрите приложение.
Исправлено по просьбе автора ответа.
----- ∙ Отредактировал: Зенченко Константин Николаевич, Модератор ∙ Дата редактирования: 03.02.2010, 19:15 (время московское)
Приложение:
Ответ отправил: Лейла, 5-й класс
Вопрос № 176422:
Добрый день,уважаемые эксперты!!!!Помогите пожалуйста решить задачи на двумерные массивы © Цитата: Текст вопроса найти
сумму элементов из заштрихованной области: 1) Сумма элементов расположенных по периметру матрицы 2)Сумма элементов расположенных на главной и побочной диагонали 3)сумма элементов расположенных в верхнем треуголнике и в нижнем 4) сумма элементов расположенных внутри ромба очень жду вашего ответа!!!
Отправлен: 31.01.2010, 22:01 Отвечает Пупорев Юрий Борисович, Специалист : Здравствуйте, angel.nero! Решение задач в приложении.
Приложение:
Ответ отправил: Пупорев Юрий Борисович, Специалист
Вопрос № 176426:
Добрый вечер!Помогите пожалуйста вот с такой задачей:
Отправлен: 01.02.2010, 00:31 Отвечает riaman, 2-й класс : Здравствуйте, angel.nero. Я предлагаю такой вот способ. Хотя может с точки зрения экономии ресурсов памяти и времени он и не очень хорош, но решает поставленную задачу. Метод: Создается массив (описываем в разделе переменных или создаем динамически) такой же размерностью, что и заданный (если не знаешь как создать массив динамически, то просто опиши массив заранее достаточного размера). После, организуем два вложенных цикла, которые пробегают по всем элементам исходной матрицы: //mas - исходный массив //mas_ij - созданный массив для подсчета различных эллементов (массив отметок) //N - количество строк в массиве //K - количество стлбцов в массиве //kol - количество различных элементов //-------------------------------------- //заполнение массива отметок числом отличным от чисел, испоьзуемых для //подсчета разных элементов for i:=1 to N do for j:=1 to K do mas_ij[i,j]:=-1; //заполнение массива отметок....< br> //берем очередной элемент исходного массива for i:=1 to N do for j:=1 to K do begin //если данный элемент i,j отличается от предыдуших (в масссиве отметок //соответствующий элемент равен -1), то ставим в массив отметок 1, иначе //переходим к следующей итерации continue (если не знаешь , то можно //убрать его, всё-равно алгоритм будет работать) if mas_ij[i,j]=-1 then mas_ij[i,j]:=1; else continue; m:=j+1; //сравниваем элемент i,j с последующими элементами for l:=i to N do begin while m<=K do begin //если они равны, записываем в массив отметок 0; if mas[i,j]=mas[l,m] then mas_ij[l,m]:=0; inc(m); end; m:=1; end; end; //подсчет различных элементов. сумма элементов массива отметок и будет //количеством различных элементов kol:=0; for i:=1 to N do for j:=1 to K do kol:=kol+mas_ij[i,j]; //конец
Ответ отправил: riaman, 2-й класс
Отвечает Лейла, 5-й класс : Здравствуйте, angel.nero. Делается просто. В одномерный массив записываем те элементы заданного двумерного массива, которые еще не встречались. По ходу, смотрим, встречалось ли уже такое значение, если нет, то увеличиваем счетчик. Изначальный массив генерируется случайно. Решение с комментариями в приложении.
Редактирование ответа по просьбе эксперта.
----- ∙ Отредактировал: Федоров Михаил/ Error00, Модератор ∙ Дата редактирования: 03.02.2010, 00:39 (время московское)
Приложение:
Ответ отправил: Лейла, 5-й класс
Отвечает Andrew Kovalchuk, 2-й класс : Здравствуйте, angel.nero. Для учебных задач вместо вектора (одномерного массива) достаточно использовать строку с разделителями.
Приложение:
Ответ отправил: Andrew Kovalchuk, 2-й класс
Отвечает _Ayl_, Студент : Здравствуйте, angel.nero. Предлагаю свой вариант. Предназначен для целых чисел, имеющих размер 1 или 2 байта (т.е. типы Byte, Word или Integer). Т.к. нас интересует только признак "число уже встречалось", то идеальная структура языка Паскаль для этого - множество. Множества очень эффективно реализованы (для вставки, удаления и проверки выполняется одна-две машинные команды), но у них есть ограничение: они могут быть реализованы только на ограниченных типах с количеством элементов не более 256. А мы хотим работать с 65536 числами. Заметим, что 65536 = 256 * 256, т.е. если мы заведем массив из 256 множеств, то мы сможем охватить весь диапазон 0..256. Индексом для выбора нужного множества будет служить старший байт числа, а элементом множества будет младший байт. Получение старшего байта - это арифметический сдвиг вправо на 8 разрядов (целочисленное деление на 256), получение младшего байта - логическое И с числом 255. Функция notY et проверяет, что указанное число еще не встречалось и устанавливает признак. Для установки используется процедура Include, существующая в Borland Pascal 7.0. Если в вашей версии такой процедуры нет, используйте вместо нее команду: Код:
Приложение:
Ответ отправил: _Ayl_, Студент
Оценить выпуск »
Задать вопрос экспертам этой рассылки »Скажите "спасибо" эксперту, который помог Вам!Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТАна короткий номер 1151 (Россия) Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов) © 2001-2010, Портал RFpro.ru, Россия
Авторское право: ООО "Мастер-Эксперт Про" Автор: Калашников О.А. | Программирование: Гладенюк А.Г. Хостинг: Компания "Московский хостер" Версия системы: 2010.6.14 от 03.02.2010 |
В избранное | ||