ALISKa_16 Опубликовано 12 декабря, 2005 Жалоба Поделиться Опубликовано 12 декабря, 2005 привет ещё раз!программа в graph должна быть,часики должны тикать,сторелки ходить,звенеть в 8.00,а потом идти дальше,сказали сделать так,чтобы в соответствии с реальным временем было,ума не приложу,как это делать Ссылка на комментарий Поделиться на другие сайты Поделиться
cudla Опубликовано 13 декабря, 2005 Жалоба Поделиться Опубликовано 13 декабря, 2005 «КОМАНДНЫЕ ФАЙЛФЫ DOS» Написать командный файл с использованием списка фактических параметров для задания имен файлов, используемых в задании. В тексте им сопоставить формальные параметры %1 - %9. По всех заданиях проверить наличие параметров, существование обрабатываемых файлов и предложить на выбор выполнение по преобразованию или удаление файлов и каталогов. Файлы, которые обрабатываются в программе должны быть предварительно созданы в текстовом редакторе (команда EDIT) и сохранены в текущем каталоге. Вариант 8. Создать подкаталог, скопировать туда два файла, рассортировать первый в порядке возрастания, второй – убывания. Слить их и поместить по имени третьего файла , отобразить на экране объединенный файл. Удалить подкаталог. :) HELP Ссылка на комментарий Поделиться на другие сайты Поделиться
aTeos Опубликовано 13 декабря, 2005 Жалоба Поделиться Опубликовано 13 декабря, 2005 pinmix: aTeos:А задачку со знаками препинания я делал с помощью массива с указателем: *znak{.,:?} Точно, так даже лучше! Что-то я сразу не догадался :) :) По поводу второй проги. Если ты еще сам не сделал, стучись в аську. Просто опять неохота лишний раз писать :) Ссылка на комментарий Поделиться на другие сайты Поделиться
cudla Опубликовано 14 декабря, 2005 Жалоба Поделиться Опубликовано 14 декабря, 2005 «КОМАНДНЫЕ ФАЙЛФЫ DOS» Написать командный файл с использованием списка фактических параметров для задания имен файлов, используемых в задании. В тексте им сопоставить формальные параметры %1 - %9. По всех заданиях проверить наличие параметров, существование обрабатываемых файлов и предложить на выбор выполнение по преобразованию или удаление файлов и каталогов. Файлы, которые обрабатываются в программе должны быть предварительно созданы в текстовом редакторе (команда EDIT) и сохранены в текущем каталоге. Вариант 8. Создать подкаталог, скопировать туда два файла, рассортировать первый в порядке возрастания, второй – убывания. Слить их и поместить по имени третьего файла , отобразить на экране объединенный файл. Удалить подкаталог. HELP может сылочку подкинете по этой теме Ссылка на комментарий Поделиться на другие сайты Поделиться
Сим-Сим88 Опубликовано 14 декабря, 2005 Жалоба Поделиться Опубликовано 14 декабря, 2005 Тролль: Завалила преподша прогу, сказала делать по-другому. Вот что я настрочил, но не могу доделать. var I, J, Imin, Imax, M, N: integer; Min, Max: real; A:array[1..100,1..100] of real; B: array[1..100] of real; begin writeln ('введите число размерности матрицы',M,N); readln M,N; for I:=1 to M do begin writeln ('A[', I, ',', J, ']='); for J:=1 to N do read (A[i,J]); end; writeln ('матрица:'); ........................ тут она от меня требует вывода матрицы в виде таблицы ....................... Min:=A[1,1]; Imin:=1; Max:=A[1,1]; for I:=1 to M do for J:=1 to N do begin if A[i,J]>Max then begin Max:=A[i,J]; Imax:=I; end; if Max,Min then begin Min:=A[i,J]; Imin:=I; end; B:=Max; {вот эту строку я вообще не понял} end; Writeln ('Min=', Min, ' ', Imin); writeln ('Max в строке:'); for I:=1 to M do writeln(B:6:3); ................................. вот мы по ходу нашли масимум, осталось в этих максимумах найти минимумы (т.е. мы найдем минимаксный элемент), а потом найти номер строки в которой он расположен. Мозги работать отказались Ссылка на комментарий Поделиться на другие сайты Поделиться
Stolik Опубликовано 14 декабря, 2005 Жалоба Поделиться Опубликовано 14 декабря, 2005 Сим-Сим88 for <счетчик строк> i:= 0 to N do begin {строки} for <счетчик столбцов> j:= 0 to M do begin {столбцы} write(A[N,M]); end; {столбцы} writeln; end; {строки} Оно? Ссылка на комментарий Поделиться на другие сайты Поделиться
Сим-Сим88 Опубликовано 14 декабря, 2005 Жалоба Поделиться Опубликовано 14 декабря, 2005 Stolik: это вывод матрицы в виде таблицы? Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 14 декабря, 2005 Жалоба Поделиться Опубликовано 14 декабря, 2005 Сим-Сим88: Интересно, что ей не понравилось? Все ведь работало. Правда, сейчас заметил в приведенной мной раньше программе ошибку в подсказке WriteLn('Введите размерности матрицы (через пробел)',M,N); Должно было быть так: WriteLn('Введите размерности матрицы (через пробел)'); Из-за этого в приглашении к вводу размерностей выводились после приглашения значения M и N, бывшие в это время случайными числами. Но на работу программы это не влияло. Хотя, конечно, могло при проверке работы сбить с толку. Итак, значит, есть желание вывести матрицу после ввода снова на экран. Перед этим мы ее, правда, вводили, и все уже было на экране, но желание юзера - закон. Матрица на экран выводится так (потом включу этот кусок в текст программы, а пока напишу его отдельно): for I:=1 to M do begin for J:=1 to N do Write(A[i,J]); WriteLn; end; Поясняю технику: Write делает вывод на экран, в отличие от WriteLn, без заключительного перевода строки на экране. Следующий за ним вывод будет дописан в ту же строку. Перевод строки на экране делаем с помощью пустого WriteLn после вывода всех элементов строки матрицы. Поехали дальше. Судя по появлению массива B, твоя преподавательница хочет сначала записать все максимумы по строкам в отдельном массиве B, а потом уже искать в нем минимум. Я так полагаю, до нее не дошло, что эти два этапа можно совместить. То есть вместо матрешки поезд. Имхо, лишний массив и лишний цикл. Но как просят, так и сделаем. {объявление переменных и ввод матрицы просто переписываю} var I,J,M,N,K: Integer; Min,Max: Real; A: array [1..100,1..100] of Real; B: array [1..100] of Real; begin WriteLn('Введите размерности матрицы (число строк и, через пробел, число столбцов): '); ReadLn(M,N); for I:=1 to M do begin WriteLn('Введите элементы',I,'-й строки, разделяя их пробелами'); for J:=1 to N do Read(A[i,J]); end; {выведем введенную матрицу на экран} for I:=1 to M do begin for J:=1 to N do Write(A[i,J]); WriteLn; end; {поместим в массив B максимумы строк} for I:=1 to M do begin B:=A[i,1]; for J:=1 to N do if A[i,J]>B then B:=A[i,J]; end; {поехали искать минимум в массиве B} Min:=B[1]; for I:=1 to M do if Min>=B then begin Min:=B; K:=I end; {знак >= дописал только просмотрев еще раз программу в уже выложенном посте, а сначала заимствовал, подправив только переменные, строку из старой программы со знаком > , но не заметил, что в новой программе при этом K не присвоится значение, если сравнение ни разу не окажется истинным (в старой программе такого не могло быть); сейчас сравнение по крайней мере один раз сработает} {приехали} WriteLn; WriteLn('Минимум среди максимальных элементов строк: ',Min,' в строке',K); end. P.S. Кстати, разберу ввод матрицы с подсказкой на ввод каждого элемента, у тебя сделано так: for I:=1 to M do begin writeln ('A[', I, ',', J, ']='); for J:=1 to N do read (A[i,J]); end; Тут у тебя подсказка на ввод элемента выводится не перед вводом очередного элемента, а перед вводом элементов всей строки, один раз на всю строку, и выводимое в подсказке значение J в это время липовое, оставшееся после последнего выполнения ввода элементов строки. Надо так: for I:=1 to M do for J:=1 to N do begin write ('A[', I, ',', J, ']='); readln (A[i,J]); end; P.P.S. Если хочется вывод матрицы сделать красивым, то выводить лучше в форме с фиксированной запятой типа 3.142, а не в экспоненциальной форме 3.1415926536E+00, как по умолчанию. Тогда надо задавать при выводе формат для Real в виде Write(A[i,J]:8:3) или аналогично, тут 8 - всего отведенных позиций на размещение числа, а 3 - количество цифр после запятой. Если числа "обычные", будет намного красивее, но слишком маленькие числа станут нулями, а слишком большие автоматически раздвинут количество отводимых позиций и могут быть очень длинными. Ссылка на комментарий Поделиться на другие сайты Поделиться
Сим-Сим88 Опубликовано 15 декабря, 2005 Жалоба Поделиться Опубликовано 15 декабря, 2005 Тролль: а зачем мы вводим Max, если мы ни разу его не используем? Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 15 декабря, 2005 Жалоба Поделиться Опубликовано 15 декабря, 2005 Сим-Сим88: Лишний. Просто остался, когда я скопировал начальные строчки старой программы. Выкинь. Ссылка на комментарий Поделиться на другие сайты Поделиться
pinmix Опубликовано 17 декабря, 2005 Жалоба Поделиться Опубликовано 17 декабря, 2005 По поводу второй проги. Если ты еще сам не сделал, стучись в аську. Просто опять неохота лишний раз писать ...спасиба за беспокойство... Сделал, за этот семестр все! Лабы кончились! Зачет! Ссылка на комментарий Поделиться на другие сайты Поделиться
Tas'ka Опубликовано 18 декабря, 2005 Жалоба Поделиться Опубликовано 18 декабря, 2005 ;) не могли бы вы помочь в написании не большой программы на Java + XML ;) Нужно что то типа небольшой библиотеки. В файле *.xml должно содержатся...книги, год изданий, автор ...ну и все такое... А java должна выводить (вывод любыми спосабами)... интерфейски такой ...чтобы можно было добовлять новые книги... и все это показывывалось... ;) Ссылка на комментарий Поделиться на другие сайты Поделиться
killogramm Опубликовано 20 декабря, 2005 Жалоба Поделиться Опубликовано 20 декабря, 2005 (изменено) Тролль: Спасибо! Теперь понятно. Только попалась мне еще одна лаба на паскале: Дана матрица MxN. Надо вывести координаты всех седловых точек матрицы. Седловым называется эл-т матрицы одновременно максимальный в своем столбце и минимальный в своей строке и наоборот Я ее начал делать и стал тупить по-страшному :D : не могу написать нормальный алгоритм поиска. Вот файл проги которую я начал писать. :D Посмотрите пожалуйста и помогите написать поиск этого эл-та. Заранее благодарен! 102.TXT 102.TXT Изменено 20 декабря, 2005 пользователем killogramm Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 21 декабря, 2005 Жалоба Поделиться Опубликовано 21 декабря, 2005 (изменено) killogramm: Все просто: находим в каждой строке минимум и проверяем, является ли он максимумом соответствующего ему столбца. Все та же матрешка... Вот только с "и наоборот" надо обдумать, как это реализовать. Можно продублировать операции, заменяя поиск по минимуму на поиск по максимуму и наоборот. Можно транспонировать матрицу и повторить все еще раз, только выводить найденные координаты надо будет с учетом транспонирования. А лучше всего действовать по стишку "Здесь все идет наоборот, вверх дном и наизнанку: Над крышами летает крот, а джем не лезет в банку". Просто вывернуть матрицу вверх дном и повторить поиск. Минимум станет максимумом и наоборот. Что и требуется. var A:array [1..20,1..20] of Real; Min,Max:Real; M,N,P,I,J,K,JMin,KMax,L:Integer; begin WriteLn('Введите число строк и, через пробел, число столбцов матрицы'); ReadLn(M,N); for I:=1 to M do begin WriteLn('Введите элементы',I,'-й строки, разделяя их пробелами'); for J:=1 to N do Read(A[i,J]); end; {ввод закончили, начнем работу} L:=0; {это счетчик седловых точек} for P:=1 to 2 do begin for I:=1 to M do begin Min:=A[i,1]; for J:=1 to N do if A[i,J]<=Min then begin Min:=A[i,J]; JMin:=J end; {в строке I минимум находится в столбце JMin} Max:=A[1,JMin]; for K:=1 to M do if A[K,JMin]>=Max then begin Max:=A[K,JMin]; KMax:=K end; {в столбце JMin максимум находится в строке KMax} if KMax=I then begin L:=L+1; Writeln(L,'-я седловая точка:' ,I,', ',JMin); end; {если максимум столбца, проходящего через минимальную точку строки, находится в этой же строке, это седловая точка} end; for I:=1 to M do for J:=1 to N do A[i,J]:=-A[i,J]; {вывернули матрицу наизнанку} end; if L=0 then WriteLn('Седловых точек нет'); end. P.S. Твой алгоритм делает полную проверку для каждого элемента матрицы, не является ли он седловой точкой. Это тоже можно, но лучше было бы делать это только для возможных кандидатов, а их в каждой строке только два: минимум и максимум. И обрати внимание на поиск минимумов и максимумов, просто сравнение соседних элементов не годится. Оно подходит, только если функция одногорбая, и то с горбом в нужную сторону. А булевские выражения можно записывать проще. Например, проверку вроде if (ismaxstr(i,j)=true) ... можно записать проще как if ismaxstr(i,j) ... А вообще реализация твоего алгоритма выглядит так: for I:=1 to M do for J:=1 to N do begin ismaxstr:=true; isminstr=true; for K:=1 to N do begin if A[i,J]<A[i,K] then ismaxstr=false; if A[i,J]>A[i,K] then isminstr:=false; end; ismaxstlb:=true; isminstlb=true; for K:=1 to M do begin if A[i,J]<A[K,J] then ismaxstlb=false; if A[i,J]>A[K,J] then isminstlb:=false; end; if isminstr and ismaxstlb or ismaxstr and isminstlb then WriteLn(I,J); end; Изменено 21 декабря, 2005 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
killogramm Опубликовано 21 декабря, 2005 Жалоба Поделиться Опубликовано 21 декабря, 2005 Тролль: Спасибо сейчас буду пробовать твой вариант - завтра сдавать. :) Ссылка на комментарий Поделиться на другие сайты Поделиться
us1k Опубликовано 22 декабря, 2005 Жалоба Поделиться Опубликовано 22 декабря, 2005 плз хелп! програму для решения етой гадости на бейсике.. Завод роботает по следующему графику: воскресенье одна смена, в остальние дни 2 смены (независимо от праздников). Опредилить дату k-й смены (начиная с завтрашнего дня) и будет ли она первой или второй в етот день. Сегодняшння дата dd/mm/gg - P-й день недели (извесно, что k меньше числа смен до конца месяца) Народ плз хелп, очень срочно плз хелп! програму для решения етой гадости на паскале (йоп).. Завод роботает по следующему графику: воскресенье одна смена, в остальние дни 2 смены (независимо от праздников). Опредилить дату k-й смены (начиная с завтрашнего дня) и будет ли она первой или второй в етот день. Сегодняшння дата dd/mm/gg - P-й день недели (извесно, что k меньше числа смен до конца месяца) Народ плз хелп, очень срочно Ссылка на комментарий Поделиться на другие сайты Поделиться
Emotion Опубликовано 23 декабря, 2005 Жалоба Поделиться Опубликовано 23 декабря, 2005 Добрый день! Я студент 4-го курса НТУУ КПИ. По курсу "Микропроцессорная техника" задали написать программу. Но не знаю как её реализовать. Прошу помочь в написании. Условие: Проссумировать 2 массива десятичных восьмирозрядных чисел 5C00:1000H и 5000:2000H. Результат который больше 5000H поместить в массив 5F00:3000H. Длина массива 150 чисел. Пишем мы программы для микропроцессора 1810. Я смог написать программу только для "двоичных восьмирозрядных" чисел вместо "десятичных восьмирозрядных". Вот текст программы: org 100h mov cx,150d mov si,1000h m2: mov bx,5C00h mov ds,bx mov al,[si] mov bx,5000h mov ds,bx add al,[si+1000h] cmp al,50h jc m1 mov bx,5f00h mov ds,bx mov [si+2000h],al m1: si,1h loop m2 end Эта программа, которую написал я. Преподаватель не принял работу. Сказал что нужно написать согласно заданию. Одногрупники тоже розводят руками. Не знаю что делать. Это последняя работа. Прошу помочь в написании. Преподаватель посоветовал плюсовать десятичные восьмирозрядные числа по 2 разряда, но там нужно учитывать флаги(в случае переполнения, например). Не знаю как это сделать... И ещё - как можно оптимизировать (то есть сделать лучше) уже написанную мной программу. Буду благодарен за помощь. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 24 декабря, 2005 Жалоба Поделиться Опубликовано 24 декабря, 2005 Emotion: Писать и проверять программу некогда, да и под рукой сейчас ничего для этого нет, но для работы с десятичными числами в К1810ВМ86 имеются специальные команды. При этом числа могут быть представлены в видах по одной (код ASCII) или по две (BCD) цифры в байте. Байты складываются обычными командами сложения байтов: младшие - командой ADD, то есть без учета переноса, все остальные - командой ADC, с учетом возможности переноса из предыдущего байта, после каждого сложения двух байтов результат в AL корректируется специальной командой AAA (для ASCII) или DAA (для BCD). Судя по заданию, лучше использовать формат BCD (Binary Coded Decimal, если правильно помню расшифровку). То есть для сложения каждых двух чисел нужны будут одна команда ADD и три команды ADC, с командой DAA после каждой команды сложения плюс необходимые пересылки с регистром AL. В конце этой цепочки команд можно вставить проверку на превышение суммой числа 5000h (это самое сложное в задаче), то есть 20480, проще всего ИМХО побайтовым сравнением результата, начиная сверху, с байтами числа 20480 в коде BCD (можно ускорить это с четырех до двух сравнений, сравнивая слова), и если есть превышение, то пересылку четырех байтов суммы в массив результатов. Остается организовать цикл прохождения этой цепочкой команд по массивам исходных данных (в них каждое число занимает 4 байта). Ссылка на комментарий Поделиться на другие сайты Поделиться
LifeOnNet Опубликовано 25 декабря, 2005 Жалоба Поделиться Опубликовано 25 декабря, 2005 (изменено) привет! есть задание: написать программу которая будет: читать из файла следующие данные(для каждого из 100 обьектов): позиционный номер имя обьекта и выводит преобразованный в бинарный код позиционный номер(0-99 в десятичном) на lpt1 порт в зависимости от полученного имени обьекта. также необходима обратная функциональность: запись в файл позиционного номера и имени обьекта в зависимости от полученных данных от пользователя. Язык написания: Си Изменено 26 декабря, 2005 пользователем LifeOnNet Ссылка на комментарий Поделиться на другие сайты Поделиться
azool Опубликовано 2 января, 2006 Жалоба Поделиться Опубликовано 2 января, 2006 Привет народ, помогите пожалуйста с такой задачей: Исходная функция имеет вид: Y = x^2 + 45*Z-13 , если X > 0; 1/(X + Z) , если Х < 0; 13*Z - 45 , если Х = 0. Составить: 1. Блок – схему. 2. Распределение исходных данных, промежуточных результатов и конечного значения Y по регистрам памяти. 3. Программу в исполнительных адресах гипотетического компьютера. Ссылка на комментарий Поделиться на другие сайты Поделиться
DaMneD Опубликовано 5 января, 2006 Жалоба Поделиться Опубликовано 5 января, 2006 Если не затруднит помоги выполнить лаб. на Delphi 7 (про гостиницу). Надо чтобы прога выполняла такие функции. Клиент приходит в гостиницу, чтобы снять номер. Прога вычисляла какие комнаты свободны (одноместные, двухместные, простые, люкс) и стоимость комнат. Сколько постельных принодлежностей на складе. Если можно с картинками! Заранее РЕСПЕКТ!! Ссылка на комментарий Поделиться на другие сайты Поделиться
gR.AleXiSofT Опубликовано 12 января, 2006 Жалоба Поделиться Опубликовано 12 января, 2006 Люди добрые!! Мне очень срочно надо сделать эту вещь на АССЕМБЛЕРЕ... Необходимо написать программу, которая после ввода текста посчитает число пробелов в тексте и перенесет эти пробелы в центр строки... Дополнительных строк использовать нельзя, если может помочь есть код на паскале... вот... Program Delitel; uses crt; var stroka:string; strln,i,countsp:integer; Begin writeln('Programm: Fuking Spaces'); writeln('Input String:'); readln(stroka); strln:=length(stroka); for i:=1 to strln do if (stroka=' ') then countsp:=countsp+1 else stroka:=stroka+copy(stroka,i,1); delete(stroka,1,strln); strln:=length(stroka); if (countsp>0) then for i:=1 to countsp do insert(' ',stroka,(strln div 2)+1); writeln('Numrer of spaces: ',countsp:3); writeln('Changed string:'); writeln(stroka); readln; end. ПОМАГИТЕ ПОЖАЛУЙСТА!! Заранее спасибо... Ссылка на комментарий Поделиться на другие сайты Поделиться
Gubis Опубликовано 13 января, 2006 Жалоба Поделиться Опубликовано 13 января, 2006 люди если вам не трудно на Турбо Паскале написать прогу. - Дан двумерный массив целых чисел.Поменять местами элементы первой и третьей строки. Ссылка на комментарий Поделиться на другие сайты Поделиться
Stolik Опубликовано 13 января, 2006 Жалоба Поделиться Опубликовано 13 января, 2006 Gubis Решение в лоб: ----------------------------------- Program Change; uses Crt; var arr : array[0..9, 0..9] of byte; Temp1 : array[0..9] of byte; Temp3 : array[0..9] of byte; i, j, k : byte; begin ClrScr; k:= 0; for i:= 0 to 9 do begin for j:= 0 to 9 do begin arr[i, j]:= k; inc(k); end; end; {заполнили массив} for i:= 0 to 9 do begin for j:= 0 to 9 do begin write(arr[i, j]:3); end; writeln; end; readln; {вывели исходный массив} for j:= 0 to 9 do Temp1[j]:= arr[0, j]; {запомнилил первую строку} for j:= 0 to 9 do Temp3[j]:= arr[2, j]; {запомнили вторую строку} for j:= 0 to 9 do arr[0, j]:= Temp3[j]; for j:= 0 to 9 do arr[2, j]:= Temp1[j]; {поменяли строки} for i:= 0 to 9 do begin for j:= 0 to 9 do begin write(arr[i, j]:3); end; writeln; end; readln; {вывели получившийся массив} end. {change} ---------------------------------- Ссылка на комментарий Поделиться на другие сайты Поделиться
pnck Опубликовано 14 января, 2006 Жалоба Поделиться Опубликовано 14 января, 2006 Решение Stolik конечно можно принять, но запоминать целых две строчки это много. Предлагаю заменить раздел в котором происходит замена for j:= 0 to 9 do Temp1[j]:= arr[0, j];{запомнилил первую строку} for j:= 0 to 9 do Temp3[j]:= arr[2, j]; {запомнили вторую строку} for j:= 0 to 9 do arr[0, j]:= Temp3[j]; for j:= 0 to 9 do arr[2, j]:= Temp1[j]; {поменяли строки} поменять на что-то типа for j:=0 to 9 do begin temp:=arr[0,j]; arr[0,j]:=arr[2,j]; arr[2,j]:=temp; end; в этом случае строчки Temp1 : array[0..9] of byte;Temp3 : array[0..9] of byte; нужно заменить на temp: byte; В моем случае программа будет работать гораздо быстрее и занимать меньше памяти, хотя для такой короткой проги это не критично. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти