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) Али.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения