Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Объясните действия программы 
:(
    Опции темы
Voovan
Дата 27.1.2010, 19:33 (ссылка)    | (голосов:6) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 19.12.2009

Репутация: нет
Всего: -2



Код

#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
    const int size = 255;
    char str[size],
        *maxs = str,
        *mins = str,
        *c = str;
    gets( str );
    char *end = str + strlen( str );

    while( c < end ){
        c = strtok( c, " " );
        int len = strlen( c );
        if ( strlen( maxs ) < len ) maxs = c;
        else if ( strlen( mins ) > len ) mins = c;
        c += len+1;
    }
    printf("\nMaximal length string >  %s", maxs );
    printf("\nMinimal length string >  %s", mins );
    getchar();
    return 0;
}


Сразу оговорюсь, код не мой, хочу попросить у вас разъяснения каждой строчки что и как она делает или для чего нужна?
Заранее спасибо!

PS: код считывает и выводит на экран самое длинное и самое короткое слово введенное пользователем

Это сообщение отредактировал(а) Voovan - 27.1.2010, 19:34
PM MAIL   Вверх
cutwater
Дата 27.1.2010, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 592
Регистрация: 24.6.2008

Репутация: нет
Всего: 10



Разъяснение каждой строчки --  2$ за строчку.

( А ты как думал, ты код не писал, тут еще кто-то будет тебе помогать да еще и бесплатно? )


--------------------
user posted image
PM MAIL   Вверх
serg82
Дата 27.1.2010, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 20.10.2008

Репутация: нет
Всего: нет



Voovan ты хочешь сказать что этот код работает?
PM MAIL   Вверх
world
Дата 27.1.2010, 20:06 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 2.10.2009
Где: Харьков

Репутация: 6
Всего: 12



Voovan, самая плохая работа это разбирать чужой код,при чём написаній не правильно, ну ладно помогу(хотя тема создана не правильно, что название не отражает сути, чтоне в тот раздел отправлена, в "Центр помощи" надо было)

1. Подлючение библиотеки stdio
2. Подлючение библиотеки string
4. Объявление функции читай мой пост в http://forum.vingrad.ru/forum/topic-288999...-вставками.html для подробностей
6. объявление константы размер строки
7 - 10. объявление масива размером 256 для текста, максимальной/минимальной строки начальное значение - начало текста, указатель на обрабатываемое место в строке - начальное значение - начало строки.
11. Считываем строку
12. Ставим указатель на конец строки(strlen() - вычисление длины строки)
14. Выполняем цикл пока не дойдём до конца строки
15. Находим положение следующего пробела.
16. Вычисляем длину этой строки
17. Если длина максимальной строки меньше новой, то максимальной присваевается значение новой
18. Иначе Если длина минимальной строки больше новой, то минимальной присваевается значение новой
19. Перемещаемся на длину слова по тексту.
20. Конец цикла
21. Выводим максимальную строку
22. Выводим минимальную строку
23. Ожидаем нажатия клавиши
24. Сообщаем ОС о завершении с кодом 0
25. Заканчиваем функцию.

Вроде так должно біло біть в идеале, но данній код в качестве максимальной строки должен вывести всю строку, а в качестве минимальной только последнее слово. Ошибка в районе 15 строки, так как мsі находим строку НАЧИНАЮЩЮЮСЯ с пробела, а не строку от пробела и до пробела
Фактически если нам дана строка
"Какой то текст"
мы рассматриваем(по итерациям):
1."Какой то текст"
2."то текст"
3."текст"

Да и в присваивании в 17, 18 строках ты присваиваешь строку до НУЛЕВОГО ЗАВЕРШИТЕЛЯ, то есть до конца строки
ЗЫ Сори за капс, это не повышение голоса, а акцентация внимания

Это сообщение отредактировал(а) world - 27.1.2010, 20:15
--------------------
Say what you mean, and mean what you say. Robert Wilson Cody
PM MAIL WWW ICQ Skype   Вверх
bsa
Дата 27.1.2010, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 1
Всего: 196



world, и не стыдно хлеб у людей отнимать?  smile 
PM   Вверх
bsa
Дата 27.1.2010, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 1
Всего: 196



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0570 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.