Дневник nut.
| |
KaDeaT | Дата: Понедельник, 2013-02-11, 1:32 AM | Сообщение # 391 |
Нобелевский лауреат
Группа: Проверенные
Сообщений: 11169
Репутация: 1446
Замечания: 0%
Статус: Offline
| Цитата (nut) Если он равен второй букве как найти какой букве он равен? =))) Кодом пожалуйста. =) пускай мы считали первую букву из строчки в переменную s. как теперь узнать что это и за буква и в куда надо сделать +1. =))
Обучение программированию
|
|
| |
KaDeaT | Дата: Понедельник, 2013-02-11, 1:39 AM | Сообщение # 392 |
Нобелевский лауреат
Группа: Проверенные
Сообщений: 11169
Репутация: 1446
Замечания: 0%
Статус: Offline
| Вот тут-то и вылазит недостаток первого метода хранения данных. Тебе сначала нужно будет циклом пробежать по 1 массиву, и узнать номер его, и потом по этому номеру уже записывать во второй массив.
А теперь фанфары и барабанная дробь на сцене появляется таблица ASCII. В паскале есть функция ord(). Если мы ей передадим наш символ s то она вернет нам его номер в таблице. т.е. s:='a'; write(ord(s));
выведет нам 97. =))) Ты понимаешь какие открываются горизонты сразу для тебя? =)))
Есть кстати и обратная функция chr() вроде. Посмотри в справке. =)
Обучение программированию
|
|
| |
nut | Дата: Понедельник, 2013-02-11, 1:44 AM | Сообщение # 393 |
Доцент
Группа: Проверенные
Сообщений: 663
Репутация: 82
Замечания: 0%
Статус: Offline
| Слушай! А почему вылезло сообщение "День первый"??? *__*
for i:=0 to 9 do {Цикл от 0 до 9 для обнуления массива} a[i]:=0;
begin while ch<> '.' do read(ch); a[ch]:=a[ch]+1; read (ch); end;
стремноватенько как-то...вот в этом я и запутываюсь
ЕГЭ2013: РМФ:272 РМИ:281 Дневник:/forum/72-37475-1 МФТИ ФИВТ, 1 курс
|
|
| |
KaDeaT | Дата: Понедельник, 2013-02-11, 1:50 AM | Сообщение # 394 |
Нобелевский лауреат
Группа: Проверенные
Сообщений: 11169
Репутация: 1446
Замечания: 0%
Статус: Offline
| Я прикрепил его наверное когда-то. =))) Сейчас убрал.
Цитата (nut) for i:=0 to 9 do {Цикл от 0 до 9 для обнуления массива} a[i]:=0; почему до 9? откуда число 9? Почему не до 11 например? или не до 100?
Цитата (nut) while ch<> '.' do read(ch); a[ch]:=a[ch]+1; read (ch); end;
Ну пойдем по строчкам. Сначала проверяем условие, но у нас нет в ch еще ничего, значит цикл даже не начнет выполнятся.
2 способа есть.
1. сначала читаешь первый символ. А потом запускаешь свой цикл и в нем уже читаешь остальные, пока точку не встретишь.
2. (правильнее) используешь цикл repit ... until.
Обучение программированию
|
|
| |
nut | Дата: Понедельник, 2013-02-11, 1:59 AM | Сообщение # 395 |
Доцент
Группа: Проверенные
Сообщений: 663
Репутация: 82
Замечания: 0%
Статус: Offline
| ой!!! это опечатка. Конечно, должно быть от 0 до 26.
for i:=0 to 26 do {Цикл от 0 до 9 для обнуления массива} a[i]:=0;
Я не совсем понимаю вот что: допустим, я прочитала первый символ. НО как потом написать что-то типа этого: "Если считанный символ принадлежит промежутку от А до Z, то к считанной букве прибавляем 1".
Мы же не можем написать if a>A and a<Z {в смысле принадлежит какой-то цифре из алфавита}
видимо, вариант с кодами все-таки легче..."если число принадлежит промежутку от КОДА А до КОДА Z, то считанному КОДУ прибавляем 1} до другого варианта я что-то не могу додуматься...не могу определить промежуток.
ЕГЭ2013: РМФ:272 РМИ:281 Дневник:/forum/72-37475-1 МФТИ ФИВТ, 1 курс
Сообщение отредактировал nut - Понедельник, 2013-02-11, 2:02 AM |
|
| |
KaDeaT | Дата: Понедельник, 2013-02-11, 2:02 AM | Сообщение # 396 |
Нобелевский лауреат
Группа: Проверенные
Сообщений: 11169
Репутация: 1446
Замечания: 0%
Статус: Offline
| Цитата (nut) "Если считанный символ принадлежит промежутку от А до Z, то к считанной букве прибавляем 1".
В твоем случае это выглядит так. Ты считываешь первый символ. Потом открываешь цикл от 1 до 26, и проверяешь массив свой, ищешь совпадение с буквой которую считала. Например это произошло на 13 символе. Тогда ты берешь и записываешь во второй массив под 13 номер +1.=)) Понятно?
Обучение программированию
|
|
| |
nut | Дата: Понедельник, 2013-02-11, 2:03 AM | Сообщение # 397 |
Доцент
Группа: Проверенные
Сообщений: 663
Репутация: 82
Замечания: 0%
Статус: Offline
| KaDeaT, да, ты написал и сразу поняла) ну я и тугодууууууууууууууууум
ЕГЭ2013: РМФ:272 РМИ:281 Дневник:/forum/72-37475-1 МФТИ ФИВТ, 1 курс
Сообщение отредактировал nut - Понедельник, 2013-02-11, 2:03 AM |
|
| |
KaDeaT | Дата: Понедельник, 2013-02-11, 2:04 AM | Сообщение # 398 |
Нобелевский лауреат
Группа: Проверенные
Сообщений: 11169
Репутация: 1446
Замечания: 0%
Статус: Offline
| Цитата (nut) если число принадлежит промежутку между КОДОМ А и КОДОМ Z ты снова думаешь как человек. Это неправильно. Программируя думай как компьютер.=)
Обучение программированию
|
|
| |
KaDeaT | Дата: Понедельник, 2013-02-11, 2:06 AM | Сообщение # 399 |
Нобелевский лауреат
Группа: Проверенные
Сообщений: 11169
Репутация: 1446
Замечания: 0%
Статус: Offline
| Цитата (nut) тугодууууууууууууууууум когда я был только учился программировать, я вообще не понимал нафига циклы нужны? Мне казалось с помощью них только и можно, что выводить цифры от 1 до 10. =DD
Обучение программированию
|
|
| |
nut | Дата: Понедельник, 2013-02-11, 2:17 AM | Сообщение # 400 |
Доцент
Группа: Проверенные
Сообщений: 663
Репутация: 82
Замечания: 0%
Статус: Offline
| Я не могу даже сформулировать то, чего я не понимаю...!!!!
Допустим есть простая последовательность: abcdefa должен вывести: a 2
Получилась такая хренотень: for i:=0 to 26 do {Цикл от 0 до 9 для обнуления массива} a[i]:=0;
read(ch); while ch<> '.' do begin a[ch]:= {тут по идее мы должны к "НОМЕРУ" считанной буквы прибавить единицу}
НО МЫ ЧИТАЕМ БУКВУ. А прибавлять единичку должны к a[5] или к a[22] a[1]:=a[1]+1
Ох уж эти массивы...((
Добавлено (2013-02-11, 2:17 AM) --------------------------------------------- Цитата (nut) ты снова думаешь как человек. Это неправильно. Программируя думай как компьютер.=) в этом вся сложность. Я понимаю, что нужно делать, но не могу перевести это на язык железяк
ЕГЭ2013: РМФ:272 РМИ:281 Дневник:/forum/72-37475-1 МФТИ ФИВТ, 1 курс
Сообщение отредактировал nut - Понедельник, 2013-02-11, 2:19 AM |
|
| |
KaDeaT | Дата: Понедельник, 2013-02-11, 2:19 AM | Сообщение # 401 |
Нобелевский лауреат
Группа: Проверенные
Сообщений: 11169
Репутация: 1446
Замечания: 0%
Статус: Offline
| не понимать и разбираться это нормально, когда учишься. =))) Цитата (nut) Допустим есть простая последовательность: abcdefa должен вывести: a 2 это вся задача.
А мы сейчас рассматриваем её составляющую часть.
Ты вспомни как ты писала сама сначала читаем в цикле посимвольно строку.Т.е. считали один символ. потом в еще одном цикле нашли его номер, и только потом прибавили. Потом читаем уже следующий символ.
Обучение программированию
|
|
| |
KaDeaT | Дата: Понедельник, 2013-02-11, 2:22 AM | Сообщение # 402 |
Нобелевский лауреат
Группа: Проверенные
Сообщений: 11169
Репутация: 1446
Замечания: 0%
Статус: Offline
| упрощай. Любое действие которое ты не можешь сходу придумать как это делать на компе, нужно упрощать и разбивать на мелкие задачи. =)
Обучение программированию
|
|
| |
KaDeaT | Дата: Понедельник, 2013-02-11, 2:23 AM | Сообщение # 403 |
Нобелевский лауреат
Группа: Проверенные
Сообщений: 11169
Репутация: 1446
Замечания: 0%
Статус: Offline
| есть несколько способов работать с массивами и такими задачами. Снаружи внутрь и изнутри наружу. =)) Мы сейчас пытаемся пойти по первому пути.
Обучение программированию
|
|
| |
KaDeaT | Дата: Понедельник, 2013-02-11, 2:25 AM | Сообщение # 404 |
Нобелевский лауреат
Группа: Проверенные
Сообщений: 11169
Репутация: 1446
Замечания: 0%
Статус: Offline
| Давай вот так сделаем. Напиши программу, которая считывает строку посимвольно и выводит каждый символ на экран. =))
Обучение программированию
|
|
| |
nut | Дата: Понедельник, 2013-02-11, 2:34 AM | Сообщение # 405 |
Доцент
Группа: Проверенные
Сообщений: 663
Репутация: 82
Замечания: 0%
Статус: Offline
| Я уже ничего не понимаю...У нас два массива. Вот это первый: 1 2 3 4 5 6 ..........26 a b c d e f ..........z
for i:=0 to 26 do { обнулили массив} a[i]:=0;
т.е. получили вот это:
1 2 3 4 5 6 ..........26 0 0 0 0 0 0 0
Как теперь заполнить этот массив, как получить вот это:
1 2 3 4 5 6 ..........26 a b c d e f ..........zДобавлено (2013-02-11, 2:34 AM) ---------------------------------------------
Цитата (KaDeaT) Давай вот так сделаем. Напиши программу, которая считывает строку посимвольно и выводит каждый символ на экран. сейчас попробую...
ЕГЭ2013: РМФ:272 РМИ:281 Дневник:/forum/72-37475-1 МФТИ ФИВТ, 1 курс
|
|
| |
|
|
|