imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 18.08.2003, 16:26     # 1
Tulip
Junior Member
 
Аватар для Tulip
 
Регистрация: 17.08.2003
Пол: Male
Сообщения: 80

Tulip Путь к славе только начался
Нужна помощь по C

Как сделать чтобы прога на C (не ++) в конце цикла выдавала запрос что-то вроде "повторить операцию? y/n". При y соответственно прога начинала выполняться заново, при n вырубалась. (закрывалась окно).
Tulip вне форума  
Старый 18.08.2003, 17:01     # 2
qwe123
Guest
 
Сообщения: n/a

Что то типа этого :

char res;
while(res!='n')
{
//Чтото делаем
printf("%s","Продолжить y/n")
scanf("%c",&res);
}
 
Старый 18.08.2003, 17:07     # 3
SapeR
::VIP::
 
Регистрация: 17.12.2002
Адрес: Q-ata, Israel
Сообщения: 310

SapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царстве
пример:
Код:
void MyFunc()
{
   // your code here
}

void main()
{
    char ch=' '
    do
    {
        MyFunc();
        do
        {
            printf("повторить операцию? y/n :");
            scanf("%c",&ch);
        } 
        while (ch!='y' && ch!='Y' && ch!='n' && ch!='N');
    } 
    while (ch!='n' && ch!='N');
}
SapeR вне форума  
Старый 22.08.2003, 14:37     # 4
BigFoot
Junior Member
 
Регистрация: 16.12.2002
Сообщения: 64

BigFoot Путь к славе только начался
Tulip
Кроме scanf можно использовать getchar...
BigFoot вне форума  
Старый 26.08.2003, 23:17     # 5
Tulip
Junior Member
 
Аватар для Tulip
 
Регистрация: 17.08.2003
Пол: Male
Сообщения: 80

Tulip Путь к славе только начался
1. Короче вот в чем проблема. Есть кусок кода. (ниже). Суть в том, что из 3 вариантов надо выбрать один нажатием соответственно 1,2 или 3. Если юзер нажимает символ, отличный от 1,2 или 3, то должно выскакивать сообщение, что "введите 1,2 или 3". Херня в том что сообщение вылазит два раза подряд (при вводе других символов). Как эту багу исправить?

*********************************************************
#include <stdio.h>
main()
{
char s;
printf("Please enter 1, 2 or 3" );
while(s!='1' && s!='2' && s!='3')
{
scanf("%c", &s);
if(s!='1' && s!='2' && s!='3')
printf("Please, enter the number 1, 2 or 3.\n\n");
}
}
*********************************************************


2. И еще. Короче такая фигня.

#include <stdio.h>
main()
{
int x=2,y=6;
int z;
z=x+y;
printf("%d",z);
}


Как мне результат (z) записать в файл? (например result.txt).
Tulip вне форума  
Старый 27.08.2003, 00:11     # 6
cd19
Member
 
Регистрация: 20.10.2002
Адрес: где придётся
Сообщения: 271

cd19 Путь к славе только начался
fprintf позволяет писать в файл
cd19 вне форума  
Старый 27.08.2003, 00:29     # 7
sky7
Member
 
Аватар для sky7
 
Регистрация: 02.05.2003
Адрес: Бельгия
Сообщения: 201

sky7 Путь к славе только начался
Так ФИ!!!
**************************************************
*******
#include <stdio.h>
main()
{
char s;
//printf("Please enter 1, 2 or 3" );
while(s!='1' && s!='2' && s!='3')
{
// вот будет один раз выскакивать!
printf("Please, enter the number 1, 2 or 3.\n\n");

scanf("%c", &s);
if(s!='1' && s!='2' && s!='3')
//printf("Please, enter the number 1, 2 or 3.\n\n");
}
}
**************************************************
А про файлы с С не знаю... про ++ могу сказать.
*******
sky7 вне форума  
Старый 27.08.2003, 00:49     # 8
ArchiMage
::VIP::
Старик Похабыч
 
Аватар для ArchiMage
 
Регистрация: 21.07.2002
Адрес: Колодец
Сообщения: 718

ArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собой
chast' intera pri sleduyushem scanf zahodit v "s", mozhno reshit' tak (chut' podpraviv if) :

if(s!='1' && s!='2' && s!='3'&&s!=10)


sky7
v tvoem sluchae problema ostanetsa
__________________
поручик Ржевский

Последний раз редактировалось ArchiMage; 27.08.2003 в 00:55.
ArchiMage вне форума  
Старый 27.08.2003, 15:15     # 9
Tulip
Junior Member
 
Аватар для Tulip
 
Регистрация: 17.08.2003
Пол: Male
Сообщения: 80

Tulip Путь к славе только начался
Цитата:
Первоначальное сообщение от ArchiMage
chast' intera pri sleduyushem scanf zahodit v "s", mozhno reshit' tak (chut' podpraviv if) :

if(s!='1' && s!='2' && s!='3'&&s!=10)


sky7
v tvoem sluchae problema ostanetsa
Работает! А что означает это условие: s!=10? Ведь s в данном случае тип char. Каким образом можно ставить условие ей через число?
Tulip вне форума  
Старый 27.08.2003, 16:01     # 10
Borland
СуперМод
IMHO Консультант 2005-2009
 
Аватар для Borland
 
Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отсек
Пол: Male
Сообщения: 14 501

Borland - Гад и сволочь
Цитата:
Первоначальное сообщение от Tulip
...А что означает это условие: s!=10? Ведь s в данном случае тип char. Каким образом можно ставить условие ей через число? [/B]
Это одно из основополагающих свойств языка. Тип char может рассматриваться как int. Значение 10 - ASCII-код символа, только и всего... Насколько помню, это так называемый "управляющий символ", соответствует нажатию клавиши не помню какой, но вроде Esc...
Borland вне форума  
Старый 27.08.2003, 17:16     # 11
SapeR
::VIP::
 
Регистрация: 17.12.2002
Адрес: Q-ata, Israel
Сообщения: 310

SapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царстве
10 - возврат каретки
13 - переход строки
27 - ескейп
вообсче все коды до 32 (пробел) можно игнорировать

в идеале условие выглядит
Код:
if(s<'1' || s>'3')
SapeR вне форума  
Старый 27.08.2003, 17:23     # 12
ArchiMage
::VIP::
Старик Похабыч
 
Аватар для ArchiMage
 
Регистрация: 21.07.2002
Адрес: Колодец
Сообщения: 718

ArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собой
Tulip
dlya samogo yazyka ne vazhno chto ty podruzamevaesh pod char, dlya nego eto cifry ot 0 do 255... klavisha "ENTER" sostoit iz dvuh bukv : 10 i 13 po tablice ASCII , pri nazhatii etoj klavishy posle vvoda chast' ee zajdet v sleduyushem vvode

Добавлено через 2 минуты:
CапёР
"if(s<'1' || s>'3')" opyat' ta-zhe porblema s interom, on primet snachala bukvu a potom kogda zanovo zajdet v while primet 10 ot intera
__________________
поручик Ржевский
ArchiMage вне форума  
Старый 27.08.2003, 17:27     # 13
SapeR
::VIP::
 
Регистрация: 17.12.2002
Адрес: Q-ata, Israel
Сообщения: 310

SapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царстве
Цитата:
ArchiMage
"if(s<'1' || s>'3')" opyat' ta-zhe porblema s interom, on primet snachala bukvu a potom kogda zanovo zajdet v while primet 10 ot intera
Цитата:
CапёР
вообсче все коды до 32 (пробел) можно игнорировать
Ok :
Код:
if(s<32)
{//ignore
}
else if(s<'1' || s>'3')
{
    printf("Enter number from 1 to 3\n");
}
SapeR вне форума  
Старый 27.08.2003, 17:29     # 14
ArchiMage
::VIP::
Старик Похабыч
 
Аватар для ArchiMage
 
Регистрация: 21.07.2002
Адрес: Колодец
Сообщения: 718

ArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собойArchiMage Имеются все основания чтобы гордиться собой
тогда можно
__________________
поручик Ржевский
ArchiMage вне форума  
Старый 28.08.2003, 18:31     # 15
TiamaT
Junior Member
 
Аватар для TiamaT
 
Регистрация: 13.11.2002
Адрес: Russia
Сообщения: 132

TiamaT Нуль без палочки
Цитата:
Тип char может рассматриваться как int
я бы сказал как byte ;-)
TiamaT вне форума  
Старый 29.08.2003, 09:17     # 16
Borland
СуперМод
IMHO Консультант 2005-2009
 
Аватар для Borland
 
Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отсек
Пол: Male
Сообщения: 14 501

Borland - Гад и сволочь
TiamaT
Согласен
Borland вне форума  
Старый 30.08.2003, 11:54     # 17
AvaLANche
Member
 
Аватар для AvaLANche
 
Регистрация: 19.05.2003
Сообщения: 262

AvaLANche Нимб уже пробиваетсяAvaLANche Нимб уже пробивается
где взять компилятор с++?
например "gnu c++"
__________________

AvaLANche вне форума  
Старый 30.08.2003, 13:56     # 18
cd19
Member
 
Регистрация: 20.10.2002
Адрес: где придётся
Сообщения: 271

cd19 Путь к славе только начался
http://gcc.gnu.org
cd19 вне форума  
Старый 01.09.2003, 15:58     # 19
Tulip
Junior Member
 
Аватар для Tulip
 
Регистрация: 17.08.2003
Пол: Male
Сообщения: 80

Tulip Путь к славе только начался
А вот, еще такой вопрос:

В качестве примера приведу простенький код:

*******************
#include <stdio.h>
main()
{
int x;
printf("Enter x: ");
scanf("%d",&x);
}
*******************

Как в данной ситуации сделать ограничение на ввод? Имеется ввиду например если с клавы буден введен скажем символ, а не число. То есть как сделать чтоб вводить разрешалось только числовые данные, а ввод символов игнорировался.
Tulip вне форума  
Старый 01.09.2003, 17:14     # 20
SapeR
::VIP::
 
Регистрация: 17.12.2002
Адрес: Q-ata, Israel
Сообщения: 310

SapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царстве
вот например:
Код:
#include <stdio.h>
#include <conio.h>

#define SIZE 20
void main(void)
{
    int x;
    char buffer[SIZE], ch;
    int  i;
    printf("Enter x: ");

    ch  = 0;
    i   = 0;
    while (i<SIZE-2)
    {
		ch = getch();
		if (ch=='-' && i==0)
		{
			buffer[i] = ch;				// '-' on 1st place = NEGATIVE NUMBER
			putch(ch);
			i++;
		}
		else if (ch>='0' && ch <='9')
		{
			buffer[i] = ch;				// add to buffer
			putch(ch);
			i++;
		}
		else if (ch==10 || ch==13)
		{
			break;						// user press enter
		}
		else
		{
			putch(7);					// wrong key = BEEP
		}
    }
    buffer[i] = '\0';	// end of string
    printf("\n");

	sscanf(buffer,"%d",&x);
    printf("%d",x);
}
если что непонятно - спрашивай
SapeR вне форума  

Опции темы

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

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

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


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




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