crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

4 страниц V  < 1 2 3 4 >  
Ответить в данную темуНачать новую тему
> Начал изучать Си. Первые трудности.
DEADHUNT
  опции профиля:
сообщение 30.1.2011, 11:27
Сообщение #11


Активный участник
***

Группа: Участник
Сообщений: 430
Регистрация: 15.4.2009
Пользователь №: 686

Спасибо сказали: 26 раз(а)




Репутация:   2  


файл utf8, а ты его как ASCII читаешь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
micro-chipset
  опции профиля:
сообщение 30.1.2011, 11:34
Сообщение #12


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 27.1.2011
Пользователь №: 2371

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(DEADHUNT @ 30.1.2011, 11:27) *
файл utf8, а ты его как ASCII читаешь.

А как поправить?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 30.1.2011, 15:00
Сообщение #13


фрилансер
******

Группа: Участник
Сообщений: 2931
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Цитата(Litkevich Yuriy @ 29.1.2011, 22:16) *
фразу-то не закончил. Какую область видимости будет иметь константа?

как то есть где, в том блоке, где определена


Цитата(DEADHUNT @ 29.1.2011, 22:22) *
не понятно чему ты учишь, но в C нету memory.h, функция memset определёна в string.h/cstring.
по поводу arrlen*sizeof(*length), проще так:
memset(arr, 0, sizeof(arr));

http://msdn.microsoft.com/en-us/library/aa246471(VS.60).aspx
тут два заголовочника. Можно любой :) А что именно есть в его среде, я не знаю
Насчёт "проще" - я выше написал, почему я именно так сделал - а то он и динамический массив так инициализировать будет


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
micro-chipset
  опции профиля:
сообщение 30.1.2011, 15:59
Сообщение #14


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 27.1.2011
Пользователь №: 2371

Спасибо сказали: 0 раз(а)




Репутация:   0  


А все же что с решением задачки. Работает она не верно же
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 30.1.2011, 16:49
Сообщение #15


фрилансер
******

Группа: Участник
Сообщений: 2931
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


micro-chipset, покажи алгоритм на обычном русском языке - что ты делаешь. Без алгоритма не напишешь и не отладишь
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DEADHUNT
  опции профиля:
сообщение 30.1.2011, 17:12
Сообщение #16


Активный участник
***

Группа: Участник
Сообщений: 430
Регистрация: 15.4.2009
Пользователь №: 686

Спасибо сказали: 26 раз(а)




Репутация:   2  


Цитата(micro-chipset @ 30.1.2011, 11:34) *
А как поправить?

для работы с UTF можешь использовать например ICU.

Цитата(Алексей1153 @ 30.1.2011, 15:00) *
http://msdn.microsoft.com/en-us/library/aa246471(VS.60).aspx
тут два заголовочника. Можно любой :) А что именно есть в его среде, я не знаю
Насчёт "проще" - я выше написал, почему я именно так сделал - а то он и динамический массив так инициализировать будет

когда я начинал писать программы на C, я подключал <malloc.h> вместо <stdlib.h>(когда мне были нужны malloc/realloc/calloc/free). Да работает, но это не правильно. И в один момент компилятор может выдать ошибку, потому-что это не стандартный заголовочный файл.

Сообщение отредактировал DEADHUNT - 30.1.2011, 17:13
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
micro-chipset
  опции профиля:
сообщение 30.1.2011, 17:37
Сообщение #17


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 27.1.2011
Пользователь №: 2371

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(DEADHUNT @ 30.1.2011, 17:12) *
Цитата(micro-chipset @ 30.1.2011, 11:34) *
А как поправить?

для работы с UTF можешь использовать например ICU.

А поподробней

Алгоритм словами если ну примерно так представляю:
Считываем посимвольно входной поток при помощи getchar(). Начиная с первого символа проверяем слово это или пробел или табуляция или перевод на новую строку если буква увеличиваем переменную на один если следующая снова буква то увеличиваем еще на один в итоге в переменной накопится количество букв слова. Далее нужно вывести в нужную ячейку массива ячейка масива с номером равным количеству букв. и так повторить снова со следующим словом. Может грубо сформулировано но как понимаю она должна работать. Поправьте пожалуйста если что то не так.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 30.1.2011, 17:58
Сообщение #18


фрилансер
******

Группа: Участник
Сообщений: 2931
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


micro-chipset, это ты уже почти программу пытаешься написать, только словами :) А алгоритм будет примерно такой:

1) инициализировать переменные и массив, в котором хранится текущее содержимое гистограммы
2) считать очередное слово. Определить его длину, инкрементировать нужный счётчик в массиве гистограммы
3) если строка не закончилась, перейти к пункту 2
4) иначе - распечатать гистограмму
5) ждать нажатие клавиши
6) выйти
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
micro-chipset
  опции профиля:
сообщение 30.1.2011, 18:06
Сообщение #19


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 27.1.2011
Пользователь №: 2371

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Алексей1153 @ 30.1.2011, 17:58) *
micro-chipset, это ты уже почти программу пытаешься написать, только словами :) А алгоритм будет примерно такой:

1) инициализировать переменные и массив, в котором хранится текущее содержимое гистограммы
2) считать очередное слово. Определить его длину, инкрементировать нужный счётчик в массиве гистограммы
3) если строка не закончилась, перейти к пункту 2
4) иначе - распечатать гистограмму
5) ждать нажатие клавиши
6) выйти


Тут все понятно только наверное не согласен с пунктом 3 думаю не строка а входной поток(проверить через EOF) строк может быть и несколько. И дальше как это реализовать в программе с алгоритмом все ясно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 30.1.2011, 18:54
Сообщение #20


фрилансер
******

Группа: Участник
Сообщений: 2931
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


строку можно тоже представить потоком, а новые строки разделены символами возврата каретки и перевода строки .

А дальше берёшь каждый пункт основного плана, так сказать, и детализируешь

1 - это уже сделали выше.

2 - например, сделай процедуру, которая
на вход получает:
-начало потока (вернее, текущее место, откуда начинать),
-максимальная длина, которую разрешено обработать,

возвращает:
-длину слова
-позицию начала ещё не обработанных символов

прототип примерно такой

const char* void F(const char* beg, const int len, int& wordlen);

Сообщение отредактировал Алексей1153 - 30.1.2011, 18:55
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

4 страниц V  < 1 2 3 4 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 6.7.2022, 11:07