• 締切済み

解いたみたのですが間違っているらしくどこがまちがっているのかわかりません。どなたかおしえてください

1、次の論理式を反転させよ.ただし解答には ! (否定)を含めないこと. (month != Jun) && (day < 17) 私の答え (month == Jun) || (day >= 17) 2、次の論理式を || (OR) を使わない形へ書き換えよ。 (month != Feb) || ((year % 4) != 0) 私の答え !((month == Feb) && ((year % 4) == 0))

みんなの回答

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

質問者の答えで合っていると思います。ド・モルガンの法則そのままですから。 http://ja.wikipedia.org/wiki/ド・モルガンの法則 間違っているとするなら,文字列比較の書き方がそのプログラム言語の文法に合っていない,という可能性はありませんか。 (month == Jun) というのは,変数month と変数Jun を比較しているのですよね。そうではなく'Jun'や'Feb'という3文字の文字列と比較しなければならない,とか。 ド・モルガンの法則はたしかに数学ですけれど,コンピュータの基礎に密接に関連しますから,カテゴリ違いというほどではないと思います。質問文中の式もプログラム言語的な書式で書かれていますし。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

二つの交わる円を書いて どの部分が問題の条件の部分か、自分で考えた部分はどこか、 比較して考えましょう。 たしか、小学校か中学校でこの様な方法で集合を習った記憶があります。 「または」、「かつ」、「それ以外」なんて習ったような、、、

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  •   ×2010で今現在の年齢が出せる関数。

    オフィスのエクセル2010では2007で使えたDATEIFがありませんので 年齢を出す時は、どうすれば良いでしょう。 今私が考えたのは、DATE(YEAR(○)-YEAR(●),MONTH○)-MONTH(●),DAY(○)-DAY(●)) で一度シリアル値を出して、その後何か設定で答えが出せると思っています。 申し訳ございませんが、Office 2010で今現在の年齢が出せる式を教えて下さい。

  • C言語で3次元配列を使い一年分のカレンダーを作成

    カレンダーは完成したのですが曜日がズレてしまい綺麗に表示されません。どのように改善すれば良いのでしょうか?よろしくお願いします。 現状です #pragma warning(disable:4996) #include <stdio.h> #include <Windows.h> enum M_LIST { JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC, N_MONTH }; enum W_LIST { SUN, MON, TUE, WED, THU, FRI, SAT, N_WEEK }; int mday[] = { 31,28,31,30,31,30,31,31,30,31,30,31 }; //各月の日数 char *weekday[] = { "日","月","火","水","木","金","土" }; //各曜日 /*プロトタイプ宣言*/ int monthday(int year); void Array(int total, char box[N_MONTH][N_WEEK][N_WEEK]); void karenda(char box[N_MONTH][N_WEEK][N_WEEK]); /*メイン*/ void main(void) { int year, total; char box[N_MONTH][N_WEEK][N_WEEK] = { 0 }; //3次元配列を宣言し0を入れる /*画面制御の初期化*/ COORD coord; HANDLE hStdout; hStdout = GetStdHandle(STD_OUTPUT_HANDLE); printf("西暦を入力"); scanf("%d", &year); //年度の入力 total = monthday(year); Array(total, box); karenda(box); } /*求める月の前月までの総日数*/ int monthday(int year) { int total = 0; /*求める年の前年までの総日数を求める*/ total = (((year - 1) * 365) + ((year - 1) / 4) - ((year - 1) / 100) + ((year - 1) / 400) + 1); /*うるう年の判定*/ if (((year % 4) == 0 && (year % 100) != 0) || (year % 400) == 0) { mday[FEB] = 29; } else { mday[FEB] = 28; } return total % 7; } /*カレンダーの配列*/ void Array(int total, char box[N_MONTH][N_WEEK][N_WEEK]) { int month, row, col, day; col = total; for (month = JAN; month < N_MONTH; month++) { row = 1; day = 1; while (day <= mday[month]) { box[month][row][col] = day; if (col > SAT) { //土曜までいったら次の週 row++; col = SUN; } day++; col++; } } } /*カレンダーの出力*/ void karenda(char box[N_MONTH][N_WEEK][N_WEEK]) { int month, week, day; for (month = JAN; month < N_MONTH; month++) { //月の出力 printf("%3d\n", month + 1); for (week = SUN; week < N_WEEK; week++) { for (day = SUN; day < N_WEEK; day++) { if (week == 0) { //曜日の出力 printf("%s", weekday[day]); } if (box[month][week][day] == 0) { //0なら空白 printf(" "); } else { printf("%3d", box[month][week][day]); } } printf("\n"); } printf("\n"); } } 今はこのような形で表示されます(空白は_で表しています) 日____月____火____水____木____金____土 ________1___2___3___4___5 6___7___8___9__10__11__12 13_14__15__16__17__18__19 20_21__22__23__24__25__26 27_28__29__30__31

  • C言語「3次元配列で1年間分のカレンダー作成」

    C言語課題で3次元配列で与えられた年の1年間分のカレンダーを作成するという課題で日数の表示の方法が分かりません。回答などいただけると参考になりますので教えていただけるとありがたいです。 現在の状態です(この状態ではエラーは起きていません) #pragma warning(disable:4996) #include <stdio.h> #include <Windows.h> enum M_LIST { JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC, N_MONTH }; enum W_LIST { SUN, MON, TUE, WED, THU, FRI, SAT, N_WEEK }; char *weekday[] = { "SUN","MON","TUE","WED","THU","FRI","SAT"}; //曜日 int mday[] = { 31,28,31,30,31,30,31,31,30,31,30,31 }; //各月の日数 /*プロトタイプ宣言*/ int monthday(int year); void karenda(int total); /*メイン*/ void main(void) { int year; /*画面制御の初期化*/ COORD coord; HANDLE hStdout; hStdout = GetStdHandle(STD_OUTPUT_HANDLE); char cal[N_MONTH][N_WEEK][N_WEEK] = { 0 }; //3次元配列を宣言し0を入れる printf("西暦を入力"); scanf("%d", &year); //年度の入力 karenda(monthday(year)); } /*求める月の前月までの総日数*/ int monthday(int year) { int total = 0; /*求める年の前年までの総日数を求める*/ total = (((year - 1) * 365) + ((year - 1) / 4) - ((year - 1) / 100) + ((year - 1) / 400) + 1)%7; /*うるう年の判定*/ if ((year % 4) == 0 && (year % 100) != 0 && (year % 400) == 0) { mday[FEB] = 29; } else { mday[FEB] = 28; } return total; } /*カレンダー*/ void karenda(int total) { int month, row, day; for (month = JAN; month < N_MONTH; month++) { row = 0; day = 1; while (day <= mday[month]) { for (row = SUN; row < N_WEEK; row++) { if (day <= SAT) { day++; } } day++; } } } よろしくお願いします。 注)karenda(int total)にはprintfを使わず完成させたいです。

  • プログラムの内容

    以下のプログラムは答えとして渡されたものなんですが、 コマンド引数を使ったプログラムの流れがよくわかりません。 簡単に解説してくれる方、いませんか? #include <stdio.h> int leapyear(int year){ if(year%400 == 0) return 1; else if(year%4 == 0 && year%100 != 0) return 1; else return 0; } void addmonth(int *day, int *month, int *year){ *day = 1; (*month)++; if(*month > 12) { *month = 1; (*year)++; } } int main(int argc, char *argv[]){ int year, month, day, a=0, max_days; int month_days[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; if(argc < 2) max_days = 10000; else max_days = atoi(argv[1]); printf("今日は西暦何年 何月 何日? "); scanf("%d%d%d",&year,&month,&day); while(a<max_days) { a++; day++; if(month == 2 && leapyear(year)) { if(day > 29) addmonth(&day, &month, &year); } else { if(day > month_days[month-1]) addmonth(&day, &month, &year); } } printf("今日から%d日後は、%d年%d月%d日です。",max_days, year, month, day); }

  • C言語で3次元配列を使い一年分のカレンダーを作成

    C言語課題で「三次元配列を定義して、与えられた年の1年間分のカレンダーを作成する」という課題があるのですが三次元配列を使い一年分のカレンダーがなかなか出来ません。 教えていただけるとありがたいです。 どうかよろしくお願いします!!!! 現状はこの状態です。 #pragma warning(disable:4996) #include <stdio.h> #define WEEK 6 enum M_LIST { JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC, N_MONTH }; enum W_LIST { SUN, MON, TUE, WED, THU, FRI, SAT, N_WEEK }; char *weekday[] = { "日,月,火,水,木,金,土" }; //曜日 int mday[] = { 31,28,31,30,31,30,31,31,30,31,30,31 }; //各月の日数 /*プロトタイプ宣言*/ int monthday(int year); void karenda(int total); /*メイン*/ void main(void) { int year; printf("西暦を出力"); scanf("%d", &year); //年度の出力 karenda(monthday(year)); } /*求める月の前月までの総日数*/ int monthday(int year) { int total = 0; /*求める年の前年までの総日数を求める*/ total = (((year - 1) * 365) + ((year - 1) / 4) - ((year - 1) / 100) + ((year - 1) / 400) + 1); /*うるう年の日数*/ if ((year % 4) == 0 && (year % 100) != 0 && (year % 400) == 0)mday[FEB] = 29; { } return total; } /*カレンダー*/ void karenda(int total) { int month, week, day; int box = total % 7; char cal[N_MONTH][WEEK][N_WEEK]; //3次元配列の宣言 for (month = 0; month < N_MONTH; month++) { printf("%d\n", (month + 1)); //月を入力 for (week = 0; week < WEEK; week++) { for (day = 0; day < N_WEEK; day++) { if (day < box){ printf(" "); } } } } } よろしくお願いします。

  • アクセスでdateserialを使った式の意味と式ビルダ

    式の意味がわかりません。問題は「廃棄日」は、DateSerrial関数、year関数及び month関数を使用して「入荷日」の2年後における月末日とする。というものです。答は、 dateserial(year([入荷日]+2,month(入荷日)+1,0)となっていますが、2年後の意味はわかるのですが、何故monthに1を足すのか、dayの部分が0になるのかが、どうしても理解できません。 簡単なことかもしれませんが、どうか教えて下さい。 それと、式ビルダで作成しようとしても、うまく範囲が選択されず、いらない《》や文字が残ったりします。使い方がよくわからないのです。ヘルプを見ても記載されていないので悩んでいます。 どうぞよろしくお願いいたします。

  • 生年月日関係の計算

    エクセルのバージョンは2002です。 2000/01/01のような生年月日のデータから、18年と1ヵ月後(年月のみ)のデータを作ります。 書式を変更するのではなく、新しいセルに打ち込みます。 なお、給与計算月(21日~翌20日)によるため、 たとえば1995/7/25なら2013/9      1995/7/15なら2013/8      1995/11/15なら2013/12            1995/11/25なら2014/1      1995/12/25なら2014/2  というように「給与計算月ベースの18年と1ヵ月後」のデータになるような式を作ります。 この条件で、L83のある生年月日を変換するのに =IF(MONTH(L83)+1=13,YEAR(L83)+19,IF(AND(DAY(L83)>20,MONTH(L83)+2=13),YEAR(L83)+19,YEAR(L83)+18))&"/"&IF(AND(DAY(L83)>20,MONTH(L83)+1=13),2,IF(AND(MONTH(L83)+2=13,DAY(L83)>20),1,IF(DAY(L83)>20,MONTH(L83)+2,IF(MONTH(L83)+1=13,1,MONTH(L83)+1)))) こんな式を強引に作ってうまく適用できたのですが、 もっとうまいやり方は無かったのだろうか・・・と思って質問しました。 やってみると意外に複雑です。 式を単純化できる方いらっしゃいましたら、後学のために教えてください。 よろしくお願いします

  • うるう年判定

    こんにちは。今回も宜しくお願いします<(_ _)> 画面から入力された日付(生年月日)の妥当性をチェックしたいのですが、それにはまずクラス(API)をわかっていなくてはいけないと思い、お試しで作ったものが、私の想像していた通りに動きません。 import java.util.*; public class Test {  public static void main(String[] args) {   int year;   int month;   int day;   GregorianCalendar g = new GregorianCalendar();   year = g.get( Calendar.YEAR );   month = g.get( Calendar.JUNE );   day = g.get( Calendar.DATE );   System.out.println("year = " + year);   System.out.println("month = " + month);   System.out.println("day = " + day);   } } 上記のソースを実行すると、 C:\WINDOWS\デスクトップ\カレンダ>java Test year = 2003 month = 3 day = 3 となります。月の指定はCalendar.JUNEとしているのに、どうして3と表示されるのでしょうか? あともう一つ質問なのですが、GregorianCalendarに自分の好きな年月を与えたいのですが、 g.get( 1980 ); とすると実行時にArrayIndexOutOfBoundsExceptionのエラーがでます。 GregorianCalendarを使って任意の年月を渡すことは無理なんでしょうか? 私が最初考えたのが、画面から入力された値をそのままGregorianCarendarに渡して、もしもその時にエラーがでたらそれは妥当ではなかった値(閏年じゃないのに2月29日と入力したり、とか)として、画面にて再入力を促すメッセージをだそうと思っていたのですが、この考え方はどこか変でしょうか? お手数お掛けいたしますが、宜しくお願い致します<(_ _)>

    • ベストアンサー
    • Java
  • C言語でのプログラミングについて。

    C言語でのプログラミングについて。 プログラミング初心者です。年月日をパソコン本体から取得する方法が知りたいです。 具体的には、 int_year,month,day; year=○○○○; month=○○; day=○○; のような形にして、○の所にプログラムが自分で引っぱってくるようにしたいです。 初心者で分からない事だらけです。ご協力おねがいします。

  • Schemeのプログラミング うるう年関連

    Schemeのプログラミング うるう年関連 Schemeで、 「(1)閏年かどうかを判定する関数leap?(number -> boolean)を定義した後、(2)○年○月の日数は何日かを求める関数num-of-days(number number -> number)を定義せよ」 という内容の課題を出されたのですが、(例えば 2009年の7月→31日 2012年の2月→29日) どうもエラーが出て実行できません。 自分は以下のように組みました。 ;;(1)の関数 (define (leap? year) (cond [(= (remainder year 400) 0) #t] [(and (= (remainder year 4) 0)(> (remainder year 100) 0)) #t] [else #f] ) ) ;;(2)の関数 (define (num-of-days year month) (cond [(and (= month 2)(= (leap? year) #t)) 29] [(and (= month 2)(= (leap? year) #f)) 28] [(or (= month 1)(= month 3)(= month 5) (= month 7)(= month 8)(= month 10) (= month 12)) 31] [else 30] ) ) これを例えば (num-of-days 2008 4) や (num-of-days 1995 12) などとして実行すると、それぞれ30,31という正しい値を返してくれるのですが、 (num-of-days 2008 2) や (num-of-days 1995 2) など、閏年・非閏年に関係無く、2月が絡むと =: expects type <number> as 1st argument, given: false; other arguments were: true というエラーを吐いてしまいます。 何度も見直しましたが、どこが間違っているのか見付けきれません…。どなたか間違いを指摘して頂けると幸いです。

MFC-J720Dでの無線接続
このQ&Aのポイント
  • MFC-J720Dでの無線接続はできますか。方法を教えてください。
  • MacOSをお使いの環境で、MFC-J720Dの無線接続方法を教えてください。
  • 以前はUSBケーブルで接続していたMFC-J720Dを、無線接続に変更したいです。方法を教えてください。
回答を見る