приветствую вас,великие умы современности...к моему позору я совсем не понимаю Паскаль(хотя были попытки). теперь только из-за двух несданных задач(остальные худо-бедно осилила), хотят выгнать из института(хотя я прилежный студент и других долгов не имею).я никак не могу их прокомментировать в силу слабости мысли в данной области. если можете, помогите(вас,наверно,заколебала уже эта фраза!!!). короче, 1).двумерный массив:вычислить сумму элементов выше главной диагонали 2). дана строка, содержащая ";".подсчитать колличество знаков до и после ";".
Ledy, Да уж, ситуация - хуже некуда. Задачки на самом деле элементарнейшие )Попробуем разобраться.
Code
Uses CRT; Const m = 5; Var a: Array[1..m, 1..m] of Integer; s: Integer; i, j: Byte; Begin ClrScr; Randomize; For i := 1 to m do Begin For j := 1 to m do Begin a[i,j] := Random(10); Write(a[i,j], ' '); End; Writeln(#13#10); End; Writeln(#13#10); s := 0; (* !!!!!!!!!!! *) For j := 1 to m do For i := 1 to j do Begin If (i = j) then continue; s := s + a[i,j]; End; Writeln('Summa: ', s); Readkey;
End.
Под тем местом, где комментарий "!!!!!" слабый цикл. Его можно немного оптимизировать, но у меня с утра голова не варит. Я вам позже скину оптимизированный фрагмент. Но и без этого задача работает, проверил на 4-х массивах, дальше не стал )) Если что-то не срастется - пишите, подумаем.
Насчет второй задачи:
Code
Uses CRT; Var s: String; i: Byte; Begin ClrScr; s := 'soro;k banan'; Writeln('Stroka: ',s,#13#10); i := Pos(';',s); Writeln('Do znaka ";": ',i-1); Writeln('Posle znaka ";": ',length(s)-i); Readkey; End.
Это в том случае, если у нас всего 1 раз встречается символ ";". А если их несколько, или вообще нет - нужно уточнить условия. Вроде как бы все. Поддерживаю также проект сообщество молодых сисадминов
Seqular, я даже не знаю, как и выразить свою благодарность к вам) у меня просто нет слов...сейчас пойду, попробую сдать. надеюсь, мои мучения скоро кончатся...даже не представляете, как мне помогли)) ну бывают же умные люди...
Добавлено (10.09.2008, 13:32) --------------------------------------------- не сдала((...вот так бред. я очень прошу вас помочь мне исправить ошибки. тот вариант, который вы мне написали, преподдаватель не принял бы в следствии того, что там есть неизучаемые нами знаки(я ж на гумфаке учусь, там всё примитивно). а вот программа, над которой я тудилась(опираясьна вашу,конечно), неверно считает сумму элементов выше главной диагонали. укажите на помарку, если вас не затруднит)
uses crt; var a:array[1..50,1..50]of integer; n,i,j,sum:integer; begin clrscr; write(Vvedite razmer matricy n='); readln(n); randomize; sum:=0; for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=random(20); write(a[i,j]:4); if j>i then sum:=sum+a[i,j]; end; writeln; end; write('Sum=',sum); readln end.
Ledy, Убедительная просьба заключать исходный код в тег "code" (в окне редактирования ответа). Я проверил ваш исходник. Непонятно, почему он вам не понравился. Но он очень даже замечательно работает. Кое-что подкорректировал, но алгоритм не менял. Присылаю скриншот в файле. Вот. Смотрим. Начну с первой строки и далее по остальным. 2+12+1+18+13+19+16+6+4+17=108 Все верно считает!
uses crt; var a:array[1..50,1..50]of integer; n,i,j,sum:integer; begin clrscr; write('Vvedite razmer matricy. N: '); readln(n); randomize; sum:=0; for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=random(20); write(a[i,j]:4); if j>i then sum:=sum+a[i,j]; end; writeln; end; write('Summa: ',sum); readkey; end.
Ledy, Насчет второй задачи, преподу нужно объяснить, что действовать по шаблону = плохо. И нужно учиться и развиваться. Но это вы уже сами расскажите ему, (вы же гумфак, а я всего-лишь физмат), поэтому скину вам оптимизированный вариант:
Code
Uses CRT; Const s: String = 'Privet;Test'; Var i: Byte; number: Byte; Begin ClrScr; Writeln(s); For i := 1 to length(s) do Begin If (s[i] <> ';') then inc(number) else Begin Writeln('Do ";": ',number); number := 0; End; End; Writeln('Posle ";": ',number); ReadKey; End.
Ну конечно он не оптимизирован, а наоборот, сделан под начинающих )) Если вопросы есть по каким-то операторам или принципу работы - задавайте смело! С зачетом надо что-то делать, это факт )) Удачи Поддерживаю также проект сообщество молодых сисадминов
чувствую себя обязанной по гроб жизни...ну как мне тебя отблагодарить,а?! я вся уже замаялась; какие этот паскаль мне только ошибки не выводил...мрак))чаще всего наблюдалась error 15 "file not found". я решила,что это какой-то косяк с самой программой и скачала себе паскаль заново. дело пошло лучше) потом,стыдно признаться,конечно,были проблемы с сохранением(до сих пор не поняла,почему файл нельзя сохранить куда угодно)благо,зашёл друг и помог(хотя сам в этом не силён). так что надеюсь, что в скором времени сдам) я правда бесконечно благодарна. ваша отзывчивость и способности оставляют безумно приятное впечатление. если нужна будет помощь в области гум.наук-обращайтесь(я не такая глупая,какой могу показаться..ну,разве только чуть чуть)) и ещё раз спасибо))
Ledy, Да ты не кажешься глупой. Просто гуманитарий - это действительно не то направление, где легко дается программирование. Мы все в чем-то сильны ). Вот.. Насчет ошибок паскаля - это дело поправимое. Если в синтаксисе проблема - он даже строку показывает, где проблема. Там уже, поразмышляв, можно понять почему возникла ошибка и исправить. Вот.. Гораздо хуже бывает, когда паскаль не показывает ошибок (т.е. синтаксис верен, но что-то с логикой. Например неверный ответ) вот тогда можно потратить часы на отладку и поиск ошибки. А бывает просто 2 оператора местами поменять и все нормально )
Сохранять в принципе можно в любую папку. Для этого есть целых 3 способа:
1) Использовать переход по папкам. Например, если сейчас активная папка "C:\TP7\BIN", а сохранить нужно на "C:\" то в качестве имени сохраняемого файла пишем: "..\..\1.pas" и все. Символ ".." означает переход на уровень выше в папках )
2) Написать путь сохранения полностью. Например, как в прошлом случае, можно написать имя файла: "C:\1.pas". Ну или указать другой диск. В общем все делается вручную.
3) Использовать опцию "File -> Change Dir". Там выбрать диск и папку. Потом нажать "ОК" и сохранить в нее.
Все это так мутороно, потому что паскаль разрабатывался как DOS-приложение. А операционная система DOS немного устарела.
Вот. А насчет благодарности - просто буду рад, если будешь продолжать к нам заходить. Ну там задачку подкинуть, или просто пообщаться. Ну и чтобы друзья знали про наш сайт. Мало ли кому пригодиться )) Решаем задачки мы, как видишь, не требуя ничего в замен (практически) =)))
Добавлено (22.09.2008, 20:19) --------------------------------------------- кстати, зачёт я сдала)) даже немного начала разбираться в паскале...хочуначать тщательное изучение(хотя поздно спохватилась,курс информатики у нас закончился).самостоятельно смогла сделать несколько(хоть и элементарных,наверно),задач, данных преподом))короче, спасибо вам за ваш сайт))))
Ledy, Всегда пожалуйста! Если что-то понадобится - вы всегда можете к нам обратиться! Всего доброго! Это темку закрываю. Поддерживаю также проект сообщество молодых сисадминов