Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2015, 13:47   #1
AB96
Пользователь
 
Регистрация: 20.10.2015
Сообщений: 22
По умолчанию Некорректная работа программы

Здравствуйте! Мне нужно было написать такую программу: Дано число в k-ичной системе счисления an an-1 ... a0 (k<=20). Найти остаток от деления его на заданное число m. Число k,n,m, как и остаток от деления на m, представляются в десятичной системе счисления.

Программу я написал, но она некорректно работает: если ввести что-нибудь, то она просто закрывается. Помогите, пожалуйста, устранить ошибку!

Вот код программы:


Код:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
 
int getrest(char *s, int k, int m)
{
	int rest = 0; 
    int p = 1; 
    int digit; 
    char *cp = s + strlen(s) - 2; 
    while (cp >= s && (*cp == '\r' || *cp =='\n')) --cp; 
    while (cp >= s) { 
        if (*cp >= '0' && *cp <= '9')
            digit = *cp - '0';
        else
        if (*cp >= 'A' && *cp <= 'J') 
            digit = *cp - 'A' + 10;
        else
        if (*cp >= 'a' && *cp <= 'j') 
            digit = *cp - 'a' + 10;
        else { 
            printf("Недопустимый символ [%c]!\n", *cp);
            return -1;
        }
        if(digit >= k) { /* цифра получилась больше системы счисления - не допустимо! */
            printf("Недопустимый символ <%c>!\n", *cp);
            return -1;
        }
        rest = rest + p * digit % m; 
        p = p * k % m; 
        //printf("%d %d %d\n", digit, rest, p);
        --cp;
    }
    return rest;
}


 
int main ()
{
	char str[101]; /* буфер для строки k-ичных цифр */
	int k,m,rest;

    setlocale(LC_ALL, "rus");
    char str[101]; /* буфер для строки k-ичных цифр */
    fflush(stdin); 
    printf("Введите систему счисления (от 2 до 20): ");
    fgets(str, 101, stdin); 
    k = atoi(str); /* считываем систему счисления */
    if (k < 2 || k > 20) { /* по условиям может быть от 2 до 20 */
        printf("Неверная система счисления!");
        return 1;
    }
    printf("Введите число m: ");
    fgets(str, 101, stdin); 
    m = atoi(str); 
    printf("Введите число n в k-ичной системе счисления, не более 100 разрядов: ");
    fgets(str, 101, stdin); 

    rest = getrest(str, k, m);
    if (rest >= 0)
        printf("Остаток от деления на m равен %d\n", rest);
    _getch();
    return 0;
}
Заранее спасибо!
AB96 вне форума Ответить с цитированием
Старый 25.12.2015, 13:55   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

ну как минимум вот тут ретурн и выкинет вас из программы
Код:
if (k < 2 || k > 20) { /* по условиям может быть от 2 до 20 */
        printf("Неверная система счисления!");
        return 1;
    }
Проверьте по шагам что в переменные вводится.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 25.12.2015, 14:06   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Так, на всяк случай могу порекомендовать такой конвертер: http://www.programmersforum.ru/showp...4&postcount=36
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Некорректная работа orandzheviyman Помощь студентам 0 23.02.2015 22:19
Некорректная работа программы Starget-93 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 18.11.2012 06:08
Некорректная работа программы в Windows 7. Vedaslav Общие вопросы Delphi 19 02.08.2011 00:03
Некорректная работа программы... HyperZen Общие вопросы Delphi 2 03.07.2011 10:46
Некорректная работа программы при формировании массива @Manya@ Общие вопросы C/C++ 13 22.04.2010 21:40