KMA
Долгожитель
|

Погоди... во-первых, оформляй код по человечески, если хочешь, чтобы люди тебя понимали правильно... Во вторых, программа, это тебе не сочинение, на середине никто и никогда не останавливается, тем более хотя бы begin и end расставила, ведь потом запутаешься. Вот что ты хотела сказать своим "i:="??? Уснул(а) на этом что-ли? Не представляешь как это не культурно и некрасиво. Задача проста. И как обычно делиться на три этапа. Этап 1. Организовываем ввод данных. В данном случае его мы опускаем, т. к. в файле уже есть строки. Этап 2. Обрабатываем. Этап 3. Выводим (т. е. сохраняем в файл). И все это делается просто:
Code Sample:
BEGIN assign (f, 'abc.txt'); assign (g, 'def.txt'); reSet (f); {из этого файла будем читать строки} reWrite (g);{в этот записывать} while not eof(f) do begin readLn (f, s); {считаем строку} {если конец строки равен началу} if s[ 1 ]=s[ length(s) ] then begin {первая половина строки} myStr:=copy (s, 1, length (s) div 2); {добавляем пять пробелом в середину} myStr:=myStr+' '; {вторая половина строки} myStr:=myStr+copy(s, (length(s) div 2)+1, length(s) div 2); {пишем эту строку в файл} writeLn (g, myStr); end; end; close (f); close (g) END.
Вот и вся задача. Проработай только ситуацию, когда строка имеет нечетное количество символов. И больше так свой код не пиши. (Сообщение отредактировал KMA 10 янв. 2008 19:53)
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 10 янв. 2008 19:50 | IP
|
|
Guest
Новичок
|
Помогите написать задачу на Паскале. Задача: У Васи есть N яблок. Друзья спросили у него К бялок. Помогите ему выбрать яблоки, которые нужно отдать так, чтобы суммарный вес оставшихся яблок был максимален. Формат входных данных: на первой строке входного файла даны два числа N и К (1<K<N<10000) - колчиство яблок у Васи и количество яблок которые нужно отдать. На второй строке строке дано N число в пределах от 1 до 10 - веса яблок. числа в строках разделены пробелами Формат выходных данных в выходной файл выведите одно число - максимальный возможный суммарный вес оставшихся яблок.
|
Всего сообщений: Нет | Присоединился: Never | Отправлено: 14 янв. 2008 13:15 | IP
|
|
KMA
Долгожитель
|

Тут есть два решения. Первое, это жадный алгоритм. Второй это тупо в лоб. Сортируем массив с весом яблок а затем отбираем первые N. Чтобы работало шустро можно предложить быструю сортировку. Guest, у тебя собственно какие вопросы? Если нужен алгоритм, то пожалуйста жадный алгоритм. Или если хочешь воспользоваться лобовым методом, то предлагаю, следующее решение: 1. Сортируем массив (времени уйдет уйма, поэтому советую быструю сортировку) из N элементов. 2. Начинаем с K+1 элемента по N считать суммарный вес. Если не знаешь, то суммарный вес считается как
Code Sample:
s:=0; for i:=k+1 to n do s:=s+a[ i ];
где a это заданный массив веса. Вот собственно и все. Хочешь больше, тогда пробуй решать сам, а я постараюсь тебе помочь.
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 14 янв. 2008 15:35 | IP
|
|
Fedos
Новичок
|

Помогите плизз.Совсем не получаеться составить программу. Задача. Даны наименования вузав.Выеснить какие из них начинаються на букву 'М' Мне надо сделать такчто бы прога проверяла несколько слов,сравнивала первую букву с 'М' и если совпадает то выводила его. Не надо использовать Delete. program l3; var st:array [1..5] of string; i,p:integer; begin writeln('BBedite 5 Byzof'); for i:=1 to 5 do readln(st[ i ]); For i:=1 to 5 do if st[i,1]=m then begin writeln(st[ i ]); p:=p+1; end; if p=0 then writeln('Net '); end. у меня так получилось.только она всё ровно не правильно работает (Сообщение отредактировал Fedos 30 янв. 2008 13:35) КМА: четко читай правила! Я там упоминал, что необходимо ставить пробелы между [ i ], так как на BBCode это означает выделить курсивом. И проверяй свое сообщение перед отправкой. Так же используй отступы и оформляй текст как положено. (Сообщение отредактировал KMA 30 янв. 2008 14:28) (Сообщение отредактировал Fedos 30 янв. 2008 16:11)
|
Всего сообщений: 3 | Присоединился: январь 2008 | Отправлено: 30 янв. 2008 11:19 | IP
|
|
KMA
Долгожитель
|

Так, ну во первых, ты все таки используешь одномерные массивы, поэтому запись st[i, 1]=m просто тупо и непонятно. собственно здесь у тебя основная ошибка Теперь посмотри как это выглядит в правильном коде коде:
Code Sample:
if (st[ i ] [1]='M') or (st[ i ] [1]='м') then begin ... end;
Еще есть одна ошибка. Я такого слова зарезервированного не знаю user (точнее знаю, но из другой темы), а так же если это опечатка, то модуля cet я так же не знаю, может ты имел ввиду crt? (Сообщение отредактировал KMA 30 янв. 2008 14:40)
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 30 янв. 2008 14:39 | IP
|
|
Fedos
Новичок
|

Да тут ты прав.Нопрога после внесения всех изменений всё ровно не пашет.Если есть слова на 'М' то она просто ни чего не выдаёт.
|
Всего сообщений: 3 | Присоединился: январь 2008 | Отправлено: 30 янв. 2008 16:14 | IP
|
|
KMA
Долгожитель
|

Как ничего не выдает???!!! Я ее лично сам тестил. Переделай буквы на английский. Ну вот лично сейчас скопировал твой код, поменял одну строку и все заработало. Смотри внимательнее.
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 30 янв. 2008 19:28 | IP
|
|
Fedos
Новичок
|

Сделал!!!кому интересно смотрите Program f; var Mas: array[0..6] of string; I,Bx: Integer; begin Writeln('vvedite ByzbI'); For I:=0 to 6 do begin Write(I+1, ') '); Readln( Mas[ i ] ); end; writeln; writeln('OtBET:'); Writeln; Bx :=0; For I:=0 to 6 do If Mas[ i ][1] In ['m','M'] then begin inc ( Bx); Writeln( Bx, ') ', Mas[ i ], ';'); end; readln; end. КМА: еще раз повторяю, делай текст своих прог понятным не только себе, но и другим. (Сообщение отредактировал KMA 30 янв. 2008 19:49)
|
Всего сообщений: 3 | Присоединился: январь 2008 | Отправлено: 30 янв. 2008 19:39 | IP
|
|
milaschka
Новичок
|
помогите мне пожалуйста! 1 задача. Даны действительные числа X,Y.Определить,принадлежит ли точка С координатам следующей области: область внутри круга X*X+Y*Y=1, но вне круга X*X+Y*Y=0.5*0.5 2 задача. Пусть х,у-координаты точки U U=х+у,если (х,у) принадлежит D, U=х-у,в противном случае область D есть множество точек выше параболы у=х*х,но ниже кривых у=ехр(-х) и у=ехр(х) Определить U. 3 задача. Даны действительное число а,натур. число n.Вычислить а*(а+1)*...*(а+n-1). 4 задача. Даны натур.число n.Вычислить (-1)1(cтепень)/1/(2*1+1)+...+(-1)n(cтепень)/n/(2n+1). P.S.там (-1)в степени 1 деленное на 1 и (-1) в степени n деленное на n. Буду очень благодарна,если вы решите мне эти задачи!!!
|
Всего сообщений: 4 | Присоединился: февраль 2008 | Отправлено: 5 фев. 2008 20:20 | IP
|
|
KMA
Долгожитель
|

Здесь НЕ РЕШАЮТ, а помогают. Либо выдаешь свои мысли, либо я удаляю твое сообщение.
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 6 фев. 2008 20:31 | IP
|
|
|