Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
Гродненский Форум
26 Апрель 2024, 09:55:23
Новости, реклама:
   Главная   Новости Гродно Помощь Игры Календарь Войти Регистрация   Меню
Гродненский Форум > Компьютеры > Программирование
(Модераторы: Админ, barmalei) > Тема:

С++ (вопросы по синтаксесу)

Страниц  :   Вниз
  Печать  
Автор Тема: С++ (вопросы по синтаксесу)  (Прочитано 1511 раз)
0 Пользователей и 1 Гость смотрят эту тему.
-LONE_WOLF-
Почетный гродненец
*****

Репутация: +487/-3
Offline Offline

Пол: Мужской
Сообщений: 2977


Vivere vitae....

Просмотр профиля WWW
« : 07 Май 2010, 12:48:22 »

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

1. Задача состояла в том, чтоб написать программу которая после введения года и номера месяца будет выводить количество дней в этом месяце. Учтя при этом существование високосных годов и используя команду switch. В общем-то программа до безобразия проста. Но пару моментов которые не дают ей компилироваться. А именно определения параметров високосного года (делиться на цело на 4-е и не делиться на 100 и 400):
Код:
int r,m
..........
if(r%4==0 && r!%100 || r!%400)
.......
else
.........
system("pause")
return 0
 

Как правильно записать условие делиться на 4-е и не делиться на 100 и 400?

2. Может кто-нибудь популярно объяснить или дать линк о принципе работы for и TAB?

Заранее благодарю за помощь!  Улыбка
Записан
Ave
Гродненец
**

Репутация: +10/-0
Offline Offline

Пол: Мужской
Сообщений: 81


я - не море. меня не волнует..

Просмотр профиля
« Ответ #1 : 07 Май 2010, 13:01:24 »

http://lib.ru/CPPHB/cpptut.txt

популярнее не найдешь

та и про использование операторов и составления логических выражений глянь еще ))

кста - неправильно високосный год определяешь:
год является високосным, если он кратен 4 и при этом не кратен 100, либо кратен 400.

исходный код пока не патентовал - можешь юзать

if (year%4==0 && year%100!=0 || year%400==0)
  std::cout << "leap year" << std::endl;
else
  std::cout << "not a leap year" << std::endl;

ps: хе-хе.. спецэффекты несинхронного доступа.. внизу вариант написали раньше Веселый
« Последнее редактирование: 07 Май 2010, 14:24:21 от Ave » Записан

Жизнь - игра. Задумка хреновая, но графика за#бись.
Типичной ошибкой программиста на С++ является выбор С++ в качестве языка программирования
Sven4uk
Почетный гродненец
*****

Репутация: +231/-0
Offline Offline

Сообщений: 2367

Просмотр профиля
« Ответ #2 : 07 Май 2010, 14:14:34 »

Цитировать
А именно определения параметров високосного года (делиться на цело на 4-е и не делиться на 100 и 400):
високосный год делится на 4 and не делится на 100 or делится на 400...
if ((year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0)))
либо же:
if (!year%4 && (!year%400 || year%100))
никогда не стоит экономить на скобках, от них программа медленней работать не станет... и код должен быть понятным. так что первый вариант, на мой взгляд правильней.

Добавлено: [time]Fri May  7 12:28:21 2010[/time]
2) например:
     for (int i = 0; i < N; i++) {
            /*do smth*/
    }
    
вначале проверяется, меньше ли i чем N. если меньше, то заходит в блок. в конце блока i увеличивается, и заново происходит проверка и т.д.
можно писать также несколько условий, либо прибавлять к i не 1:
for (;(arr[ i] != '\0') && (i < N); i += 2)

Добавлено: [time]Fri May  7 13:30:32 2010[/time]
про tab не понял..
« Последнее редактирование: 07 Май 2010, 16:33:54 от Sven4uk » Записан
RILLey_ELf
Гость
« Ответ #3 : 07 Май 2010, 14:30:39 »

2. Может кто-нибудь популярно объяснить или дать линк о принципе работы for и TAB?

http://www.kuzbass.ru:8086/docs/isocpp/stmt.html
а что такое TAB ?


а вот причина твоей ошибки написана тут
http://www.kuzbass.ru:8086/docs/isocpp/expr.html

хотя конечно ответ Sven4uk тебе должен помочь


а ещё используй codepad.org чтобы показывать свой исходный код. а то у тебя точек с запятыми нет функции main нет ничего нет. такое не компилируется

ах да ещё "синтаксИс  Смеющийся
« Последнее редактирование: 07 Май 2010, 14:54:41 от rilley_elf » Записан
Sven4uk
Почетный гродненец
*****

Репутация: +231/-0
Offline Offline

Сообщений: 2367

Просмотр профиля
« Ответ #4 : 07 Май 2010, 14:34:26 »

tab это \t?НепонимающийНепонимающий? какие могут быть по нему вопросы?)))))
Записан
coolasm
Почетный гродненец
*****

Репутация: +102/-3
Offline Offline

Пол: Мужской
Сообщений: 1458


//---------//

Просмотр профиля
« Ответ #5 : 07 Май 2010, 21:24:23 »

if(r%4==0 && r!%100 || r!%400) - это еще и откомпилировалось!?

if (( r%4 == 0 )&&( r%100 !=0 )&&( r%400 != 0)) - вот и все...
Записан

HTTP Error 404 - File or directory not found.
Sven4uk
Почетный гродненец
*****

Репутация: +231/-0
Offline Offline

Сообщений: 2367

Просмотр профиля
« Ответ #6 : 07 Май 2010, 22:11:49 »

if(r%4==0 && r!%100 || r!%400) - это еще и откомпилировалось!?

if (( r%4 == 0 )&&( r%100 !=0 )&&( r%400 != 0)) - вот и все...

Смеющийсяппц. почитай, что выше писали, прежде чем ерунду постить..
зы: если число не делится на 100, то на 400 оно ну никак не поделится. так что условие (r%100 != 0) && (r%400 != 0) не имеет смысла... элементарная математика.......
Записан
coolasm
Почетный гродненец
*****

Репутация: +102/-3
Offline Offline

Пол: Мужской
Сообщений: 1458


//---------//

Просмотр профиля
« Ответ #7 : 08 Май 2010, 01:43:49 »

if(r%4==0 && r!%100 || r!%400) - это еще и откомпилировалось!?

if (( r%4 == 0 )&&( r%100 !=0 )&&( r%400 != 0)) - вот и все...

;Dппц. почитай, что выше писали, прежде чем ерунду постить..
зы: если число не делится на 100, то на 400 оно ну никак не поделится. так что условие (r%100 != 0) && (r%400 != 0) не имеет смысла... элементарная математика.......
ну да, писал в спешке (пятницо, на пиво хочется), писал по написанному "(делиться на цело на 4-е и не делиться на 100 и 400):", и это вроде && (я понимаю, что число делиться на 100, если делиться на 400, дошло через минут 5, но я уже был далеко от компа), лан, какнить потом посмотрю про високосные года.
Не знаю как воспринимать "и не делиться на 100 и 400", че было написано, то и написал, возможно в условии ошибка (вот эти "не делиться на 100 и на 400" ).
может
if (( r%4 == 0 )&&!(( r%100 ==0 )||(r%400 == 0))) - но это после 2.5л пива (хотя наверное хрень, возможно даже правильная хрень).
Записан

HTTP Error 404 - File or directory not found.
Sven4uk
Почетный гродненец
*****

Репутация: +231/-0
Offline Offline

Сообщений: 2367

Просмотр профиля
« Ответ #8 : 08 Май 2010, 02:25:14 »

ошибка в условии. и товарищу автору это уже сообщили))) такое ощущение, что тут 10 страниц написано.... нельзя пару постов прочитать, прежде чем  постить что-то?
Записан
Страниц  :   Вверх
  Печать  
 
Перейти в:  

Войти
Войдите, чтобы добавить комментарий

Войдите через социальную сеть

Имя пользователя:
Пароль:
Продолжительность сессии (в минутах):
Запомнить:
Забыли пароль?

Контакт
Powered by MySQL Powered by PHP Мобильная версия
Powered by SMF 1.1.20
SMF © 2006-2024, Simple Machines
Simple Audio Video Embedder
| Sitemap
Valid XHTML 1.0! Valid CSS!
Страница сгенерирована за 0,102 секунд. Запросов: 19.