Автор |
Сообщение |
Beatrice
Репутация: 0
Возраст: 19
Гороскоп:
Пол:
Откуда: Орехово-Зуево
Сообщения: 59
Стаж: 1 год 10 месяцев
|
[] 18.03.2007 23:57 Kabal, Snoop, Sovie, xpol!!!Посмотрите! |
|
|
Kabal, Snoop, Sovie, xpol (вроде никого не забыла:) )!
Спасибо вам за ваши варианты, я их все разобрала, попробовала!
Но теперь посмотрите, что СДЕЛАЛА Я. Мне кажется, вот такой вот вариант попроще, подходит под уровень первака и вроде как все верно. Во всяком случае, Преподша все приняла!
Оцените!
Код: #include <stdio.h>
#include <string.h>
void main ()
{
unsigned int i=0;
char stroka[1023]="";
puts ("Vvedite stroky \n");
gets(stroka);
for (i=0;i<strlen(stroka); i++)
{
if(stroka[i]=='+') for (i++; i<strlen(stroka); i++)
stroka[i]='*';
}
puts(stroka);
}
хмммм....все оч оч оч просто..странно почему у меня сразу не получалось, вроде бы пробовала по такой же логике!
вот за это не люблю программирование, какая-нить мелкая деталька, как казалось бы, не существенный моментик может все испортить....И НИЧЕГО НЕ ПОЛУЧИТСЯ!
(еще удивительнее..почему не знала правильного решения сама преподша...)
СПАСИБО ВАМ, ребята!
_________________ _____Люди часто одиноки, потому что они строят стены вместо мостов_____
|
|
Вернуться к началу |
|
|
Snoop
Репутация: +2
Возраст: 20
Гороскоп:
Пол:
Откуда: Санкт-Петербург
Сообщения: 1123
Стаж: 3 года 10 месяцев
|
[] 19.03.2007 0:12 |
|
|
Beatrice
а нафига, если ты уже нашла символ и всё позаменяла дальше бегать по буковкам? ретурн что ли поставь
_________________ Может показаться, что я ничего не делаю, но на клеточном уровне я очень занят!
|
|
Вернуться к началу |
|
|
Sovie
Репутация: +20/–1
Пол:
Откуда: Санкт-Петербург
Сообщения: 787
Стаж: 2 года 7 месяцев
|
|
Вернуться к началу |
|
|
Kabal
Инноватор-самоучка
Репутация: +19/–1
Возраст: 26
Гороскоп:
Пол:
Откуда: Санкт-Петербург
Сообщения: 3247
Стаж: 2 года 9 месяцев
|
[] 19.03.2007 9:21 |
|
|
Beatrice
Эт прально . Главное, что сама . А уж оптимизация кода и красота программирования - это все в будущем. Успехов.
_________________
|
|
Вернуться к началу |
|
|
xpol
Репутация: 0
Возраст: 20
Гороскоп:
Пол:
Сообщения: 20
Стаж: 1 год 7 месяцев
|
[] 19.03.2007 20:20 |
|
|
Я бы написал так, а то как-то неэстетично :) :
Код:
...
for (i=0;i<strlen(stroka); i++)
{
if(stroka[i]=='+')
for (i++; i<strlen(stroka); stroka[i++]='*');
/*
ну или так попонятнее:
for (i++; i<strlen(stroka); i++) stroka[i]='*';
вообщем смысл думаю понятен :)
*/
}
...
Beatrice-молодец, все клево, и написано просто супер, прада до моего варианта, как мне кажется недотягивает, но все равно - твой мне очень нравится.
Snoop, -1 :)) шутка. Где там "бег по буковкам" ? К концу цикла замены символов строки на '*' индекс i уже не будет удовлетворять условию "главного" цикла, у них условия одинаковые и индекс один. Лично мне это очень нравится. Все норм, только можно ли избежать
излишней проверки условия главного цикла? Ведь после окончания цикла, которое возникает при неудовлетворению условию i<strlen(stroka), индекс i увеличивается на 1, а потом снова проверяется это же условие!! Нерационально, но наглядно, и программа у нас понятна, и у нас большой простор для повторного использования кода, так как изменения в программе это больше правило, чем исключение. Программа в любом случае, как мне кажется, будет уступать предложенному мной варианту с strchr. Но тем не менее можно поломать голову и что-нибудь придумать :).
Итак, поехали:
Предложенный вариант от Beatrice очень хорош. Мне лично нравится. Достоинства - прост, понятен, довольно интересен, хорошие возможности для повторного использования.
Недостатком является упоминавшаяся выше избыточная проверка.
Как избежать? Единственным вариантом мне видится прекращение работы участка кода при нахождении знака '+', т.е. при его нахождении мы не будем возвращаться в главный цикл, где нас ждет страшная повторная проверка! Сделаем упоминавшийся Snoop'ом return, но в несколько ином виде, как мне кажется молодой человек несколько иное имел ввиду :). Пошлем на ретарн строку на вывод. Что-то вроде этого мы сможем использовать при реализации в виде функции. Сделаем так: return(puts(stroka));
Что, компилятор ругается и брызжет слюной??? Тогда измените тип возвращаемого значения функции main: стоял void, поменяем на int!!
И вуаля!!! Все прекрасно работает. Фишка в том что у puts возвращаемое значение int.
Плюс - мы поломали голову, нашли интересное решение, у нас так же неплохие возможности для повторного использования кода, при переходе к процедурному программированию возвращаемое значение можем менять как угодно(нам ведь вовсе необязательно выводить на экран строку функцией) - все очень хорошо.
Вот конечный вариант:
Код:
#include <stdio.h>
#include <string.h>
int main ()
{
unsigned int i=0;
char stroka[1023]="";
puts ("Vvedite stroky");
gets(stroka);
for (i=0;i<strlen(stroka); i++) {
if(stroka[i]=='+') {
for (i++; i<strlen(stroka); stroka[i++]='*');
return(puts(stroka));
}
}
}
Программа получилась яркой, интересной(впринципе она такой и была - Beatrice - молодец!), думаю по производительности не будет уступать варианту с strchr, но тем не менее вариант с strchr нам дает новые возможности, неуступая в производительности. Но мы поломали голову и это главное. Хочется отметить, что при переходе к iostream и динамическому выделению памяти мы сможем совсем отказаться от string.h(strlen заменить на sizeof - что даст нам заметный выигрыш в производительности), используя всего одну библиотеку, но это уже другая история :) !
Beatrice - молодец, пиши еще! :)
_________________ MESS WITH THE BEST -
DIE LIKE THE REST
|
|
Вернуться к началу |
|
|
Snoop
Репутация: +2
Возраст: 20
Гороскоп:
Пол:
Откуда: Санкт-Петербург
Сообщения: 1123
Стаж: 3 года 10 месяцев
|
[] 19.03.2007 20:33 |
|
|
xpol
ты прав, а я изгой
_________________ Может показаться, что я ничего не делаю, но на клеточном уровне я очень занят!
|
|
Вернуться к началу |
|
|
Kabal
Инноватор-самоучка
Репутация: +19/–1
Возраст: 26
Гороскоп:
Пол:
Откуда: Санкт-Петербург
Сообщения: 3247
Стаж: 2 года 9 месяцев
|
[] 19.03.2007 22:43 |
|
|
xpol
Прекрати выпендриваться. Если хочешь соревноваться в соответствующих ускорениях проги и заниманием памяти - иди на соответствующие форумы и там показывай крутость. А тут - чем проще тем лучше, человек хорошо начал, сам разобрался.
_________________
|
|
Вернуться к началу |
|
|
Sovie
Репутация: +20/–1
Пол:
Откуда: Санкт-Петербург
Сообщения: 787
Стаж: 2 года 7 месяцев
|
[] 19.03.2007 22:53 |
|
|
В одном Kabal точно прав, решать нужно ту задачу, которая дана.
ЗДЕСЬ НУ НИКАКИМ БОКОМ НЕ НУЖНА ОПТИМИЗАЦИЯ. ХВАТИТ.
Кстати, к слову, чтобы Вы, любезный xpol, не думали, что я зря нагоняю волны, добавлю: попробуйте попраграммировать на SystemC в условиях действительно ограниченных ресурсов. Или попробуйте VHDL. Этим, собственно, и "промышляет" Kabal. Вот тут нужна экономия, аккуратность и даже маниакальная осторожность. А в простой лабе первокурсника она не нужна.
Блин. Что-то я в чувствах весь. Старый стал, старый...
|
|
Вернуться к началу |
|
|
Beatrice
Репутация: 0
Возраст: 19
Гороскоп:
Пол:
Откуда: Орехово-Зуево
Сообщения: 59
Стаж: 1 год 10 месяцев
|
[] 19.03.2007 23:30 |
|
|
Спасибки вам! буду стараться, совершенствоваться, оптимизироваться )))))) .....учиться)))
_________________ _____Люди часто одиноки, потому что они строят стены вместо мостов_____
|
|
Вернуться к началу |
|
|
Snoop
Репутация: +2
Возраст: 20
Гороскоп:
Пол:
Откуда: Санкт-Петербург
Сообщения: 1123
Стаж: 3 года 10 месяцев
|
[] 19.03.2007 23:50 |
|
|
Beatrice
лучше иди пивка попей, учиться тоже надо в меру)
_________________ Может показаться, что я ничего не делаю, но на клеточном уровне я очень занят!
|
|
Вернуться к началу |
|
|
xpol
Репутация: 0
Возраст: 20
Гороскоп:
Пол:
Сообщения: 20
Стаж: 1 год 7 месяцев
|
[] 20.03.2007 9:20 |
|
|
Мне прямо скажем не понятен ваш негатив.
1. В каком месте я выпендриваюсь?
2. Оптимизация нужна везде.
3. То что я написал поможет ей в понимании некоторых основ языка, его возможностей, элементов стиля.
4. Писал я в том числе и для себя.
5. Что хочу - то и пишу.
6. Говорю тогда, когда считаю нужным и соответствующие вещи.
7. Мне про оптимизацию и принципы построения алгоритмов говорили достаточно поздно и вскользь. Поэтому опять же считаю что человек хотя бы должен слышать о них.
8. Что, своими постами я задел чьё-то самолюбие??
9. Кабал, я писал что мне понравился вариант девушки.
10.Девушка поломала голову - я поломал голову - девушка поломала голову над моим вариантом - ВСЁ ПРОСТО ПРЕКРАСНО!!! В чем недовольство? Вам не нравится что я потрудился больше вашего и запостил свои мысли и труды??
11. Уважаемый Sovie, если бы в простой лабе первокурсника не нужны была оптимизация, то учителя не отправляли бы по 10 раз переделывать готовые работающие лабы, хотя так делают все кроме кабала. Но тут я думаю мы говорим о разных уровнях оптимизации. Но тем не менее. Вот я был бы просто счаслив, если бы мне кто-нить написал интересный ход решения какой-нить задачи и во времена первокрсника и сейчас.
Чем проще тем лучше? - Все верно, в результате так и получилось.
Кстати я бы добавил в коде еще одну строчку:
Код:
#include <stdio.h>
#include <string.h>
int main ()
{
unsigned int i = 0;
char stroka[1023] = "";
puts ("Vvedite stroky");
gets(stroka);
for (i = 0; i < strlen(stroka); i++) {
if(stroka[i] == '+') {
for (i++; i < strlen(stroka); stroka[i++] = '*');
return(puts(stroka));
}
}
return(puts(stroka)); // - Добавлено здесь
}
Вот теперь все норм :)
_________________ MESS WITH THE BEST -
DIE LIKE THE REST
|
|
Вернуться к началу |
|
|
SatinS
Репутация: +6/–2
Возраст: 20
Гороскоп:
Пол:
Откуда: Череповец
Сообщения: 1927
Стаж: 1 год 11 месяцев
|
|
Вернуться к началу |
|
|
Kabal
Инноватор-самоучка
Репутация: +19/–1
Возраст: 26
Гороскоп:
Пол:
Откуда: Санкт-Петербург
Сообщения: 3247
Стаж: 2 года 9 месяцев
|
[] 20.03.2007 13:20 |
|
|
xpol писал(а): 1. В каком месте я выпендриваюсь?
В каждом посте.
xpol писал(а): 2. Оптимизация нужна везде.
Нет. Сходи опять же на тематические форумы.
xpol писал(а): 3. То что я написал поможет ей в понимании некоторых основ языка, его возможностей, элементов стиля.
А годовалому ребенку например вместе с азбукой еще давать правила типа "Жи,Ши, пиши с буквы и" и желательно интегралы
xpol писал(а): 4. Писал я в том числе и для себя.
Для себя и пиши, если спустится с небес на землю для тебя сложно.
xpol писал(а): 5. Что хочу - то и пишу.
6. Говорю тогда, когда считаю нужным и соответствующие вещи.
Тогда не удивляйся, что это вызывает негативную реакцию на форуме.
xpol писал(а): 7. Мне про оптимизацию и принципы построения алгоритмов говорили достаточно поздно и вскользь. Поэтому опять же считаю что человек хотя бы должен слышать о них.
См. пункт про годовалого ребенка.
xpol писал(а): 8. Что, своими постами я задел чьё-то самолюбие??
Нет, просто показал свою самовлюбленность.
xpol писал(а): 9. Кабал, я писал что мне понравился вариант девушки.
xpol писал(а): Beatrice-молодец, все клево, и написано просто супер, прада до моего варианта, как мне кажется недотягивает, но все равно - твой мне очень нравится.
Это заодно и про самовлюбленность.
xpol писал(а): 10.Девушка поломала голову - я поломал голову - девушка поломала голову над моим вариантом - ВСЁ ПРОСТО ПРЕКРАСНО!!! В чем недовольство? Вам не нравится что я потрудился больше вашего и запостил свои мысли и труды??
Перечитай заного то что написал Совие.
xpol писал(а): 11. Уважаемый Sovie, если бы в простой лабе первокурсника не нужны была оптимизация, то учителя не отправляли бы по 10 раз переделывать готовые работающие лабы, хотя так делают все кроме кабала.
Считаю это правильным. Не все отправляют, процентов 70% не отправляют.
xpol писал(а): я был бы просто счаслив, если бы мне кто-нить написал интересный ход решения какой-нить задачи и во времена первокрсника и сейчас.
Будешь преподавателем - будешь просто счастлив Тока боюсь именно и будешь отправлять по 10 раз с формулировкой - что-то вы без указателей сделали ... не нравится мне. Ну и что, что вам не читали, почитаете.
_________________
|
|
Вернуться к началу |
|
|
SatinS
Репутация: +6/–2
Возраст: 20
Гороскоп:
Пол:
Откуда: Череповец
Сообщения: 1927
Стаж: 1 год 11 месяцев
|
[] 20.03.2007 17:13 |
|
|
xpol писал(а):
4. Писал я в том числе и для себя.
5. Что хочу - то и пишу.
6. Говорю тогда, когда считаю нужным и соответствующие вещи.
Norsk?
Народ не спорьте, всё равно я круче
|
|
Вернуться к началу |
|
|
Tiffany
Клёвая девчонка
Репутация: +14
Возраст: 20
Гороскоп:
Пол:
Откуда: Санкт-Петербург
Сообщения: 2745
Стаж: 4 года 2 месяца
|
[] 20.03.2007 17:57 |
|
|
! | Tiffany @ 20.03.2007 17:57: | На личности не переходим! |
_________________ Луна, я вижу лишь тебя. Но ты видишь несоизмеримо больше.
Ответь мне, Луна, смотрит ли та, чьё имя я берегу, вечерами вверх, на небо.
Или, быть может, мысли её столь высоки, что нет нужды поднимать взгляда? (с) А. Чёрный
|
|
Вернуться к началу |
|
|
|
|