Дневник nut. - Страница 27 - ФОРУМ ПОСТУПИМ.РУ
Главная
Поиск репетитора
Коллективный блог
публикаций
Форум (обсуждаем ЕГЭ 2020)
тем и сообщений
Для учебы




Войти
или
Зарегистрироваться
Новые сообщения · Участники · Правила форума · Поиск по форуму · RSS
Архив - только для чтения
ФОРУМ ПОСТУПИМ.РУ » АРХИВ (ТОЛЬКО ДЛЯ ЧТЕНИЯ) » ОБЩИЕ ВОПРОСЫ ЕГЭ 2014 » Дневник nut. (Как выучить информатику за 5 месяцев и не забыть физику)))
Дневник nut.
KaDeaTДата: Понедельник, 2013-02-11, 1:32 AM | Сообщение # 391
Нобелевский лауреат
Группа: Проверенные
Сообщений: 11169
Репутация: 1446
Награды: 136
Замечания: 0%
Статус: Offline
Цитата (nut)
Если он равен второй букве

как найти какой букве он равен? =))) Кодом пожалуйста. =)
пускай мы считали первую букву из строчки в переменную s. как теперь узнать что это и за буква и в куда надо сделать +1. =))


Обучение программированию
 
KaDeaTДата: Понедельник, 2013-02-11, 1:39 AM | Сообщение # 392
Нобелевский лауреат
Группа: Проверенные
Сообщений: 11169
Репутация: 1446
Награды: 136
Замечания: 0%
Статус: Offline
Вот тут-то и вылазит недостаток первого метода хранения данных. Тебе сначала нужно будет циклом пробежать по 1 массиву, и узнать номер его, и потом по этому номеру уже записывать во второй массив.

А теперь фанфары и барабанная дробь на сцене появляется таблица ASCII. В паскале есть функция ord(). Если мы ей передадим наш символ s то она вернет нам его номер в таблице. т.е.
s:='a';
write(ord(s));

выведет нам 97. =))) Ты понимаешь какие открываются горизонты сразу для тебя? =)))

Есть кстати и обратная функция chr() вроде. Посмотри в справке. =)


Обучение программированию
 
nutДата: Понедельник, 2013-02-11, 1:44 AM | Сообщение # 393
Доцент
Группа: Проверенные
Сообщений: 663
Репутация: 82
Награды: 18
Замечания: 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
Награды: 136
Замечания: 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
Награды: 18
Замечания: 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
Награды: 136
Замечания: 0%
Статус: Offline
Цитата (nut)
"Если считанный символ принадлежит промежутку от А до Z, то к считанной букве прибавляем 1".


В твоем случае это выглядит так. Ты считываешь первый символ. Потом открываешь цикл от 1 до 26, и проверяешь массив свой, ищешь совпадение с буквой которую считала. Например это произошло на 13 символе. Тогда ты берешь и записываешь во второй массив под 13 номер +1.=)) Понятно?


Обучение программированию
 
nutДата: Понедельник, 2013-02-11, 2:03 AM | Сообщение # 397
Доцент
Группа: Проверенные
Сообщений: 663
Репутация: 82
Награды: 18
Замечания: 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
Награды: 136
Замечания: 0%
Статус: Offline
Цитата (nut)
если число принадлежит промежутку между КОДОМ А и КОДОМ Z

ты снова думаешь как человек. Это неправильно. Программируя думай как компьютер.=)


Обучение программированию
 
KaDeaTДата: Понедельник, 2013-02-11, 2:06 AM | Сообщение # 399
Нобелевский лауреат
Группа: Проверенные
Сообщений: 11169
Репутация: 1446
Награды: 136
Замечания: 0%
Статус: Offline
Цитата (nut)
тугодууууууууууууууууум

когда я был только учился программировать, я вообще не понимал нафига циклы нужны? Мне казалось с помощью них только и можно, что выводить цифры от 1 до 10. =DD


Обучение программированию
 
nutДата: Понедельник, 2013-02-11, 2:17 AM | Сообщение # 400
Доцент
Группа: Проверенные
Сообщений: 663
Репутация: 82
Награды: 18
Замечания: 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)
ты снова думаешь как человек. Это неправильно. Программируя думай как компьютер.=)
в этом вся сложность. Я понимаю, что нужно делать, но не могу перевести это на язык железяк sad


ЕГЭ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
Награды: 136
Замечания: 0%
Статус: Offline
не понимать и разбираться это нормально, когда учишься. =)))
Цитата (nut)
Допустим есть простая последовательность:
abcdefa
должен вывести: a 2

это вся задача.

А мы сейчас рассматриваем её составляющую часть.

Ты вспомни как ты писала сама сначала читаем в цикле посимвольно строку.Т.е. считали один символ. потом в еще одном цикле нашли его номер, и только потом прибавили. Потом читаем уже следующий символ.


Обучение программированию
 
KaDeaTДата: Понедельник, 2013-02-11, 2:22 AM | Сообщение # 402
Нобелевский лауреат
Группа: Проверенные
Сообщений: 11169
Репутация: 1446
Награды: 136
Замечания: 0%
Статус: Offline
упрощай. Любое действие которое ты не можешь сходу придумать как это делать на компе, нужно упрощать и разбивать на мелкие задачи. =)

Обучение программированию
 
KaDeaTДата: Понедельник, 2013-02-11, 2:23 AM | Сообщение # 403
Нобелевский лауреат
Группа: Проверенные
Сообщений: 11169
Репутация: 1446
Награды: 136
Замечания: 0%
Статус: Offline
есть несколько способов работать с массивами и такими задачами. Снаружи внутрь и изнутри наружу. =))
Мы сейчас пытаемся пойти по первому пути.


Обучение программированию
 
KaDeaTДата: Понедельник, 2013-02-11, 2:25 AM | Сообщение # 404
Нобелевский лауреат
Группа: Проверенные
Сообщений: 11169
Репутация: 1446
Награды: 136
Замечания: 0%
Статус: Offline
Давай вот так сделаем. Напиши программу, которая считывает строку посимвольно и выводит каждый символ на экран. =))

Обучение программированию
 
nutДата: Понедельник, 2013-02-11, 2:34 AM | Сообщение # 405
Доцент
Группа: Проверенные
Сообщений: 663
Репутация: 82
Награды: 18
Замечания: 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 курс
 
ФОРУМ ПОСТУПИМ.РУ » АРХИВ (ТОЛЬКО ДЛЯ ЧТЕНИЯ) » ОБЩИЕ ВОПРОСЫ ЕГЭ 2014 » Дневник nut. (Как выучить информатику за 5 месяцев и не забыть физику)))
Поиск:








© 2006 - 2023 Поступим.ру Информация:
О проекте
Контакты

Регистрация на сайте
Статистика сообщества
Пользовательское соглашение
Разделы:
Поиск репетитора
Форум сообщества
Коллективный блог
Материалы для учебы
ЕГЭ 2021
RSS:
RSS форума
RSS блога