За последние 24 часа нас посетили 56846 программистов и 1750 роботов. Сейчас ищут 799 программистов ...

Не срабатывает цикл

Тема в разделе "PHP для новичков", создана пользователем Olga_iit, 9 дек 2012.

  1. Olga_iit

    Olga_iit Активный пользователь

    С нами с:
    5 дек 2012
    Сообщения:
    21
    Симпатии:
    0
    Подскажите пожалуйста, по чему не срабатывает цикл: В цикле foreach каждый элемент массива разбивается по буквам, удаляются две последние буквы, массив букв объединяется в строку и, по идее, должен заменять начальный элемент массива слов на себя. Срабатывает все, кроме замены.. Подскажите в чем ошибка...
    foreach($words_words as $item)
    {
    $item=str_split($item);
    array_pop($item);
    unset($item[count($item)-1]);
    $item=join("", $item);
    //$words_words[$item]=$item;
    //print_r($words_words);
    }
     
  2. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    а чего сделать то надо?

    Оль, тут нет телепатов, ты пиши, вот пришел такой-то массив, я его значит перебираю, на выходе мне нужно то то и то то
     
  3. Olga_iit

    Olga_iit Активный пользователь

    С нами с:
    5 дек 2012
    Сообщения:
    21
    Симпатии:
    0
    Код (Text):
    1. foreach($words_words as $item)
    2. {
    3. $item=str_split($item);
    4. array_pop($item);
    5. unset($item[count($item)-1]);
    6. $item=join("", $item);
    7. //$words_words[$item]=$item;
    8. //print_r($words_words);
    9. }
    10. В этом цикле выбираю слова из массива $words_words, делаю из этого слова массив букв, удаляю две последние буквы, из массива букв снова делаю слова и пытаюсь записать в массив слов
    Добавлено спустя 36 секунд:
    Ну я это уже сделала, только вот зря(

    Добавлено спустя 48 секунд:
    Вообще вся эта катавасия для того, чтобы убрать повторяющиеся слова в массиве
     
  4. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Ну почему же я телепат :)

    Код (PHP):
    1. $words_words = array('qazwsx', 'edcrfv');
    2. $data = array();
    3. foreach($words_words as $item)
    4.     $data[] = substr($item,0, -2); 
    5.  
    Проще так...
    Так что надо убрать повторяющиеся слова?

    Добавлено спустя 2 минуты 10 секунд:
    Может тебе array_unique нужен?
     
  5. Olga_iit

    Olga_iit Активный пользователь

    С нами с:
    5 дек 2012
    Сообщения:
    21
    Симпатии:
    0
    Да так действительно проще...Спасибо, только вот как хотела, мне это не поможет. Суть задания в том, чтобы убрать повторяющиеся слова в массиве. Слова "красный" и "красное" считаются одним словом.
     
  6. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Это твой доцент так сказал?
    С точки зрения программирования это разные слова.
    У тебя конкретный набор слов или они могут быть произвольными?
     
  7. Olga_iit

    Olga_iit Активный пользователь

    С нами с:
    5 дек 2012
    Сообщения:
    21
    Симпатии:
    0
    Слова произвольные, они берутся из разных текстовых документов, к которых написаны статьи на различные темы, нужно составить вектор всех слов со всех документов и избавиться от повторов, повторов с точки зрения русского языка....такая вот часть задания.
     
  8. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Помнишь я говорил про черную магию... забудь про нее, тут поможет магический бубен и танцы у костра с прочтением особых магических мантр :)

    Это в институте так мучают?
     
  9. Olga_iit

    Olga_iit Активный пользователь

    С нами с:
    5 дек 2012
    Сообщения:
    21
    Симпатии:
    0
    На третьем курсе специальности, где учат на менеджеров в it-технологиях
     
  10. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    Малачина у вас препод, пожми ему руку от меня, и я думаю плюсанут многие завсегдатаи этого форума
     
  11. Olga_iit

    Olga_iit Активный пользователь

    С нами с:
    5 дек 2012
    Сообщения:
    21
    Симпатии:
    0
    Вы хотите сказать, что такие задачи хорошая подготовка специалистов?
     
  12. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Интересно что будет на 4 курсе...

    Ну а на пример какая статья, что-то интересно стало...
     
  13. Olga_iit

    Olga_iit Активный пользователь

    С нами с:
    5 дек 2012
    Сообщения:
    21
    Симпатии:
    0
    На 4-м курсе будет только менеджмент...по крайней мере так в учебном плане написано

    Ну что-то вроде этого
    ЕЛЯБИНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ – первый классический университет на Южном Урале. Основан в 1976 году (4 октября) на основании Постановления Совета Министров СССР от 3 сентября 1974 года № 690 с целью формирования в Южно-Уральском регионе центра образования, науки и культуры, удовлетворения потребности региона в высококвалифицированных кадрах, имеющих фундаментальную университетскую подготовку.
    Первым ректором университета стал доктор педагогических наук, профессор, Член-корреспондент АПН СССР Семён Егорович Матушкин (руководил вузом с 1976 по 1987 гг.). В 1987 году на посту ректора его сменил доктор физико-математических наук, лауреат государственной премии СССР Валентин Дмитриевич Батухтин (1987-2004). С 2004 г. по настоящее время университетом руководит доктор экономических наук, профессор Андрей Юрьевич Шатин.
    Университет осуществляет уровневую подготовку выпускников по основным образовательным программам высшего профессионального образования: специалитет, бакалавриат, магистратура и послевузовского профессионального образования (аспирантура, докторантура). Реализует довузовскую подготовку, дополнительное образование и повышение квалификации.
    В структуре университета образовательная деятельность ведется на 14 факультетах и в 6 учебно-научных институтах. Реализуется подготовка по 42 основным образовательным программам, 33 программам бакалавриата и по 22 магистерским программам.
    В структуре ФГБОУ ВПО «ЧелГУ» функционирует 3 филиала: два из них в городах Челябинской области: Миассе и Троицке, один за рубежом – в г. Костанай Республики Казахстан.
    При университете действуют 8 диссертационных советов по защите докторских диссертаций.
    Образовательную деятельность в ФГБОУ ВПО «ЧелГУ» осуществляют высококвалифицированные специалисты, 65,6% из которых имеют ученую степень (ученое звание). Кандидаты наук, доценты составляют 51%, доктора наук, профессора – 14%. Численность студентов, обучающихся по всем формам обучения, на сегодняшний день составляет около 24 тысяч человек.
    Из года в год расширяется круг ученых, работающих по грантам Европейской Комиссии «Темпус», Президента РФ, Правительства РФ, а также научных фондов: РФФИ, РГНФ, Министерства образования и науки России, областных целевых программ: государственной поддержки фундаментальных научных исследований и высшего профессионального образования и поддержки научного творчества молодежи в вузах.
    Студенты и аспиранты ЧелГУ ежегодно становятся обладателями стипендий Президента РФ, Правительства РФ, Губернатора Челябинской области, Законодательного собрания Челябинской области, Администрации города Челябинска.
    ФГБОУ ВПО «ЧелГУ» - единственный из вузов России участвовал в разработке Европейского приложения к диплому «Diploma Supplement» и с 2001 г. первым начал их выдачу.
    В настоящий момент в университете в организацию учебного процесса внедряется кредитно-модульная система.
    Основополагающим принципом организации научной деятельности в университете остается сохранение ориентации на развитие фундаментальных исследований в естественнонаучном, гуманитарном и социально-экономическом направлениях, на их сбалансированность с прикладными исследованиями, на поддержку научных школ.
    На математическом факультете преподавательскую и научную деятельность ведет действительный член Российской академии наук А.М. Ильин, возглавляющий школу уральских математиков, исследующих асимптотические методы решения уравнений математической физики. Под его руководством на базе ЧелГУ в течение нескольких лет работает Областной математический семинар, в котором участвуют все ведущие математики Челябинской области.
    Под руководством члена-корреспондента Российской Академии Наук, доктора физико-математических наук, профессора С.В. Матвеева ведется научная деятельность в области топологии многообразий и компьютерной топологии. Кафедрой математического анализа заведует один из самых в настоящее время молодых докторов наук в России, профессор, обладатель многочисленных грантов В.Е. Федоров.
    Всего в Челябинском государственном университете успешно развиваются более тридцати научных школ. Под руководством профессора В.Д. Бучельникова развиваются прикладные и фундаментальные исследования в области физики магнитных явлений. Широко известен в Российской Федерации Межвузовский медико-физический центр Челябинского государственного университета и Челябинской медицинской академии. В центре, под руководством профессора А.В. Лаппы создаются уникальные методики малоинвазивных операций с применением лазеров.
    В 2007 году с целью развития фундаментальных исследований в области физики и химии современных функциональных материалов, выпускаемых промышленностью Урала и разработки современных материалов в ЧелГУ был создан Центр коллективного пользования, оснащенный суперсовременным оборудованием. В частности, многофункциональным рентгеновским дифрактометром D8 ADVANCE, который позволяет изучать структуру вещества на молекулярном уровне.
    Под руководством профессора Е.А. Беленкова ведутся исследования в области компьютерного материаловедения, наноалмазов и родственных углеродных наноматериалов.
    С 1999 года профессор Л.А. Шкатова успешно возглавляет работу вузовской академической лаборатории межкультурных коммуникаций, созданной на основании Договора о научном сотрудничестве между Институтом языкознания РАН и ЧелГУ. В вузе создан Центр исследований конституционно-правовых проблем суверенной демократии, возглавляемый профессором В.А. Лебедевым. Хорошим примером гармоничного сочетания фундаментальных научных исследований с практикой является деятельность кафедр «Микробиология» и «Радиационная биология», под общим руководством декана биологического факультета, профессора А.Л. Бурмистровой.
    Ученые Института психологии и педагогики ведут работу в одном из важнейших на сегодняшний день в педагогической науке направлении: они исследуют проблемы управления системой образования и управления качеством образования.
    Вузовско-академический центр, созданный экономическим факультетом и Институтом экономики Уральского отделения Российской академии наук, выполняет комплекс исследований, включающих разработку методологических рекомендаций по прогнозированию социально-экономического развития малых городов субъектов Федерации (научный руководитель — профессор А.Ю. Даванков), по разработке теоретико-методологических основ развития человеческого капитала (научный руководитель — профессор A.В. Горшков).
    Важным фактором в становлении и развитии университета всегда была деятельность ученых-археологов. В 1987 году ими под руководством профессора Г.Б. Здановича был открыт уникальный протогород «АРКАИМ», возраст которого составляет более 4 тысяч лет.
    С 1992 года ЧелГУ занимается обучением инвалидов с 1992 г. В настоящее время эта работа является одним из приоритетных направлений деятельности, а Челябинский государственный университет является экспериментальной площадкой Министерства образования и науки Челябинской области в сфере образования инвалидов. На сегодняшний день в университете сформирована инновационная система доступности высшего образования для инвалидов. В ней для этих целей предусмотрена особая структура – Региональный центр образования инвалидов (РЦОИ), который не имеет аналогов в российских вузах.
    С 2002 года впервые в России была создана Ассоциации образовательных учреждений и научных организаций «Челябинский университетский образовательный округ». В состав Ассоциации входят образовательные и научные учреждения, заинтересованные в развитии образования в Челябинской области. Главной целью объединения является повышение эффективности и качества образовательного процесса, развития и совершенствования региональной системы образования, объединение усилий в осуществлении принципов непрерывности и доступности образования, развитие методик новых форм и технологий обучения, разработки и внедрения передовых идей, адаптации образовательных учреждений и их выпускников к социальным, экономическим и культурным потребностям общества и изменениям рынка труда.
    Ведётся постоянная работа по установлению двусторонних связей ЧелГУ. В настоящий момент налажены партнерские отношения и ведется сотрудничество с вузами Великобритании, Германии, Голландии, Франции, Китая, Турции, Сирии и др.
    В ЧелГУ обучаются более 500 иностранных студентов.
    Вузом заключены договора и ведется сотрудничество с рядом европейских вузов по программам двойного диплома.
    Ведется обучение в аспирантуре по 49 специальностям.

    Добавлено спустя 58 секунд:
    Только на разные темы
     
  14. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Ректор тебе этого не простит :)

    В таких случаях надо в начале попробовать поискать помощи в виде готового решения...
    Нагуглил это http://sourceforge.net/projects/phpmorphy/?source=dlp
    Там есть русский словарь. Может как то облегчит задачу.

    Ну а так надо подумать, ну и про танцы с бубном не забывай помогает :)
    Посмотри тот скрипт если что пиши интересно стало...
     
  15. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    нет, я хочу сказать, что такая задача дана для того, чтоб молодой it "специалист" (кавычки тут не зря) не смел тыкать в нос прожжжжжжоному программисту, мол вы че там акуели? я такие задачи в универе решала какдвапальцаабассать! Ну вы лошара.....ну вас в жопу, найду молодого и способного на фрилансе.....да, и за 5 копеек....

    вот решишь САМА будешь тыкать, а через 2 года ты будешь никто с красивой бумажкой....

    НЛ (ничего личного)
     
  16. Olga_iit

    Olga_iit Активный пользователь

    С нами с:
    5 дек 2012
    Сообщения:
    21
    Симпатии:
    0
    function getBaseForm($word, $annots) {
    if(false === $annots) {
    return false;
    }

    $annots = $this->decodeAnnot($annots, true);

    return $this->composeBaseForms($word, $annots);
    }
    Вот что-то нашла, только откуда ноги растут у кода не разберешься....

    Добавлено спустя 40 минут 24 секунды:
    Дмитрий, я не могу понять вашего агрессивного настроя, я ничего обидного вам не говорила, и уж тем более не "тыкала" вам "мол я такие задачи" и т.д. Я обратилась на форум за помощью, за советом более опытных в данном языке программирования людей. Чем я могла задеть ваши чувства я не представляю

    Добавлено спустя 8 минут 31 секунду:
    Посмотрела пару скриптов с этого проекта, для меня довольно сложно разобраться...тем более классы слабое место...

    Добавлено спустя 2 минуты 26 секунд:
    Одногруппники делали двумя спосабами: регулярками или similar_text()...Можете подсказать как в similar_text() задать порядок расположения букв?
     
  17. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    similar_text() вычисляет степень похожести слов. вот вы их соберите в массив. пробегитесь по нему, и ищите эту степень похожести. если слова похожи например на 70% то можете считать их одинаковыми и удалять одно из них. и так далее.

    еще почитайте про расстояние Левенштейна. в php есть функция levenshtein() готовая...
     
  18. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Только не все слова будут правильно удаляться в любом случае. Вот сравним два предложения:

    Ленин портфель упал в лужу.
    Ленин - вождь революции.

    И там и там слово "Ленин", только это совсем разные слова :)

    Добавлено спустя 2 минуты 48 секунд:
    И таких примеров можно найти немало в текстах, когда слова пишутся одинаково или очень похоже, автоматикой определятся как однокоренные, но на самом деле значение их вообще никак не связано друг с другом.
     
  19. Olga_iit

    Olga_iit Активный пользователь

    С нами с:
    5 дек 2012
    Сообщения:
    21
    Симпатии:
    0
    Я и ту и ту функции смотрела, но Similar_text() не учитывает порядок букв...т.е. слова "кот", "кто", "ток" - считаются 100% одинаковыми. А с Левенштейном тоже какая-то загвоздка была...уже не вспомню какая точно....Вот что придумала....
    Код (Text):
    1. for($i=0; $i<count($words_words); $i=$i+1)
    2. {
    3.     //$col[$i]=0;
    4.     $item=str_split($words_words[$i]);
    5.     $jyem=str_split($words_words[$i+1]);
    6.     //print_r($jyem);
    7.     $result_array=array_intersect_assoc($item, $jyem);
    8.     if((count($result_array)==count($jyem)-2) ||(count($result_array)==count($item)-2)){ unset($words_words[$i+1]); $col[$i]=1;}
    9.     elseif((count($result_array)==count($jyem)-1) ||(count($result_array)==count($item)-1)){ unset($words_words[$i+1]); $col[$i]=1;}
    10.     elseif((count($result_array)==count($jyem)-3) ||(count($result_array)==count($item)-3)){ unset($words_words[$i+1]); $col[$i]=1;}
    11.     //else $col[$i]=0;
    12.     }
    Вроде как работает)

    Добавлено спустя 6 минут 51 секунду:
    Возникает другая проблема...Только уже в другом цикле
    Код (Text):
    1. for($i=0; $i<count($words_f[0]); $i++)
    2. {
    3.     $words_f[0][$i]=$words_f[0][$i]+$col[0][$i];
    4. }
    5. print_r($words_f);
    Ассоциативный массив $words_f содержит в качестве ключей слова, а в качестве значений - количество повторений слова в первоначальном массиве.. Массив $col содержит в качестве значений 0 или 1. Количество элементов в массиве одинаково, наличие 0 или 1 в массиве $col соответственно для каждого ключа массива $words_f. Но при суммировании элементов получается меньше...Подскажите, пожалуйста, почему?