imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 01.09.2003, 19:06     # 21
TiamaT
Junior Member
 
Аватар для TiamaT
 
Регистрация: 13.11.2002
Адрес: Russia
Сообщения: 132

TiamaT Нуль без палочки
А как тебе вот такая реализация, единственный минус - распознает только десятичные числа.

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

int
main(int argc, char** argv)
{
char buf[32], *check;
long num;

printf("Enter x: ");

fgets(buf, sizeof(buf), stdin);
num = strtol(buf, &check, 10);
if (strncmp(buf, check, sizeof(buf)) != 0)
printf("You entered: %ld\n", num);

return 0;
}

Последний раз редактировалось TiamaT; 01.09.2003 в 19:49.
TiamaT вне форума  
Старый 01.09.2003, 19:10     # 22
SapeR
::VIP::
 
Регистрация: 17.12.2002
Адрес: Q-ata, Israel
Сообщения: 310

SapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царстве
тоже хорошо, сам такое пользую.
НО - ПОЗВОЛЯЕТ вводить не-числа (не соотв. условию)
SapeR вне форума  
Старый 01.09.2003, 19:14     # 23
TiamaT
Junior Member
 
Аватар для TiamaT
 
Регистрация: 13.11.2002
Адрес: Russia
Сообщения: 132

TiamaT Нуль без палочки
Набирать на клавиатуре позволяет, но если не числа то игнорирует.
TiamaT вне форума  
Старый 01.09.2003, 19:16     # 24
SapeR
::VIP::
 
Регистрация: 17.12.2002
Адрес: Q-ata, Israel
Сообщения: 310

SapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царстве
2TiamaT - введи "0" (без кавычек)
SapeR вне форума  
Старый 01.09.2003, 19:49     # 25
TiamaT
Junior Member
 
Аватар для TiamaT
 
Регистрация: 13.11.2002
Адрес: Russia
Сообщения: 132

TiamaT Нуль без палочки
поправил, тестируй
TiamaT вне форума  
Старый 01.09.2003, 23:09     # 26
Tulip
Junior Member
 
Аватар для Tulip
 
Регистрация: 17.08.2003
Пол: Male
Сообщения: 80

Tulip Путь к славе только начался
TiamaT, че-то я не совсем понял как работает эта схема. Там вроде буквы вводить можно. CапёР, а если я хочу ввести скажем дробное число?
Tulip вне форума  
Старый 02.09.2003, 02:36     # 27
SapeR
::VIP::
 
Регистрация: 17.12.2002
Адрес: Q-ata, Israel
Сообщения: 310

SapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царстве
Дробное - то есть с точкой ?
Вариант : разрешим юзеру ОДИН раз ввести точку.
вместо int x будет float x , соответственно scanf(... %f ) а не %d ,
добавляем флажок int flag_point = 1 и ещё один ELSE IF:
Код:
...
else if ( i!=0 && flag_point==1 && buffer[i-1]!='-' )
{
    flag_point = 0;
    buffer[i] = ch;
    putch(ch);
    i++;
}
else ...
И хорошо бы всё это из мэйна в функцию упаковать
SapeR вне форума  
Старый 02.09.2003, 12:05     # 28
TiamaT
Junior Member
 
Аватар для TiamaT
 
Регистрация: 13.11.2002
Адрес: Russia
Сообщения: 132

TiamaT Нуль без палочки
Tulip
если нужно вводить дробные, то используй strtod(buf, &check) вместо strtol.
если хочешь вводить шестнадцатиричные (типа 0x234h) то используй strtol(buf, &check, 16).
Ну и в printfе надо будет поменять конечно.
TiamaT вне форума  
Старый 03.09.2003, 19:13     # 29
Tulip
Junior Member
 
Аватар для Tulip
 
Регистрация: 17.08.2003
Пол: Male
Сообщения: 80

Tulip Путь к славе только начался
Lightbulb

Есть одна проблема. Ниже я написал часть кода. Суть его в том, что нужно ввести два раза числа. (в первом случае 1,2,3 или 4. Во-втором 1 или 2). Проблема в том, что после ввода в первый раз, нельзя ввести во второй раз. То есть программа как бы перепрыгивает через второй scanf (не дает ввести значение) и завершается. Как можно это исправить?


#include <stdio.h>
main()
{
char i;
printf("Enter number 1,2,3 or 4: ");
do
{
scanf("%c",&i);
}
while(i!='1' && i!='2' && i!='3' && i!='4');

i=10;
do
{
printf("Enter number 1 or 2: ");
scanf("%c",&i);
}
while(i!='1' && i!='2' && i!=10);
}
Tulip вне форума  
Старый 03.09.2003, 19:26     # 30
TiamaT
Junior Member
 
Аватар для TiamaT
 
Регистрация: 13.11.2002
Адрес: Russia
Сообщения: 132

TiamaT Нуль без палочки
хехе, а зачем тебе присваивать i=10, если при первом же обороте цикла ты затираешь свою 10 в i новым значением которое у тебя scanf прочитал с консоли?
TiamaT вне форума  
Старый 03.09.2003, 20:03     # 31
SapeR
::VIP::
 
Регистрация: 17.12.2002
Адрес: Q-ata, Israel
Сообщения: 310

SapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царстве
Код:
#include <stdio.h>
main()
{
int i1,i2;
printf("Enter number 1,2,3 or 4: ");
do
{
scanf("%d",&i1);
}
while(i1<1 || i1>4);

printf("Enter number 1 or 2: ");
do
{
scanf("%d",&i2);
}
while(i2<1 || i2>2);
// ...
}
SapeR вне форума  
Старый 04.09.2003, 12:47     # 32
TiamaT
Junior Member
 
Аватар для TiamaT
 
Регистрация: 13.11.2002
Адрес: Russia
Сообщения: 132

TiamaT Нуль без палочки
SapeR
Еще хорошо бы scanf на getch заменить
TiamaT вне форума  
Старый 04.09.2003, 13:50     # 33
Tulip
Junior Member
 
Аватар для Tulip
 
Регистрация: 17.08.2003
Пол: Male
Сообщения: 80

Tulip Путь к славе только начался
Цитата:
Первоначальное сообщение от SapeR
Код:
#include <stdio.h>
main()
{
int i1,i2;
printf("Enter number 1,2,3 or 4: ");
do
{
scanf("%d",&i1);
}
while(i1<1 || i1>4);

printf("Enter number 1 or 2: ");
do
{
scanf("%d",&i2);
}
while(i2<1 || i2>2);
// ...
}
А нельзя ли чтоб через char (i)? И все-таки, в чем была проблема в моем случае?
Tulip вне форума  
Старый 04.09.2003, 13:59     # 34
SapeR
::VIP::
 
Регистрация: 17.12.2002
Адрес: Q-ata, Israel
Сообщения: 310

SapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царстве
Проблемма в твоём случае была в "букве" ENTER - нажатие на неё генерирует не один символ а два - 13 и 10.
13 закрывает первый скан, а 10 попадает во второй.

Примитивное решение - команда getch() сразу после scanf(%c)
Или вместо scanf("%c",&i) используй i=getche()
SapeR вне форума  
Старый 04.09.2003, 14:12     # 35
TiamaT
Junior Member
 
Аватар для TiamaT
 
Регистрация: 13.11.2002
Адрес: Russia
Сообщения: 132

TiamaT Нуль без палочки
Tulip
Это тебе в школе такую задачку задали? Помню что-то типа такого в 8 классе в школе писали.
TiamaT вне форума  
Старый 04.09.2003, 16:00     # 36
Tulip
Junior Member
 
Аватар для Tulip
 
Регистрация: 17.08.2003
Пол: Male
Сообщения: 80

Tulip Путь к славе только начался
Да нет. Просто я с Си знаком недели две-три, поэтому еще мало в нем разбираюсь.
Tulip вне форума  
Старый 04.09.2003, 16:03     # 37
SapeR
::VIP::
 
Регистрация: 17.12.2002
Адрес: Q-ata, Israel
Сообщения: 310

SapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царстве
Удачи в изучении !
А с каких языков начинал ?
SapeR вне форума  
Старый 04.09.2003, 23:55     # 38
Tulip
Junior Member
 
Аватар для Tulip
 
Регистрация: 17.08.2003
Пол: Male
Сообщения: 80

Tulip Путь к славе только начался
Да так, паскаль частично знаю. И еще раньше ява скриптами увлекался.
Tulip вне форума  
Старый 05.09.2003, 11:24     # 39
TiamaT
Junior Member
 
Аватар для TiamaT
 
Регистрация: 13.11.2002
Адрес: Russia
Сообщения: 132

TiamaT Нуль без палочки
Да блин, теперь народ изучает все не в том порядке как надо, я вот изучал в таком порядке:
ассемблер, С, SH, REGEXP, AWK, SED, PERL.
TiamaT вне форума  
Старый 06.09.2003, 14:53     # 40
Tulip
Junior Member
 
Аватар для Tulip
 
Регистрация: 17.08.2003
Пол: Male
Сообщения: 80

Tulip Путь к славе только начался
А как сделать, чтоб можно было выводить текст на экран в каком-нибудь другом цвете, отличном от стандартного?

И еще. Какой щас самый нормальный компилятор? А то я пользуюсь старьем - TurboC 2.0 под дос.
Tulip вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 00:11.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.