Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> является ли строка целым числом 
:(
    Опции темы
kristin
Дата 8.11.2010, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 8.11.2010

Репутация: нет
Всего: нет



как-то глупо вышло,написала на др компе код,все работало,а дома постаралась восстановить,но видимо что-то упустила

Вобщем,дана строка из символов,необходимо определить,является ли она целым числом

Как известно,строка является целым числом,когда состоит непосредственно из цифр и первый символ может быть минусом. в свой код условие с минусом пока не стала добавлять,т.к выяснила что и без этого, ответ выводится неверный
 вот собственно сам код:

Код



#include <stdio.h>
#include <conio.h>


void main()
{
    int c,f=1;
    c=getchar();

    
          
        while(c!=EOF)   

            {  if(c>=0&&c<=9)
                   c=getchar();
                else 
               f=2;
               break;
        }
        
           
    
    
    
    if(f==1)
        printf("yavl'aetsa celim 4islom\n");
    
    else printf("ne yavlaetsa celim 4islom\n");

    
getch();
}


задачу эту необходимо было решить без использования массива и с помощью функции getchar()
подскажите в чем ошибка

Это сообщение отредактировал(а) kristin - 8.11.2010, 15:15
PM MAIL   Вверх
Bugmaker
Дата 8.11.2010, 16:43 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 27.6.2008

Репутация: нет
Всего: нет



Как-то так

Код

#include <iostream>
using namespace std;

int main()
{
    char buff[1023];
    cin >>buff;
    
    int f=1;
    
    for (int i=0; i<strlen(buff);i++)
    {
        

        cout<<buff[i]<<endl;
        if (buff[i]>='9' || buff[i]<='0')
           f=0;
    }
    
    cout << f << strlen(buff);
    system ("pause");
    return 0;
}


PM MAIL   Вверх
Crafty
Дата 8.11.2010, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 3.11.2008

Репутация: 12
Всего: 14



Код

#include <stdio.h>

int main()
{
  int c,f=1;
  while((c=getchar())!='\n')   
  {  
    if(c>='0'&&c<='9')     // тут можно использовать ф-цию isdigit()
      printf("%c", c);
    else 
    {
      f=2;
      break;
    }
  }
         
  if(f==1)
    printf("yavl'aetsa celim 4islom\n");
  else 
    printf("ne yavlaetsa celim 4islom\n");
}


PS Учитесь форматировать код, а то у вас тот же break не относиться к else.

Добавлено через 2 минуты и 48 секунд
Bugmaker, 
Код

 if (buff[i]>='9' || buff[i]<='0')
тут должно быть &&, иначе у вас всегда будет true.
PM MAIL   Вверх
Леопольд
Дата 8.11.2010, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 3
Всего: 13



kristin, разbиваем на элементарные функции, вот основная (compare):
Код
#include <stdio.h>

enum Bool {False = 0, True};

Bool compare(char c, char const* pattern)
{
    for(; *pattern != 0; ++pattern)
    {
        if(*pattern == c)
        {
            return True;
        }
    }
    return False;
}



int main()
{
    char c = 'a';
    printf("compare(c = %c, pattern = 0123456789) == %s\n", c, compare(c, "0123456789") ? "True" : "False");

    c = '1';
    printf("compare(c = %c, pattern = 0123456789) == %s\n", c, compare(c, "0123456789") ? "True" : "False");

    return 0;
}


Ещё целым числом являются строки (oct - 070), (hex - 0XF0, 0x0f)


Это сообщение отредактировал(а) Леопольд - 8.11.2010, 18:45


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
kristin
Дата 16.11.2010, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 8.11.2010

Репутация: нет
Всего: нет



всем спасибо большое за помощь,отдельно спасибо Crafty,Ваш вариант был самым приемлимым,как раз то что нужно было)
в остальных кодах многое не разобрала т.к первый курс института и начало изучения языка С с нуля)
PM MAIL   Вверх
bsa
Дата 17.11.2010, 00:58 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(Bugmaker @  8.11.2010,  17:43 Найти цитируемый пост)
for (int i=0; i<strlen(buff);i++)
зачем такая пессимизация?!?

PM   Вверх
mes
Дата 17.11.2010, 01:02 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(bsa @  16.11.2010,  23:58 Найти цитируемый пост)
Цитата(Bugmaker)

for (int i=0; i<strlen(buff);i++)

зачем такая пессимизация?!?

чтоб оправдать ник smile 

Это сообщение отредактировал(а) mes - 17.11.2010, 01:03


--------------------
PM MAIL WWW   Вверх
xvr
Дата 17.11.2010, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Код

char* input_string = ...;

char* e;
strtoul(input_string,&e,0);
if (*e==0) {<строка input_string является числом> }


PM MAIL   Вверх
mrbrooks
Дата 17.11.2010, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



а чем не кошерен boost.lexical_cast?
PM MAIL   Вверх
bsa
Дата 17.11.2010, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(mrbrooks @ 17.11.2010,  15:51)
а чем не кошерен boost.lexical_cast?

тем, что у ТС язык программирования другой.
PM   Вверх
mes
Дата 17.11.2010, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(mrbrooks @  17.11.2010,  13:51 Найти цитируемый пост)
а чем не кошерен boost.lexical_cast? 

а где у тс говориться о C++ ?

Добавлено через 30 секунд
опоздал


--------------------
PM MAIL WWW   Вверх
mrbrooks
Дата 17.11.2010, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



bsa, точно. сбил с курса Bugmaker.
PM MAIL   Вверх
Леопольд
Дата 18.11.2010, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 3
Всего: 13



Цитата(kristin @  16.11.2010,  23:57 Найти цитируемый пост)
в остальных кодах многое не разобрала т.к первый курс института и начало изучения языка С с нуля
Функции, enum'ы и строки (char*) не проходили ещё?


Это сообщение отредактировал(а) Леопольд - 18.11.2010, 10:34


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
kristin
Дата 21.11.2010, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 8.11.2010

Репутация: нет
Всего: нет



неа)
PM MAIL   Вверх
Леопольд
Дата 21.11.2010, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 3
Всего: 13



Цитата(kristin @  21.11.2010,  17:17 Найти цитируемый пост)
неа) 
Это странно. Основы ведь...



--------------------
вопросов больше чем ответов
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

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

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0732 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.