Программирование
|
|
ElfDragon | Дата: Вторник, 2008-09-23, 11:46 PM | Сообщение # 16 |
 Генерал-лейтенант
Группа: Модераторы
Сообщений: 577
Статус: Offline
| Макс, а что значит строчка... 1+6+1+3.. там, где кол-во используемых флоатом ьбайтов
...А потом он пыхнул и ушел...
|
|
| |
MADMAX | Дата: Среда, 2008-09-24, 3:06 PM | Сообщение # 17 |
 Генерал-майор
Группа: Модераторы
Сообщений: 320
Статус: Offline
| 1 - позиция для "-" 6 - позиция для целых 1 - позиция для точки 3 - позиция для дробной части Получается что надо выделить 11 символов под число. Там кстати не предусмотрен вариант ввода нескольких символов ".", но это ты можеш сделать сам P.S. Дай подзатыльник мега мозгу по программированию из вашей группы 
Смотрю на мир...
|
|
| |
ElfDragon | Дата: Среда, 2008-09-24, 6:48 PM | Сообщение # 18 |
 Генерал-лейтенант
Группа: Модераторы
Сообщений: 577
Статус: Offline
| Ага, я уже переделал)) Даже не один))
...А потом он пыхнул и ушел...
|
|
| |
ElfDragon | Дата: Вторник, 2008-09-30, 2:11 PM | Сообщение # 19 |
 Генерал-лейтенант
Группа: Модераторы
Сообщений: 577
Статус: Offline
| Макс, а если во всех циклах на проверку условия в switch .. ввести число а потмо пробел.. то любой последующий ввод будет арсцениватсья как неправильныый
...А потом он пыхнул и ушел...
|
|
| |
MADMAX | Дата: Вторник, 2008-09-30, 11:27 PM | Сообщение # 20 |
 Генерал-майор
Группа: Модераторы
Сообщений: 320
Статус: Offline
| Тогда тебе надо сделать проверку на введённые пробелы. И если они есть - удалять их.
Смотрю на мир...
|
|
| |
ElfDragon | Дата: Среда, 2008-10-01, 9:37 PM | Сообщение # 21 |
 Генерал-лейтенант
Группа: Модераторы
Сообщений: 577
Статус: Offline
| Хм.. не видятся они) если делать через последовательную проверку символов.. гм.. вообще никак не реагирует, что есть пробел в строке
...А потом он пыхнул и ушел...
Сообщение отредактировал ElfDragon - Среда, 2008-10-01, 10:30 PM |
|
| |
ElfDragon | Дата: Четверг, 2008-10-02, 0:13 AM | Сообщение # 22 |
 Генерал-лейтенант
Группа: Модераторы
Сообщений: 577
Статус: Offline
| Макс, и каким образом можно проверить выход за пределы массива?
...А потом он пыхнул и ушел...
|
|
| |
MADMAX | Дата: Четверг, 2008-10-02, 11:49 PM | Сообщение # 23 |
 Генерал-майор
Группа: Модераторы
Сообщений: 320
Статус: Offline
| Как ты проверяеш пробелы в строке (если можно покажи код)? Надо сравнивать каждый символ из строки ввода с символом ' '. Выход за пределы массива проверяется сравнением количества введённых символов с размером массива.
Смотрю на мир...
|
|
| |
ElfDragon | Дата: Пятница, 2008-10-03, 0:23 AM | Сообщение # 24 |
 Генерал-лейтенант
Группа: Модераторы
Сообщений: 577
Статус: Offline
| При проверке количества символов с размером, пр ивыходе из программы выскакивает ошибка что стек поврежден... а это сам код.. проверки.. Code do{ chType[1] = 0; scanf("%s", &chType); if (chType[1]==' ') { printf("Error!\n"); continue; }else if (chType[1]!=0) { printf("Error!\n"); continue; }else { flag_enter = true; }
}while(flag_enter = false);
...А потом он пыхнул и ушел...
|
|
| |
MADMAX | Дата: Пятница, 2008-10-03, 11:16 PM | Сообщение # 25 |
 Генерал-майор
Группа: Модераторы
Сообщений: 320
Статус: Offline
| Бред какой-то
Смотрю на мир...
|
|
| |
MADMAX | Дата: Пятница, 2008-10-03, 11:34 PM | Сообщение # 26 |
 Генерал-майор
Группа: Модераторы
Сообщений: 320
Статус: Offline
| Ты должен понимать что ввод через "scanf("%s", &chType);" не прерывается и что количество символов может быть очень большим. Если работать с этой функцией то выход за пределы массива может отследить обработчик исключений. Или можно попытаться обойти эту ситуацию, предоставив для ввода данных гигантский массив (символов на 512)), а потом переписывать информацию в массив с которым работаеш, зная заранее количество символов. Сравнивать только второй символ массива "chType[1]" - неправильно, ты должен сравнивать каждый символ массива "chType[i]" в цикле.
Смотрю на мир...
|
|
| |
ElfDragon | Дата: Пятница, 2008-10-03, 11:34 PM | Сообщение # 27 |
 Генерал-лейтенант
Группа: Модераторы
Сообщений: 577
Статус: Offline
| Я сегодня все это переписал на лабе с помощью getchar() Заработало.. а массив все равно вылетает с ошибкой сломанного стека.. второй символ сравнивалсяя только в условиях данной лбы )
...А потом он пыхнул и ушел...
Сообщение отредактировал ElfDragon - Пятница, 2008-10-03, 11:40 PM |
|
| |
MADMAX | Дата: Пятница, 2008-10-03, 11:43 PM | Сообщение # 28 |
 Генерал-майор
Группа: Модераторы
Сообщений: 320
Статус: Offline
| getchar() - тоже вариант, это один из способов обойти проблему. Ты не долже давать вводить новый символ, если у тебя массив полный. Тоесть надо поставить условие выхода из цикла, при переполнении массива.
Смотрю на мир...
|
|
| |
ElfDragon | Дата: Пятница, 2008-10-03, 11:49 PM | Сообщение # 29 |
 Генерал-лейтенант
Группа: Модераторы
Сообщений: 577
Статус: Offline
| стиля while(chType[i]!='\0') { chType[i]=getchar(); i++ if (i==20) {printf ("The end...\n"); break} } printf("%s", chType); ?
...А потом он пыхнул и ушел...
Сообщение отредактировал ElfDragon - Пятница, 2008-10-03, 11:50 PM |
|
| |
MADMAX | Дата: Суббота, 2008-10-04, 11:42 PM | Сообщение # 30 |
 Генерал-майор
Группа: Модераторы
Сообщений: 320
Статус: Offline
| Да, неплохо. Надеюсь это работает? Ты после i++ и break забыл ';' поставить. И я думаю что после ввода символов, тебе самому надо присваивать chType[20] = '\0', для того чтобы обозначить конец массива и выводить его через printf("%s", chType); P.S. Я вижу в тебе зачатки супермозга зергов...
Смотрю на мир...
|
|
| |