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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Где моя ошибка ? 
V
    Опции темы
custard
Дата 21.10.2006, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Привет,я тут простоЙ код написал,но с ошибкоЙ ,незнаю где она ,помогите если знаете  
в оутпуте выдает только Error: Invalid operator: * it can either be + or -  smile 

SAMPLE RUNS:
Text in plain are user’s inputs, bold text are your program’s outputs,.

Sample Run 1:
13:45:36+04:22:54
18:08:30
Sample Run 2:
22:32:18+12:54:43
11:27:01
Sample Run 3:
17:43:22-4:12:56
13:30:26
Sample Run 4:
4:32:08-12:45:43
15:46:25
Sample Run 5:
12:23:56-156:34:32
23:49:24
Sample Run 6:
14:32:45+176:43:18
23:16:03
Sample Run 7:
28:34:32+03:32:14
Error: Invalid hour: 28
Sample Run 8:
12:98:13-3:32:14
Error: Invalid minute: 98
Sample Run 9:
22:01:76+12:32:44
Error: Invalid second: 76
Sample Run 10:
12:43:22*4:22:43
Error: Invalid operator: * it can either be + or -
Sample Run 11:
12:54:32-43:98:23
Error: Invalid minute: 98
Sample Run 12:
12:43:56+13:43:99
Error: Invalid second: 99

CODE

Код

#include<stdio.h>
int main(){

    int hour1,min1,sec1,hour2,min2,sec2,hour3,min3,sec3;
    int overall_second1,overall_second2;
    char f,math_operator;
    scanf("%d%c%d%c%d%c%d%c%d%c%d",&hour1,&f,&min1,&f,&sec1,&math_operator,&hour2,&f,&min2,&f,&sec2);


        if(math_operator == '*'){
        if(hour1>=24)
                     printf("Error: Invalid hour:   %d",hour1);
            else if(min1>=60)
                     printf("Error: Invalid minute: %d",min1);
            else if(min2>=60)
                     printf("Error: Invalid minute: %d",min2);
            else if(sec1>=60)
                     printf("Error: Invalid second: %d",sec1);
            else if(sec2>=60)
                     printf("Error: Invalid second  %d",sec2);



            return 0;
        }
        else{
            printf("Error: Invalid math_operator: * it can either be + or -");
            
            return 0;
        }
    


switch (math_operator){

case '+':

    overall_second1=(hour1*3600+min1*60+sec1)+(hour2*3600+min2*60+sec2);

    hour3=overall_second1/3600;
    min3=(overall_second1%3600)/60;
    sec3=(overall_second1%3600)%60;
    break;

case '-':

    overall_second2=(hour1*3600+min1*60+sec1)-(hour2*3600+min2*60+sec2);

    hour3=overall_second2/3600;
    min3=(overall_second2%3600)/60;
    sec3=(overall_second2%3600)%60;
    break;

}

printf("%02d%c%02d%c%02d",hour3,f,min3,f,sec3);

return 0;

}


Добавлено @ 10:02 
убрал 2 ретурна в середине шас выдает так Error: Invalid operator: * it can either be + or - 23:49:24
опят неправильно


Это сообщение отредактировал(а) custard - 21.10.2006, 10:00
PM MAIL   Вверх
custard
Дата 21.10.2006, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



после эррора опять не выходит из програмы
 smile 

Код

#include<stdio.h>
int main(){

    int hour1,min1,sec1,hour2,min2,sec2,hour3,min3,sec3;

    int overall_second1,overall_second2;
    
    char f,math_operator;
    
    scanf("%d%c%d%c%d%c%d%c%d%c%d",&hour1,&f,&min1,&f,&sec1,&math_operator,&hour2,&f,&min2,&f,&sec2);


        if(math_operator == '*')
                    printf("Error: Invalid math_operator: * it can either be + or -");

            else if(hour1>=24)
                    printf("Error: Invalid hour:   %d",hour1);
            
            else if(min1>=60)
                 printf("Error: Invalid minute: %d",min1);
            
            else if(min2>=60)
                    printf("Error: Invalid minute: %d",min2);
            
            else if(sec1>=60)
                    printf("Error: Invalid second: %d",sec1);
            
            else if(sec2>=60)
                    printf("Error: Invalid second  %d",sec2);



      
    


         switch (math_operator){

             case '+':

                   overall_second1=(hour1*3600+min1*60+sec1)+(hour2*3600+min2*60+sec2);
                   hour3=overall_second1/3600;
                   min3=(overall_second1%3600)/60;
                   sec3=(overall_second1%3600)%60;
                   break;

             case '-':

                   overall_second2=(hour1*3600+min1*60+sec1)-(hour2*3600+min2*60+sec2);
                   hour3=overall_second2/3600;
                   min3=(overall_second2%3600)/60;
                   sec3=(overall_second2%3600)%60;
                   break;

         }

         printf("%02d%c%02d%c%02d",hour3,f,min3,f,sec3);

         return 0;

}

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


Эксперт
****


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

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



Ну, а где ты поставил выход после вывода ошибки?
Тогда уж делай так:
Код
if(math_operator == '*') {
    printf("Error: Invalid math_operator: * it can either be + or -");
    exit(1);
}
 и так далее.
А printf для вывода ошибок лучше заменить на fprintf(stderr, ....).
PM   Вверх
custard
Дата 21.10.2006, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

error C2065: 'exit' : undeclared identifier


 что делать шас?smile 

Это сообщение отредактировал(а) custard - 21.10.2006, 11:06
PM MAIL   Вверх
bsa
Дата 21.10.2006, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



а доку почитать слабо?
Цитата(man 3 exit)
NAME
       exit - cause normal process termination

SYNOPSIS
       #include <stdlib.h>

       void exit(int status);


Это сообщение отредактировал(а) bsa - 21.10.2006, 11:13
PM   Вверх
custard
Дата 21.10.2006, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



испасиба дабариш,что такое дока?

PM MAIL   Вверх
bsa
Дата 21.10.2006, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



дока - сокращение от ДОКУМЕНТАЦИЯ smile
PM   Вверх
custard
Дата 21.10.2006, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



а есть ли в компайлере функция которая делает автоматическую идентацию т.е как должен выглядеть нормальный код ?
так правильно?

Код

#include<stdio.h>
#include <stdlib.h>
int main(){

    int hour1,min1,sec1,hour2,min2,sec2,hour3,min3,sec3;

    int overall_second1,overall_second2;
    
    char f,math_operator;
    
    scanf("%d%c%d%c%d%c%d%c%d%c%d",&hour1,&f,&min1,&f,&sec1,&math_operator,&hour2,&f,&min2,&f,&sec2);


    if(math_operator == '*'){
        printf("Error: Invalid math_operator: * it can either be + or -\n");
        exit(1);
    }
        
    else if(hour1>=24){
            printf("Error: Invalid hour:   %d\n",hour1);
            exit(2);
    }
            
    else if(min1>=60){
            printf("Error: Invalid minute: %d\n",min1);
            exit(3);
    }
            
    else if(min2>=60){
            printf("Error: Invalid minute: %d\n",min2);
            exit(4);
    }
            
    else if(sec1>=60){
            printf("Error: Invalid second: %d\n",sec1);
            exit(5);}
            
    else if(sec2>=60){
            printf("Error: Invalid second  %d\n",sec2);
            exit(6);
    }


    else 
      
    


         switch (math_operator){

             case '+':

                   overall_second1=(hour1*3600+min1*60+sec1)+(hour2*3600+min2*60+sec2);
                   hour3=(overall_second1/3600)%24;
                   min3=(overall_second1%3600)/60;
                   sec3=(overall_second1%3600)%60;
                   break;

             case '-':

                   overall_second2=(hour1*3600+min1*60+sec1)-(hour2*3600+min2*60+sec2);
                   hour3=(overall_second2/3600)%24;
                   min3=(overall_second2%3600)/60;
                   sec3=(overall_second2%3600)%60;
                   break;

         }

         printf("%02d%c%02d%c%02d\n",hour3,f,min3,f,sec3);

         return 0;

}

PM MAIL   Вверх
bsa
Дата 21.10.2006, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Вопрос вообще не понятен.
Если тебя интересуют правила форматирования кода, то это вообще не про компилятор, так как этим исключительно программисты с редакторами (текстовыми) занимаются. Компилятору пофигу форматирование. Рекомендую смотреть темы прикремленные в начале форума, там все написано. Рекомендую стиль K&R.
Ести ты хочешь, чтобы компилятор искал у тебя ошибки в алгоритмах, то это опять же бесполезное ожидание.
PM   Вверх
custard
Дата 21.10.2006, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



да да я про форматирование
все понятно  smile 
PM MAIL   Вверх
bsa
Дата 21.10.2006, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Вопрос с ошибкой решен? Тогда пометь тему решенной.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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