Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Для новичков > Си строки |
Автор: Bartman2D 10.10.2010, 14:13 | ||
Помогите пожалуйста написать программу. Суть программы заключается в том, что: "Даны два предложения. Для каждого слова первого предложения определить, входит ли оно во второе предложение." Уже несколько дней делаю ничего не выходит.
что-то такое нарисовалось, дальше додумать не могу. Может быть предложите альтернативный вариант решения? |
Автор: Crafty 10.10.2010, 15:12 | ||
Добавлено через 38 секунд Спрашивайте если что-то непонятно. |
Автор: Bartman2D 10.10.2010, 15:21 |
УУУУУ Для меня это темный лес что вы написали, я только новичек. мы программируем, на с++, а там вроде из с элементов много. ну и практически все операторы я не знаю) да и библиотеки такие впервые вижу, синтаксис для меня другой. я ничего не понял и этот код на данный момент изучения мне не возможно объяснить. но спасибо, что откликнулись. мне надо это реализовать с помощью библиотек #include <stdio.h> #include <math.h> #include <string.h> Мы только операторы этих библиотек прошли ну и ещё нескольких. |
Автор: vnf 10.10.2010, 15:29 |
Bartman2D, ваш код написан на чистом С, код Crafty - чистый С++ с STL. Вам как надо? |
Автор: Bartman2D 10.10.2010, 15:33 | ||
О_о я нуб. нам сказали, что изучаем чистый С++. Вот и пишу в таком стиле, как учат. Что за библиотека <vector> я не знаю. using std::vector; using std::string; using std::cout; using std::endl; и вот такие конструкции я впервые вижу, мы их никогда не использовали. |
Автор: Crafty 10.10.2010, 15:47 | ||
Вот на С
|
Автор: Bartman2D 10.10.2010, 16:31 |
Это попонятней. Спасибо, но есть вопрос. strstr strtok - что это за функции? но и как вижу в вашем примере строки уже даны( это конесно легко), но мне нужно, чтобы строки вводил пользователь. |
Автор: Bartman2D 10.10.2010, 16:48 | ||||
спасибо, полезные функции. ) |
Автор: bsa 10.10.2010, 23:50 | ||
Bartman2D, своему преподу ты скажи, что тебя с твоим "С++" тебя на форуме послали. И сказали что это "С". А С++ это совершенно другой язык! Добавлено через 28 секунд
|
Автор: fuckingniger 11.10.2010, 04:23 |
не думаю что им можно использовать готовые функции) надо самому написать их) Добавлено через 7 минут и 53 секунды если не додуматься самому то вводишь в гугле алгоритм поиска слова в тексте |
Автор: Logree 11.10.2010, 05:35 |
Они изучаю язык Си ну или как там говорит его преподаватель "чистый C++", данные функции часть стандартной библиотеки языка(входят в него), а значит являются объектом изучения => использовать данные функции - нужно. А построение "таких" алгоритмов проходят на паскале. |
Автор: bsa 11.10.2010, 09:49 | ||
Нужно, но только на курсе языка Си. Уже миллион раз был холивар на тему С++ против Си... ЭТО РАЗНЫЕ ЯЗЫКИ И ВМЕСТЕ ИХ УЧИТЬ НЕЛЬЗЯ!!! Если ты не знаешь ни одного из них, а выучить хочешь оба, то сначала нужно выучить С++, а потом уже доучить Си. Наоборот выйдет дольше и корявее. |
Автор: djamshud 11.10.2010, 10:46 |
>сначала нужно выучить С++, а потом уже доучить Си. Наоборот выйдет дольше и корявее. Все с точностью до наоборот. Препод правильно делает, что сначала учит их си. От простого к сложному. Bartman2D, если от вас требуется понять алгоритмот А до Я, почитайте про strtok и strstr и напишите свои аналоги. |
Автор: bsa 11.10.2010, 12:35 |
djamshud, имхо, программировать нужно учиться на языке типа паскаля (или бейсика), чтобы ничего не отвлекало. Программу написать на С++ проще, чем на С. Но выучить второй проще. Зато С++ очень сложно учить после С, так как постоянно пытаешься использовать приемы из С, что сильно усложняет процесс обучения. |
Автор: mes 11.10.2010, 13:11 |
и если продолжать программировать си-приемами на С++, то так и не сможешь использовать силу C++, а в душе будет расти негодование типа "ООП must die" ![]() надеюсь никто не обидится ![]() |
Автор: djamshud 11.10.2010, 13:24 |
bsa, имхо си можно отнести в категорию паскаля в смысле простоты первоначального изучения языка и дальнейшей прокачки алгоритмических навыков. >Программу написать на С++ проще, чем на С. Большую и жирную - да. Маленькую, да еще и в академических целях - нет. В этом топике два примера реализации - лаконичный, элегантный и, что в процессе обучения очень важно, очевидный на си и синтаксически тяжелый на плюсах. >Зато С++ очень сложно учить после С, так как постоянно пытаешься использовать приемы из С, что сильно усложняет процесс обучения. Это можно сказать о любой паре не почти одинаковых языков. После изучения своего первого языка, дальнейшие стоит осваивать начиная с парадигм, в них заложеных - в таком случае проблемы минимизируются. Если подходить "в лоб", то при изучении в порядке C++ -> C то же самое на С будут использовать приемы из С++. Добавлено через 3 минуты и 24 секунды mes, я отлично знаю С++ и достаточно хорошо ОО-проектирование в целом. И использую плюшки по назначению, а не абы как:). /me не обиделся. |
Автор: mes 11.10.2010, 14:31 | ||||
имхо, объективно это далеко не то же самое ![]()
я не упрекал Вас в незнании, а наоборот остерегался, что воспримете на свой счет.. но Ваша "цитата" уж больно подходила для данного случая ![]() |
Автор: djamshud 11.10.2010, 14:50 |
mes, под "то же самое" я имел в виду, что человек все равно наступит на грабли, пусть и на другие. Языки изучать с умом надо, вот и все. |
Автор: Bartman2D 11.10.2010, 15:28 | ||
Да ладно вам холивары устраивать. Все сделал, сдал. Тема закрыта, код вот:
|
Автор: xvr 11.10.2010, 17:09 |
Да уж. То, что сдал, несмотря на одну грубую ошибку и еще одну тонко спрятанную, наводит на отдельные мысли о качестве обучения ![]() |
Автор: toxx 11.10.2010, 17:12 | ||
xvr,
эта? или где? =) п.с. чисто для себя искал |
Автор: bsa 11.10.2010, 17:16 |
Удивительно, что компилятор предупреждение не кинул... Цикл же никогда даже один раз не выполнится!!! Я уж не говорю про последовательное использование strtok... Такое ощущение, что при проверке даже не запускали... |
Автор: toxx 11.10.2010, 17:24 |
мде, вот и написал...сдал и забыл образование на высоте =) |
Автор: xvr 11.10.2010, 19:56 | ||||
Пардон, 3 ошибки ![]() Эта, плюс лишний strtok в строке 25, плюс поиск по strstr - он не различает границы слов. Т.е. слово abr будет найдено в строке abrakadabra, а не должно ![]() Добавлено через 1 минуту и 30 секунд Да, и еще ошибка в while (даже если заменить = на ==). Там должно быть != Так что 4 ошибки |
Автор: ncr 11.10.2010, 21:34 |
В копилку: если пользователь введёт больше ста символов - будет "ой". Ну и использование SetConsoleCP / SetConsoleOutputCP для вывода русского текста - моветон, равно как и "магическое число" 1251 в качестве аргумента. |
Автор: xvr 11.10.2010, 21:41 |
Можно организовывать конкурс - кто найдет больше ошибок ![]() |
Автор: Bartman2D 1.11.2010, 18:14 |
Да, начал перебирать заново прогу, передалал кучу всего. Хватит меня тут материть, я к тому времени Си изучал 2недели. И "!" Случайно упущен, при сдаче он был, да и strstr я замеенил на strcmp, если возвращает 0 то вывести слово на экран. |