Форум программистов, компьютерный форум CyberForum.ru

Не получается исправить код - C++

Восстановить пароль Регистрация
 
Aspire Mcafee
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 11
11.10.2010, 21:17     Не получается исправить код #1
помогите исправить код пожалуйста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
char limit[20], notation[2];
 
   do
   {
        error = 0;
        int i = 0;
        cout << "Enter number: ";
        cin >> limit;
        do
        {
                if ((limit[i] < '0') || (limit[i] > '9'))
                {
                        error = 1;
                        cout << "Error! Repeat!" << endl;
                        break;
                }
 
                i++;
        }
        while (i != 20);
 
        if (error == 0)
                break;
   }
   while (error != 0);
как сделать чтобы массив проверялся до последнего введонного элемента а не полностью.
например я ввожу 1234, но проверка идет до конца массива, что мне нужно изменить в строке while (i != 20);?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2010, 21:17     Не получается исправить код
Посмотрите здесь:

не получается исправить ошибку C++
Не получается код C++
C++ Исправить код
Не получается со строками (исправить код) C++
исправить код C++
Пытаюсь переписать код с циклом for, в код с циклом while, но не совсем получается C++
Не получается написать код C++
C++ Исправить код

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
11.10.2010, 21:40     Не получается исправить код #2
Ето можна сделать через динамические массивы!!!

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
char *limit; 
char notation[2];
int size;
 
   do
   {
        error = 0;
        int i = 0;
        cout << "Enter number: ";
        cin >> limit;
        limit = new char[size];
        do
        {
                if ((limit[i] < '0') || (limit[i] > '9'))
                {
                        error = 1;
                        cout << "Error! Repeat!" << endl;
                        break;
                }
 
                i++;
        }
        while (i !=size);
 
        if (error == 0)
                break;
   }
   while (error != 0);
delete [] limit;
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
12.10.2010, 03:14     Не получается исправить код #3
MILAN, ну нельзя же так делать...
Можно так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
#include <ctype.h>
 
#define max 20
 
int isNum(const char* str)
{
    while(*str)
        if(!isdigit(*str++))
            return 0;
    return 1;
}
 
int main(void)
{
    char number[max];
    do
    {
        printf("Enter a number: ");
        scanf("%s", number);
        if(isNum(number))
            break;
        fprintf(stderr, "Error! Repeat\n");
    }
    while(1);
    printf("The number is %s\n", number);
    return 0;
}
Yandex
Объявления
12.10.2010, 03:14     Не получается исправить код
Ответ Создать тему
Опции темы

Текущее время: 04:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru