4Programmers
[quote=Kent,Dec 17 2005, 01:05 AM]Не помню, че strtok делает, ну скажи, зачем ты ей NULL передаешь?
Вот мой вариант, по проще:
а если стоит 2 пробела подряд?
твой метод вернет неверное количество слов в предложении
а насчет NULL - вот кусок из MSDN (имхо самая авторитетная дока по С/С++):
хых
с твоими подходами к программированию только на асме писать.GIF)
задача программиста пишущего коммерческий софт как можно бытрее сделать это, воспользовавшись уже готовыми решениями.
Иначе зачем, скажем в C# существуют классы XmtlTextReader и XmlTextWriter, когда можно руками отктыть текстовый файл XML, считать все данные в строковыую переменную, а потом самому сидеть и парсить строку.
Вот мой вариант, по проще:
- Код: Выделить всё
<!--QuoteEBegin-->int CountOfWords(char*Sent)<!--QuoteEBegin-->{<!--QuoteEBegin--> int j=0;<!--QuoteEBegin--> for(int i=0;i++;i<strlen(Sent))<!--QuoteEBegin--> {<!--QuoteEBegin--> if (Sent[i]=" ")<!--QuoteEBegin--> {<!--QuoteEBegin--> j++;<!--QuoteEBegin--> while(Sent[i]=" ")i++;<!--QuoteEBegin--> }<!--QuoteEBegin--> }<!--QuoteEBegin--> return j;<!--QuoteEBegin-->}<!--QuoteEBegin-->
а если стоит 2 пробела подряд?
твой метод вернет неверное количество слов в предложении
а насчет NULL - вот кусок из MSDN (имхо самая авторитетная дока по С/С++):
- Код: Выделить всё
char *strtok(<!--QuoteEBegin--> char *strToken,<!--QuoteEBegin--> const char *strDelimit <!--QuoteEBegin-->);
Parameters
strToken
String containing token or tokens.
strDelimit
Set of delimiter characters.
On the first call to strtok, the function skips leading delimiters and returns a pointer to the first token in strToken, terminating the token with a null character. More tokens can be broken out of the remainder of strToken by a series of calls to strtok. Each call to strtok modifies strToken by inserting a null character after the token returned by that call. To read the next token from strToken, call strtok with a NULL value for the strToken argument. The NULL strToken argument causes strtok to search for the next token in the modified strToken. The strDelimit argument can take any value from one call to the next so that the set of delimiters may vary.
Example
- Код: Выделить всё
// crt_strtok.c<!--QuoteEBegin-->/* In this program, a loop uses strtok<!--QuoteEBegin--> * to print all the tokens (separated by commas<!--QuoteEBegin--> * or blanks) in the string named "string".<!--QuoteEBegin--> */<!--QuoteEBegin--><!--QuoteEBegin-->#include <string.h><!--QuoteEBegin-->#include <stdio.h><!--QuoteEBegin--><!--QuoteEBegin-->char string[] = "A string\tof ,,tokens\nand some more tokens";<!--QuoteEBegin-->char seps[] = " ,\t\n";<!--QuoteEBegin-->char *token;<!--QuoteEBegin--><!--QuoteEBegin-->int main( void )<!--QuoteEBegin-->{<!--QuoteEBegin--> printf( "Tokens:\n" );<!--QuoteEBegin--> /* Establish string and get the first token: */<!--QuoteEBegin--> token = strtok( string, seps );<!--QuoteEBegin--> while( token != NULL )<!--QuoteEBegin--> {<!--QuoteEBegin--> /* While there are tokens in "string" */<!--QuoteEBegin--> printf( " %s\n", token );<!--QuoteEBegin--> /* Get next token: */<!--QuoteEBegin--> token = strtok( NULL, seps );<!--QuoteEBegin--> }<!--QuoteEBegin-->}
Output
- Код: Выделить всё
Tokens:<!--QuoteEBegin--> A<!--QuoteEBegin--> string<!--QuoteEBegin--> of<!--QuoteEBegin--> tokens<!--QuoteEBegin--> and<!--QuoteEBegin--> some<!--QuoteEBegin--> more<!--QuoteEBegin--> tokens
Подход явно политеховский - такие задачи дают не для того, чтобы найти нужную функцию в справке за 2 секунды, а чтобы самому уметь их писать.
хых
с твоими подходами к программированию только на асме писать
задача программиста пишущего коммерческий софт как можно бытрее сделать это, воспользовавшись уже готовыми решениями.
Иначе зачем, скажем в C# существуют классы XmtlTextReader и XmlTextWriter, когда можно руками отктыть текстовый файл XML, считать все данные в строковыую переменную, а потом самому сидеть и парсить строку.
[quote=KriG,Dec 18 2005, 03:55 PM]а если стоит 2 пробела подряд?
твой метод вернет неверное количество слов в предложении
[/quote]
Ждал вопроса.
В условии задачи не было сказано проверять входные данные на корректность. Можно вообще забыть пробел между словами (ошибка абсолютно равноценная двум пробелам), тогда и твой метод вернет неправильное значение.
[quote=KriG,Dec 18 2005, 03:55 PM]а насчет NULL - вот кусок из MSDN (имхо самая авторитетная дока по С/С++):
хых
[/quote]
К сожалению дома не стояло MSDN
[quote=KriG,Dec 18 2005, 03:55 PM]с твоими подходами к программированию только на асме писать.GIF)
задача программиста пишущего коммерческий софт как можно бытрее сделать это, воспользовавшись уже готовыми решениями.
Иначе зачем, скажем в C# существуют классы XmtlTextReader и XmlTextWriter, когда можно руками отктыть текстовый файл XML, считать все данные в строковыую переменную, а потом самому сидеть и парсить строку.
[/quote]
Ты извини, но в данном случае человек попросил решить ему задачу для зачета, а не написать коммерческий софт. Первое, что должен был спросить программист у заказчика, перед написанием - а зачем заказчику эта программа нужна. Т.е. скорректировать формулировку задачи, вникнуть в предметную область, а уже потом, исходя из этого, выбирать методы реализации. Когда то и на асме нужно пописать
твой метод вернет неверное количество слов в предложении
[/quote]
Ждал вопроса.

В условии задачи не было сказано проверять входные данные на корректность. Можно вообще забыть пробел между словами (ошибка абсолютно равноценная двум пробелам), тогда и твой метод вернет неправильное значение.
[quote=KriG,Dec 18 2005, 03:55 PM]а насчет NULL - вот кусок из MSDN (имхо самая авторитетная дока по С/С++):
хых
[/quote]
К сожалению дома не стояло MSDN
[quote=KriG,Dec 18 2005, 03:55 PM]с твоими подходами к программированию только на асме писать
задача программиста пишущего коммерческий софт как можно бытрее сделать это, воспользовавшись уже готовыми решениями.
Иначе зачем, скажем в C# существуют классы XmtlTextReader и XmlTextWriter, когда можно руками отктыть текстовый файл XML, считать все данные в строковыую переменную, а потом самому сидеть и парсить строку.
[/quote]
Ты извини, но в данном случае человек попросил решить ему задачу для зачета, а не написать коммерческий софт. Первое, что должен был спросить программист у заказчика, перед написанием - а зачем заказчику эта программа нужна. Т.е. скорректировать формулировку задачи, вникнуть в предметную область, а уже потом, исходя из этого, выбирать методы реализации. Когда то и на асме нужно пописать

Первое, что должен был спросить программист у заказчика, перед написанием - а зачем заказчику эта программа нужна. Т.е. скорректировать формулировку задачи, вникнуть в предметную область, а уже потом, исходя из этого, выбирать методы реализации.
т.е. ты считаешь что если прога не очень серьезная, то и написать ее можно через жопу?
у нас например даже на лабах препод требует try/catch ставить чтобы отлавливать ошибки в printf
[quote=KriG,Dec 18 2005, 08:13 PM]т.е. ты считаешь что если прога не очень серьезная, то и написать ее можно через жопу?
[/quote]
Нет, я считаю, что все проги серьезные и писать их нужно правильно, а не через жопу.
"Написать перевод из Hex в OCT"
и
"Перевести из Hex в OCT"
это две совершенно несвязанные задачи. Вторая решается элементарно, если есть уже написанная первая. Человек попросил решить первую, а ты предложил ему решение второй. Значит ты не удовлетворил требования заказчика. Незачот.
[/quote]
Нет, я считаю, что все проги серьезные и писать их нужно правильно, а не через жопу.
"Написать перевод из Hex в OCT"
и
"Перевести из Hex в OCT"
это две совершенно несвязанные задачи. Вторая решается элементарно, если есть уже написанная первая. Человек попросил решить первую, а ты предложил ему решение второй. Значит ты не удовлетворил требования заказчика. Незачот.
Подниму старый топ 
Просьба помочь с задачей.
Создать программу, в которой:
- с клавиатуры вводится двумерный массив-матрица (размерность массива произвольная);
- в массиве определяются все седловые точки (седловая точка - это элемент, являющийся одновременно минимальным в строке и максимальным в столбце)
Рекомендации:
- используется цикл for;
- индексацию проводить двумя способами, с использованием как указателей, так и индексов.

Просьба помочь с задачей.
Создать программу, в которой:
- с клавиатуры вводится двумерный массив-матрица (размерность массива произвольная);
- в массиве определяются все седловые точки (седловая точка - это элемент, являющийся одновременно минимальным в строке и максимальным в столбце)
Рекомендации:
- используется цикл for;
- индексацию проводить двумя способами, с использованием как указателей, так и индексов.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1