2. Может кто-нибудь популярно объяснить или дать линк о принципе работы for и TAB?
Название: С++ (вопросы по синтаксесу) Отправлено: -LONE_WOLF- от 07 Май 2010, 12:48:22 В последнее время начали появляться сложности с пониманием некоторых вещей. Если кто-то может обьяснить, то был бы очень признателен.
1. Задача состояла в том, чтоб написать программу которая после введения года и номера месяца будет выводить количество дней в этом месяце. Учтя при этом существование високосных годов и используя команду switch. В общем-то программа до безобразия проста. Но пару моментов которые не дают ей компилироваться. А именно определения параметров високосного года (делиться на цело на 4-е и не делиться на 100 и 400): Код: int r,m Как правильно записать условие делиться на 4-е и не делиться на 100 и 400? 2. Может кто-нибудь популярно объяснить или дать линк о принципе работы for и TAB? Заранее благодарю за помощь! :) Название: Re: С++ (вопросы по синтаксесу) Отправлено: Ave от 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: хе-хе.. спецэффекты несинхронного доступа.. внизу вариант написали раньше :D Название: Re: С++ (вопросы по синтаксесу) Отправлено: Sven4uk от 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 не понял.. Название: Re: С++ (вопросы по синтаксесу) Отправлено: RILLey_ELf от 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 нет ничего нет. такое не компилируется ах да ещё "синтаксИс ;D Название: Re: С++ (вопросы по синтаксесу) Отправлено: Sven4uk от 07 Май 2010, 14:34:26 tab это \t???????? какие могут быть по нему вопросы?)))))
Название: Re: С++ (вопросы по синтаксесу) Отправлено: coolasm от 07 Май 2010, 21:24:23 if(r%4==0 && r!%100 || r!%400) - это еще и откомпилировалось!?
if (( r%4 == 0 )&&( r%100 !=0 )&&( r%400 != 0)) - вот и все... Название: Re: С++ (вопросы по синтаксесу) Отправлено: Sven4uk от 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) не имеет смысла... элементарная математика....... Название: Re: С++ (вопросы по синтаксесу) Отправлено: coolasm от 08 Май 2010, 01:43: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) не имеет смысла... элементарная математика....... Не знаю как воспринимать "и не делиться на 100 и 400", че было написано, то и написал, возможно в условии ошибка (вот эти "не делиться на 100 и на 400" ). может if (( r%4 == 0 )&&!(( r%100 ==0 )||(r%400 == 0))) - но это после 2.5л пива (хотя наверное хрень, возможно даже правильная хрень). Название: Re: С++ (вопросы по синтаксесу) Отправлено: Sven4uk от 08 Май 2010, 02:25:14 ошибка в условии. и товарищу автору это уже сообщили))) такое ощущение, что тут 10 страниц написано.... нельзя пару постов прочитать, прежде чем постить что-то?
|