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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Runtime Error, где, в этом коде может быть сабж? 
V
    Опции темы
Kurganec
Дата 24.1.2009, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



всем здравсте.

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


я задачку решал: http://acm.sgu.ru/problem.php?contest=0&problem=115
система выдает: Runtime Error on test 16
ума не рпиложу...
Код

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
    int a,b;
    int s=0;
    scanf("%i",&a);
    scanf("%i",&b);

    //это типо проверка, да криво, но всёже
    if (a<=0||b<=0) 
    {
        printf("Impossible");
        return -1;
    }
    if ((b==1||b==3||b==5||b==7||b==8||b==10||b==12)&&a>31)
    {
        printf("Impossible");
        return -1;
    }
    if ((b==4||b==6||b==9||b==11)&&a>30)
    {
        printf("Impossible");
        return -1;
    }
    if (b==2&&a>28)
    {
        printf("Impossible");
        return -1;
    }
    
    if (b>12) 
    {
        printf("Impossible");
        return -1;
    }


    
    //а тут сам "календарь" :)


    for (int i=1;i<b;i++)
    {
        if (i==2); //тут тоже некрасиво:)
        else if (i==1||i==3||i==5||i==7||i==8||i==10||i==12) {s+=3;}
        else  s+=2;
                //s=s%7;
    }
    s+=a%7;
    s=s%7;

    if (s==0) s+=7;
    printf("%i",s);
    //getchar();
    //getchar();
       
    return 0;
}



Это сообщение отредактировал(а) Kurganec - 24.1.2009, 17:57
PM MAIL ICQ Skype   Вверх
GoldFinch
Дата 24.1.2009, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



(b==1||b==3||b==5||b==7||b==8||b==10||b==12)
(b==4||b==6||b==9||b==11)
...

может лучше использовать таблицы?
PM MAIL ICQ   Вверх
Kurganec
Дата 24.1.2009, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



 smile 

pS:вы думаете runtime error из-за этого?
PM MAIL ICQ Skype   Вверх
GoldFinch
Дата 24.1.2009, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



я думаю что кодить надо нормально, тогда и ошибок не будет
PM MAIL ICQ   Вверх
vinter
Дата 24.1.2009, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

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



Kurganec, в дебаге посмотри


--------------------
Мой блог
PM MAIL WWW   Вверх
Kurganec
Дата 24.1.2009, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



GoldFinch, 
спасибо, за совет. Я ведь только учусь smile

vinter, у меня всё компилится и функционирует вроде бы правильно. 
runtime error выдаёт система проверки задач:
"802292    24.01.09 17:39    kurganec    115    .CPP_VS    Runtime Error on test 16    0 ms    0 kb"

Это сообщение отредактировал(а) Kurganec - 24.1.2009, 18:16
PM MAIL ICQ Skype   Вверх
Annihilator
Дата 25.1.2009, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


bytegrinder
**


Профиль
Группа: Участник
Сообщений: 493
Регистрация: 21.11.2006
Где: Омск

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



В ответ на какие входные данные выдается ошибка?


--------------------
Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо
PM ICQ   Вверх
Kurganec
Дата 25.1.2009, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



я наверное не правильньо изъяснил проблему.
код пишу я, а входные и выходные данные проверяются не мной.
вот мне и было интересно, при каких вводимых числах, происходит эта ошибка.
PM MAIL ICQ Skype   Вверх
vinter
Дата 25.1.2009, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

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



Kurganec, т.е ты предлагаешь нам поработать тестерами? я тебя разочарую, никто здесь этим заниматься не станет.


--------------------
Мой блог
PM MAIL WWW   Вверх
mes
Дата 25.1.2009, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



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

bool IsLeapYear (int year)
{ 
   return (year%4) ? false : true;
}
int GetDaysInMonth (int month, bool leap)
{
  const int * days = { 31, 0, 31, 30, 31,30, 31,31,30,31,30,31 };
  if (month>=12 || month<0) return 0; 
  if (month ==1) return  (leap)? 29 : 28;
  return days[month];
}




Это сообщение отредактировал(а) mes - 27.1.2009, 14:12


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


Новичок



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

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



mes, большое спасибо.

ток я добавил несколько букаф
if (month>=12||month<0) return 0; 

ещё раз спасибо

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


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


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

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



Цитата(Kurganec @  27.1.2009,  13:06 Найти цитируемый пост)
if (month>=12||month<0) return 0; 

логично, подправил в коде  smile 

Это сообщение отредактировал(а) mes - 27.1.2009, 14:13


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


[хакер]
**


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

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



Цитата(mes @ 27.1.2009,  14:10)
Цитата(Kurganec @  27.1.2009,  13:06 Найти цитируемый пост)
if (month>=12||month<0) return 0; 

логично, подправил в коде  smile

Имхо, совсем не логично. Неправильное использование функции не должно умалчиваться. Правильнее, следовало бы бросить исключение.


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
bsa
Дата 3.2.2009, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(NightmareZ @ 3.2.2009,  06:24)
Правильнее, следовало бы бросить исключение.

Хорошо, как бросить исключение средствами языка Си?
PM   Вверх
NightmareZ
Дата 3.2.2009, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



Цитата(bsa @ 3.2.2009,  17:46)
Цитата(NightmareZ @ 3.2.2009,  06:24)
Правильнее, следовало бы бросить исключение.

Хорошо, как бросить исключение средствами языка Си?

А где тут написано, что это Си без плюсов?


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
bsa
Дата 3.2.2009, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(NightmareZ @ 3.2.2009,  17:59)
А где тут написано, что это Си без плюсов?

Автор пользовался исключительно средствами Си. Учитывая, что он только учится, можно сделать вывод, что про исключения он ничего не знает.
PM   Вверх
mes
Дата 3.2.2009, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(NightmareZ @  3.2.2009,  05:24 Найти цитируемый пост)
Имхо, совсем не логично. Неправильное использование функции не должно умалчиваться. Правильнее, следовало бы бросить исключение.

В данном случае нет умолчания да и самого неправильного использования тоже нет.
Функция возвращает кол-во дней если месяц определен и 0 в противном случае.

P.S. Привычка сувать исключения куда попало не очень хороша.
На каждом уровне кода должны быть свои правила и ограничения.
В данном случае, имхо, исключение является отягощением.



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


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

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



Цитата(mes @  3.2.2009,  19:25 Найти цитируемый пост)
P.S. Привычка сувать исключения куда попало не очень хороша.

аргументы? smile


--------------------
Мой блог
PM MAIL WWW   Вверх
bsa
Дата 3.2.2009, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Модератор: Давайте вернёмся к теме обсуждения.
PM   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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