Member
Статус: Не в сети Регистрация: 07.02.2004 Откуда: Улан-Удэ
Помогите, пожалуйста, товарищи! Сегодня был на курсах по информатике, а мы там проходим Delphi, ну так вот: собираюсь я домой уже, а мне учитель так "ласково": "А должок?"
-Какой?
-Такой! Ты еще экзамен по Паскалю до сих пор не сдал! А мы его уже 1,5 месяца назад закончили!
-О-па! Ну, э-э, я сдам на следующем уроке.
-Э, нет! Давай- тяни билет!
Ну я вытянул и попал! Теорию я-то написал, а контрольной задачей меня и добили! Я ж ни черта не помню, Делфи один в голове! Послезавтра (16.12.2004) пересдача, вот прошу помощи у вас.
Мне дали билеты, сказали проделать, а на уроке дадут подобную задачу и мне надо будет её решить, а как делать-то не знаю! Вот и прошу.
Вот задачи:
1) Составить программу для вычисления суммы элементов в каждом столбце матрицы A(M,N)
2) Составить программу вычисления произведения минимальных элементов строк матрицы A(M,N)
Прошу, именно, помочь разобрать эти задачи, а не просто дать мне готовые решения, очень нуждаюсь в вашей помощи, братья оверклокеры и сестры оверклокерши.
Всех с наступающим Новым Годом! И Новым гадом в виде петуха!
Заблокирован Статус: Не в сети Регистрация: 03.03.2004 Откуда: CAPATOB
@.ru
Цитата:
1) Составить программу для вычисления суммы элементов в каждом столбце матрицы A(M,N)
Код:
{$A+,B-,D+,E+,F-,G-,I+,L+,N+,O-,P-,Q-,R-,S+,T-,V+,X+,Y+} {$M 16384,0,655360} Const N = 10; M = 10; Var A : Array [1..M, 1..N] of Integer; S : Array [1..N] of Integer; I, J : Integer; Begin Randomize; For I := 1 to M do begin For J := 1 to N do begin A[I, J] := Random(1000); Write(A[I, J]:5); end; WriteLn; end; WriteLn(' << Summa >>'); For I := 1 to N do begin For J := 1 to M do begin Inc(S[I], A[J, I]); end; Write(S[I]:5) end; ReadLn; End.
Цитата:
2) Составить программу вычисления произведения минимальных элементов строк матрицы A(M,N)
Код:
{$A+,B-,D+,E+,F-,G-,I+,L+,N+,O-,P-,Q-,R-,S+,T-,V+,X+,Y+} {$M 16384,0,655360} Const N = 10; M = 10; Var A : Array [1..M, 1..N] of Integer; Min : Array [1..M] of Integer; I, J : Integer; P : Extended; Begin Randomize; For I := 1 to M do Min[I] := 2000; P := 1; For I := 1 to M do begin For J := 1 to N do begin A[I, J] := Random(1000); Write(A[I, J]:5); If A[I, J] < Min[I] then Min[I] := A[I,J]; end; P := P * Min[I]; WriteLn; end; WriteLn(' << Proizvedenie = ', P:25:0, ' >>'); ReadLn; End.
Цитата:
Прошу, именно, помочь разобрать эти задачи, а не просто дать мне готовые решения, очень нуждаюсь в вашей помощи, братья оверклокеры и сестры оверклокерши.
Задачи слишком простые чтобы их разбирать. Лучше скажи что непонятно.
Member
Статус: Не в сети Регистрация: 07.02.2004 Откуда: Улан-Удэ
Mozg[1024] Ничерта не понятно, все забыл! Я просто ******!
ЗЫ Спасибо за решение, но еще бы и объяснение, пожалуйста...
Добавлено спустя 5 часов, 52 минуты, 33 секунды: Mozg[1024] Э-э, а что эти задачи вычисляют? Я сейчас их проверил, а они какие-то циферки выдают Там же надо таблицу сделать (3 строчки и 4 столбика), эти ячейки самому заполнить, а на основании введенных данных прога должна вывести результат. И зачем там readln в конце? Что туда вводить-то надо?
ЗЫ У вас еще end-ов не хватает
Эх! Слишком мало времени осталось, ничерта я не сделаю, не успею, завтра сразу после школы это попадалово, а сейчас у меня уже 19:50, да-да, попал я! "3" за полугодие будет, не более, а то верная смерть от родителей!
С пробелами - это неверный подход: словами будут считаться тире и т.п. А если строка нестандартная (начинается с пробела, между словами N-e число пробелов и т.п.) - это вообще катастрофа, а не решение
Вот, что сходу в голову пришло, даже не проверял (может, тоже не лучший вариант, но тем не менее):
Код:
Program WordCount Const Letters: Set Of Char=['A'..'Z', 'А'..'Я', 'a'..'z', 'а'..'я']; Var s:String; i: Integer; count: Integer; Begin WriteLn('Введите строку:'); ReadLn(s);
i := 1; count := 0;
Repeat While Not (s[i] In Letters) And (i <= Length(s)) Do Inc(i);
If (i <= Length(s)) Then Inc(count);
While (s[i] In Letters) And (i <= Length(s)) Do Inc(i); Until (i > Length(s));
WriteLn('Число слов: ', count); End.
Все понятно?
Суть такая: главный цикл следит за тем, чтобы мы за пределы строки не выскочили. Теперь о его внутренностях.
Первый while пропускает участки, не содержащие буквы. Как только найдена буква (или добежали до конца строки), цикл прерывается.
Далее - условие. Его смысл такой: если после прохождения первого цикла переменная i меньше длины строки, то в цикле определенно была найдена буква - счетчик слов увеличивается.
Второй while пропускает участки, содержащие буквы, т.е. слова - полная аналогия с первым while.
Таким образом, мы аккуратно движемся по строке и вылавливаем все слова до единого.
Пример только подсчитывает количество слов. Как их записывать в массив - это пусть в качестве домашнего задания останется. Подсказка: нужно ввести дополнительные переменные и немного модифицировать последний цикл while - он как раз бежит по буквам очередного слова
PS: учите Pascal, иначе чужие примеры вам не помогут
Member
Статус: Не в сети Регистрация: 07.02.2004 Откуда: Улан-Удэ
Цитата:
Это интересно как так, сначала Дельфи в котором используется Object pascal? а потом простой Pascal изучают?
Сначала Дельфи, Паскаль... ... ассемблер
Добавлено спустя 1 минуту, 54 секунды: Кстати, на счет моего первого поста. Я задачки переработал, да и сдал их, ответил теорию, написал подобную прогу на уроке и получил 5
Составить прогу, выделяющую каждую букву а в слове Х знаком тире(-).
Я пробовал, но не получается. Вот чё я напробовал. Не понимаю что тут.
Код:
Program zadacha2; Var x: string; i:integer; begin writeln ('Propishite slova'); readln (x); for i:=1 to length(x) do begin if x[i]='a' then insert ('-a-' , x , i) end; writeln (x) ; end.
Advanced member
Статус: Не в сети Регистрация: 23.10.2003 Откуда: Иркутск/Майкоп
c48gl
Код:
var s:string; i:integer; begin writeln; write('S='); readln(s); i:=1; while i<=length(s) do begin if s[i]='a' then begin insert('-',s,i+1); insert('-',s,i); inc(i); end; inc(i); end; writeln(s); readln; end.
_________________ Края каждого совершенно нового крышка процессора не на 100% гладкая. Это связано с тем, что следов мастерства не избежать. (c) Али.
Сейчас этот форум просматривают: San`Я и гости: 26
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения