PowerPoint図形を等間隔にする

この記事では、PowerPointでの資料作成に良く使う図形を簡単に等間隔にする方法を掲載しています。MOS取得者として基本的なことは抑えております。

この記事では、アニメーションを効率的に作るショートカットキーと、画面の切り替えで動きに彩を咥える方法を掲載しています。

動きのあるパワーポイントの基本的なことは抑えております。

急にプレゼンすることになったから手っ取り早くパワポ教えてくれ!に戻る
メインメニューに戻る
MOS、ITパスポート、簿記2級、基本情報技術者試験の参考書紹介へ

こちらに図形が雑然と並んでいます。これを自動で等間隔にします。
全ての図形を選択するには、最初の図形をクリックして、次の図形は[Shift]を押しながらクリックします。
4つ全て選択出来た状態で、

書式 → 配置 から、「左右に整列」を選び、「上下中央揃え」を選びます。


位置の微調整はカーソルキーの↓などで調整します。
何も無い所をクリックすると選択が解除できます。

この方法でも整列できますが、ガイドが表示されるので、そちらの方が使いやすい方は使いやすい方を選んでみてください。

最後までご精読ありがとうございました。

急にプレゼンすることになったから手っ取り早くパワポ教えてくれ!に戻る
メインメニューに戻る
MOS、ITパスポート、簿記2級、基本情報技術者試験の参考書紹介へ

東京都の新型コロナ感染者数を集計(平均、四捨五入、最大値、最小値、件数カウント、グラフ)

メインメニューに戻る
取りあえず事務職で働きたいから手っ取り早くExcel教えてくれ
急にプレゼン資料を作ることになったから手っ取り早くパワポ教えてくれ

資格トップへ
これからプログラミングをはじめる方へ
息抜きに、写真で癒し(=^・^=)

この記事を書いている令和3年1月30日現在、東京は緊急事態宣言の最中です。
気になっているのが2月7日に本当に解除できるか、です。
ほぼ無理な様なので、引き続き感染者数を都民として気にして見ます。
それでここ1週間の東京都の新型コロナ新規感染者数をExcelで簡単に集計して見ました。
数値は東京都のサイトから引用しました。

まず、平均を求めてみます。
セルE2のところに、「=AVERAGE(B4:B10)」と入力します。

このように求まりました。
ただ、小数点以下こんなに要らないです。小数点第1位まで求めるとして、
小数点第2位で四捨五入します。

そこで、「F2」キーを押して数式をこのように編集します。
=ROUND(AVERAGE(B4:B10),1)
切上げの場合は、ROUNDUP、切り下げの場合はROUNDDOWN、単に整数のみの場合は、INT関数を使います。

次にC4の所で、平均値以上だったら「平均以上」と表示して、違ったら「—」と表示させるようにします。
式をこのように入れます。
=IF(B4>=$E$2,”平均以上”,”—“)

$E$2は、絶対参照にしています。この平均以上の判定は1月29日まで使うので
平均値の位置が変わらないように絶対参照にしています。
セルC4の右下の四角をダブルクリックして、オプションを「書式なしコピー」にすると
こうなります。

次に最大値です。セルG2に「=MAX(B4:B10)」と入力します。
最小値はセルI2に「=MIN(B4:B10)」と入力します。

ちょっと関数から離れて、条件付き書式を設定します。
最大値最小値に書式を設定します。

人数を選択します。

条件付き書式を設定します。

セルの強調表示ルール → 指定の値に等しい

を選びます。

最大値を参照する様にして、書式は好きなのを選びます。

OKを押します。

最大値の人数に書式が設定されました。

同様にして最小値にも書式を設定しました。

では、関数に戻って1000人以上の回数を数えます。
K2に「=COUNTIF(B4:B10,”>=1000″)」と入力するとこのようになります。

では、日付を「1/23(土)」のような形式にします。
これはA4からA10の日付が入っている所を選択して[Ctrl]+[1!ぬ]を押します。

分類を「ユーザー定義」にして、種類を「m/d(aaa)」と入力します。
OKを押します。

このように書式が変わりました。
また、人数をカンマ区切りにするには、人数の範囲を選択して[Ctrl]+[Shift]+[1!ぬ]
と押すとカンマ区切りになります。

では、最後にグラフを作ります。
A3からB10までを選択します。

挿入 → グラフの右横の□→

すべてのグラフ 折れ線グラフ マーカー付き折れ線グラフ
を選択してOKを押します。

このようにシンプルなグラフが出来ました。

このグラフを見て気になる所は、400より下の数値が不要だということです。
なので、左側の1,200から0の範囲ならどこでも良いので、好きな所で右クリックをします。
右側に「字句の書式設定」が出るので、最小値を400にします。

これで、だいぶ見やすく成りました。

あとは、グラフが選択された状態で、

グラフツール → デザイン の右下から、好きなデザインを選べます。

色を変えたい時は、その左の「色の変更」から好きな色を選べます。

線のカクカクが気になる方は、折れ線部分を右クリックして、データ系列の書式設定を選んで、
バケツマーク、マーカー、スムージングを「レ」チェック入れます。

すると、カクカクが滑らかになりました。

このままでも良い場合もありますが、グラフシートを作りたい場合は、グラフを選択した状態で、デザインタブ→グラフの移動 を選択します。

新しいシートを選んで、好きなタイトルを入れます。

そうすると、このようにグラフシートになりました。

お好みでこのように装飾することも可能です。

最後までご精読ありがとうございました。
皆様のテレワークのお役に立てれば幸いです。
私は仕事柄、テレワーク出来ずに出社しています。
(オフピーク通勤、週三日、個人情報扱っている)

メインメニューに戻る
取りあえず事務職で働きたいから手っ取り早くExcel教えてくれ
急にプレゼン資料を作ることになったから手っ取り早くパワポ教えてくれ

資格トップへ
これからプログラミングをはじめる方へ
息抜きに、写真で癒し(=^・^=)

C言語構造体連結リストで東京-新潟間上越新幹線駅名を表示

C言語自作サンプルメニューへ
これからプログラミングをはじめる方へ
基本情報技術者試験トップへ
息抜きに(=^・^=)写真で癒し

おはこんばんにちは!
うにゃうにゃエンジニアの猫です(=^・^=)

C言語のラスボス??でしょうか。構造体とかポインタ、

連結リストをやり始めて( ;∀;)です。
そこで、好きな女優・グラビア・モデルで活躍する馬場ふみかさんのご出身の新潟から東京までの駅名を使った、上越新幹線のリストを作って勉強しようと思います。

私が東京から新潟に遊びに行くイメージで作ります。
上越新幹線の駅名を6つ選びました。

駅名、ポインタ(次の駅を指し示す)を構造体で定義します。
まずは上越新幹線がの駅を調べてみます。

1.東京
2.大宮
3.高崎
4.浦佐
5.燕三条
6.新潟

上越新幹線の路線はコチラから

この6つの駅に次の駅の場所を示すポインタを付けて表示して見ます。
このリストは駅名と次の駅のポインタがこのような図で表せます。

ポインタを逆向きにすると、新潟から東京に帰る駅の順番で逆向きに表示できます。

ではC言語でコードを書いて実行してみます。

実行結果です。

最後にコードはこのようになります。

最後までご覧頂きありがとうございました。
引き続きC言語の最後のレッスンを頑張ります。
もしも分からなくなったら、前に戻って勉強します(=^・^=)mm

C言語自作サンプルメニューへ
これからプログラミングをはじめる方へ
基本情報技術者試験トップへ
息抜きに(=^・^=)写真で癒し

C言語で日数計算と曜日求め

メインメニューへ
C言語環境設定からHelloWorldまで
これからプログラミングをはじめる方へ
基本情報技術者試験トップ
自己紹介
息抜きに、写真で癒し

おはこんばんにちは!
うにゃうにゃエンジニアの猫です(=^・^=)

今日はC言語で、ある日付から別の日付まで何日あるのかカウントするプログラムと、
それを利用して曜日を求めるプログラムを作ってみました。
良かったら使って下さいにゃっ!

その年の1月1日からの日数を計算します。
それには月ごとの日数の配列を作って利用しています。
例えば1月だったら+0、2月だったら+31…と加算日数が配列に入っています。
C言語は配列の要素が0から始まる為、配列の先頭の要素はダミーとして0が入っています。

開始日と終了日を年、月、日ごとに入力して、開始日が3月より前だったら、または終了日が3月以降だったら、
閏(うるう)年かどうか調べて、閏年だったら日付を1つ増やすように計算します。

開始日と終了日の年の差×365とうるう年の調整をして日数を求めました。
では実行して見ます。

今日は2021年(令和3年)1月23日です。
1年前の2020年1月23日までの日数を求めます。
2020年はうるう年で、2月29日が含まれるので、その分加算され、365+1で366日になります。

では、私が生れた1977年5月19日から今日までの日数を調べます。

うわぁぁぁ、こんなに生きているんだ。もっと1日1日丁寧に生きないと!!

ここまでのプログラミングのコードです。

#include <stdio.h>
//ここで引き算している
int hikizan(int start,int goal){
return goal-start;
}


//うるう年かどうかの判定をしている
int isLeapYear(int uruyear){
if((uruyear%4==0 && uruyear%100!=0) || uruyear%400==0){
return 1;
}else{
return 0;
}
}

int main(void)
{
//日付の開始日、終了日の変数
int yearstart,yeargoal,yeardif; //開始年、終了年、終了年-開始年
int monthstart,monthgoal; //開始月、終了月
int daystart,daygoal; //開始日付け、終了日付け
int uruFlg; //うるう年の判定フラグ
int count=0; //うるう年の回数
//月の配列。その年の1月1日からの日数
int tukihi[]={0,0,31,59,90,120,151,181,212,243,273,304,334};

//開始日の入力
printf(“開始日の年を入力してください。開始の年:yearstart=”);
scanf(“%d”,&yearstart);
printf(“開始日の月を入力してください。開始の月:monthstart=”);
scanf(“%d”,&monthstart);
printf(“開始日の日を入力してください。開始の日:daystart=”);
scanf(“%d”,&daystart);
printf(“——————————————-\n”);

//終了日の入力
printf(“終了日の年を入力してください。\n※開始日以降の日付を入力してください※\n終了の年:yeargoal=”);
scanf(“%d”,&yeargoal);
printf(“終了日の月を入力してください。終了の月:monthgoal=”);
scanf(“%d”,&monthgoal);
printf(“終了日の日を入力してください。終了の日:daygoal=”);
scanf(“%d”,&daygoal);

//もしも開始日>終了日だったら
if(daystart>daygoal){
printf(“終了日を開始日以降の日付にしてやり直して下さい。\n”);
return 0;
}
printf(“\n”);

//その年の1月1日からの日数
daystart+=tukihi[monthstart];
daygoal+=tukihi[monthgoal];

//開始年と終了年の差は何年あるか
yeardif=hikizan(yearstart,yeargoal);
//開始日の月が3月より前だったらその年が閏(うるう)年かチェックする
if(monthstart<3){ uruFlg=isLeapYear(yearstart); if(uruFlg==1){ daystart–; } }


//終了日の月が3月以降だったらその年が閏(うるう)年かチェックして、前の年の判定の順準備をする if(monthgoal>=3){
uruFlg=isLeapYear(yeargoal);
if(uruFlg==1){
daygoal++;
}
}
yeargoal–; //終了日の前年のうるう年判定をする準備

//終了日の前年から開始日の年までうるう年か調べる
for(int i=yeargoal;yeargoal>yearstart;yeargoal–)
{
uruFlg=isLeapYear(yeargoal);
if(uruFlg==1){
count++;
}
}
daygoal+=365*yeardif+count-daystart; //日数計算
printf(“%d日です。\n”,daygoal);
}

では、上のプログラムを利用して、曜日を求めてみます。
基準日は1970年1月1日とします。その日は木曜日なので、日数差を7で割った余りが0なら木曜日、
1なら金曜日…と配列に入力して曜日を調べます。


今日2021年1月23日は土曜日ですので、ちゃんと求まりました。

では、馬場ふみかさんが生れた1995年(平成7年)6月21日は何曜日か調べます。


水曜日ですね。

良かったちゃんと動いていた。
では、このプログラムのコードです。


#include <stdio.h>
//ここで引き算している
int hikizan(int start,int goal){
return goal-start;
}


//うるう年かどうかの判定をしている
int isLeapYear(int uruyear){
if((uruyear%4==0 && uruyear%100!=0) || uruyear%400==0){
return 1;
}else{
return 0;
}
}

//曜日を求める
int youbihantei(int nanyou){
return nanyou%7;
}
int main(void)
{

//日付の開始日、終了日の変数
int yearstart,yeargoal,yeardif; //開始年、終了年、終了年-開始年
int monthstart,monthgoal; //開始月、終了月
int daystart,daygoal; //開始日付け、終了日付け
int uruFlg; //うるう年の判定フラグ
int count=0; //うるう年の回数
int week; //曜日を表す配列の添え字

//月の配列
int tukihi[]={0,0,31,59,90,120,151,181,212,243,273,304,334};

//開始日(基準の日を1970年1月1日とする)
yearstart=1970;
monthstart=1;
daystart=1;

//曜日の配列。基準日との日数差を7で割った余りが0になるのが木曜日
char youbi[]={“木”,”金”,”土”,”日”,”月”,”火”,”水”};

printf(“年を入力してください。年:yeargoal=”); scanf(“%d”,&yeargoal); printf(“月を入力してください。月:monthgoal=”); scanf(“%d”,&monthgoal);
printf(“日を入力してください。日:daysgoal=”);
scanf(“%d”,&daygoal); printf(“\n”); //その年の1月1日からの日数 daygoal+=tukihi[monthgoal]; //開始年と終了年の差 yeardif=hikizan(yearstart,yeargoal); //終了日の月が3月以降だったらその

年が閏(うるう)年かチェックする if(monthgoal>=3){ uruFlg=isLeapYear(yeargoal); if(uruFlg==1){ daygoal++; } } yeargoal–; //終了日の前年から1971年までうるう年か調べる for(int i=yeargoal;yeargoal>yearstart;yeargoal–) { uruFlg=isLeapYear(yeargoal); if(uruFlg==1){ count++; } } daygoal+=365yeardif+count-daystart;
week=youbihantei(daygoal);

if(yeargoal<1970){
printf(“1970年1月1日以降の日付を入力してください。\n”);
}else{
printf(“%s曜日です。\n”,youbi[week]);
}
}

ご精読ありがとうございました(=^・^=)mm

メインメニューへ
C言語環境設定からHelloWorldまで
これからプログラミングをはじめる方へ
基本情報技術者試験トップ
自己紹介
息抜きに、写真で癒し

急にプレゼン資料を作ることになったから手っ取り早くパワポ教えてくれ!!!!!

この記事では、下記について書いています。
パワポ起動
タイトルの装飾
スマートアート
ページ番号
スライドショー

他の機能はこちらに掲載しています。

◆ 内容が多くなりそうなので、こちらはページを分けました。
図形を等間隔にする
アニメーションとページ切り替え

メインメニューに戻る
取りあえず事務職で働きたいから手っ取り早くExcel教えてくれ

MOS、ITパスポート、簿記2級、基本情報技術者試験の参考書紹介

おはこんばんにちは!
うにゃうにゃエンジニアの猫です(=^・^=)
この記事は旧PowerPoint仕事術をもっと初心者向けに書き直しています。

◆パワポ起動

デスクトップ上にパワポのアイコンが無い場合は、下記の設定をすると便利です。

WindowsPCの場合ですが、左下のウィンドウマークの横に「ここに入力して検索」という所があります。
そこに「po」と入力をします。「po」はPowerPointの先頭2文字です。

すると、アプリの候補が出るので、PowerPointと書かれた所を右クリックして、「タスクバーからピン止めを…」と言う所を
クリックしてください。これでタスクバーから起動できるようになり、複数の作業をしていても起動しやすく成ります。

起動後「新しいプレゼンテーション」をクリックして下さい。

その後、まだ何も作っていないですが保存をします。
その理由は急いでいる時こそ保存をこまめにする必要があるからです。

ファイル → 名前を付けて保存 → 参照

を選びます。
適切な場所に保存します。
保存が一番大事なので作業中は適宜、[Ctrl] + [s] で保存して下さい。

◆ テーマに合ったデザインを選び

デザインを押すと、ここの下向き三角があるので、それを押すとデザインが沢山出て来ます。
好きなデザインを選びます。

◆ タイトルと名前を入れ

見映えが悪いのでタイトルを左端に、名前を右端に揃えます。
タイトルの枠を選択して、ホームをクリックします。

ここで位置を調整します。

名前が上に寄っているので、下にしたい場合は、文字の配置で調整します。

少し殺風景なのでタイトルを装飾します。

先ほどと同じようにタイトルの枠を表示させます。
書式から装飾できます。

こんな感じで装飾しました。
角を丸くしたい場合は、書式タブの図形の編集から行います。

透明にしたい場合や立体的にしたい時は図形の効果から選びます。

新しいスライドを用意して次のページに取り掛かります。

スライドを入れていよいよ作成!

次のページを作ります。
ホーム→ 新しいスライドでも行けますが、良く使うので[Ctrl]+[M]を覚えておいた方が便利です。


タイトルを入れてスマートアートを呼び出します。
スマートアートは挿入タブのメニューからも呼び出せます。

スマートアートを入れてみる

スマートアートから目次を作ります。

装飾して見ます。

スマートアートをクリックして、デザインタブから色の変更などを選びます。

目次を入力します。
ここの矢印を押すと目次の入力が出来ます。

◆ ページ番号を入れる

挿入→スライド番号を選びます。

スライド番号、タイトルスライドに乗じしないにチェックを入れて、すべてに適用を押します。

少しページ数が小さくて地味な感じがしますので、見やすくします。

表示 → スライドマスタ を選びます。

サムネイルにカーソルを合わせるとスライド2で使われていることが確認出来ます。

右下のページの所を選択して枠を表示させたら書式メニューで装飾をします。
文字の太さや大きさはホームタブから調整て来ます。

スライドショーのショートカットキー
先頭からは【F5】
そのスライドから【Shift】+【F5】
使わないスマートアートの項目は【Back Space】で削除出来る。

メインメニューに戻る
取りあえず事務職で働きたいから手っ取り早くExcel教えてくれ
プログラミングと資格
基本情報技術者試験トップ
息抜きに、写真で癒し

C言語構造体で昨日の新型コロナ感染者数

C言語自作サンプルメニューへ
これからプログラミングをはじめる方へ
基本情報技術者試験トップへ
息抜きに(=^・^=)写真で癒し

おはこんばんにちは!うにゃうにゃエンジニアの猫です(=^・^=)
構造体について学んだので早速アウトプットするにゃっ!
学んでいくうちにこのプログラムをちょっとずつ改良出来ると思います。

この記事を書いているのは令和3年1月21日なので、昨日の新型コロナの感染者数を、
場所と人数と言った構造体を使ってプログラミングをしてみました。

感染者数はNHK新型コロナウイルス特設サイトから引用しました。

早速実行します。

こんな感じで実行できました。

ではプログラムです。

#include <stdio.h>

struct corona{
char city[20];
int people;
};


int main(void){

struct corona tokyo={“東京”,1274};
struct corona hokkaido={“北海道”,164};
struct corona osaka={“大阪”,506};

printf(“2021年1月20日の感染者数\n”);

printf(“%sの感染者数は%d人です。\n”,tokyo.city,tokyo.people);
printf(“%sの感染者数は%d人です。\n”,hokkaido.city,hokkaido.people);
printf(“%sの感染者数は%d人です。\n”,osaka.city,osaka.people);

}

ご覧になって分かるように、printf関数を3回も使っているので、ここは学んでいく過程で近いうちに改良できそうです。

追記
構造体配列について学んだので、要素数を追加してプログラミングして見ました。
実行結果です。

プログラムです。

#include <stdio.h>

//構造体の宣言 typedefで[struct corona]を「CORO」に省略
typedef struct{
char city[20];
int people;
}CORO;


int main(void){

CORO tokyo={“東京都”,1471};
CORO hokkaido={“北海道”,130};
CORO osaka={“大阪府”,501};
CORO saitama={“埼玉県”,436};
CORO kanagawa={“神奈川県”,731};

//構造体配列の要素
CORO corona[5];
corona[0]=tokyo;
corona[1]=hokkaido;
corona[2]=osaka;
corona[3]=saitama;
corona[4]=kanagawa;

printf(“2021年1月21日の感染者数\n”);

//ループで各都市における感染者数を取り出す
for(int i=0;i<5;i++){
printf(“%sの感染者数は%d人です。\n”,corona[i].city,corona[i].people);
}
}

ご精読ありがとうございました!

C言語自作サンプルメニューへ
これからプログラミングをはじめる方へ
基本情報技術者試験トップへ
息抜きに(=^・^=)写真で癒し

C言語のポインタって怖いの?怖くないの?

C言語自作サンプルメニューへ
これからプログラミングをはじめる方へ
基本情報技術者試験トップへ
息抜きに(=^・^=)写真で癒し

おはこんばんにちは!うにゃうにゃエンジニアの猫です(=^・^=)
ITの先輩方からC言語にはポインタっていうものがあって、それがラスボス?か大ボスみたいに大変だと聞きました。
なので、ゆっくり基礎から覚えたことを復習します。

※超超超初心者の備忘録な為、厳密には正確では無いかもしれませんが、
そういう風に理解しているんだなぁと、あたたかい目で見て下さい。

変数aというint型の変数があって、その値が5だとします。
その例を考えてみます。この図を書きました。


右側に変数aを用意しました。値は5です。

変数aは主記憶に格納されていて、変数aがある主記憶の場所には東京都新宿区何丁目…みたいな住所のような物があります。
その住所みたいなものをアドレスって言います。
仮にそのアドレスを100番地とします。


左側には変数aのアドレスを値として持つポインタpがあります。

また、p自体にも北海道稚内市何丁目…みたいなアドレスがあります。
そのアドレスを300番地とします。

ポインタpが見ているアドレスの中身(住人)はaの値で5です。
これをポインタが見ているというのを表す表記として*pを使います。
*p=5になります。

…と、文章と図だけだとイマイチ分かりづらいので、それをプログラミングしてうちのパソコンではどんな感じになるのか調べてみたいと思います。

実行結果です。

プロうグラムはこちらになります。

#include <stdio.h>
int main(void){
int a=5;
int p;    //ポインタ宣言

p=&a;   //ポインタpはaのアドレスを格納

//これらは等しい。aの値を示す
printf(“aの値…a=%d\n”,a);
printf(“pが見ている値…p=%d\n\n”,*p);

//これらは等しい。aのアドレスを示す。
printf(“aのアドレス…&a=%p\n”,&a);
printf(“ポインタpの値…p=%p\n\n”,p);

//これはpが格納されているアドレス。
printf(“ポインタpのアドレス…&p=%p\n”,&p);
}

これで私のアタマはスッキリしました。
ご精読ありがとうございました(=^・^=)

C言語自作サンプルメニューへ
これからプログラミングをはじめる方へ
基本情報技術者試験トップへ
息抜きに(=^・^=)写真で癒し

C言語で「ねこ」おみくじを作ってみた

C言語自作サンプルメニューへ
これからプログラミングをはじめる方へ
基本情報技術者試験トップへ
息抜きに(=^・^=)写真で癒し

おはこんばんにちは!うにゃうにゃエンジニアの猫です(=^・^=)
今日は、ねこみくじなるものを作りました。
おみくじの猫版です。

・ホワッツマイケル
・ナメネコ
・うちのタマ知りませんか
・ねこあつめ
・にゃんこ大戦争

といった猫にまつわる作品をランダムに表示させます。
といった、猫好きさんの猫ツボを刺激する以外は、
何の役にも立たない乱数プログラムを作りました。

配列 nekoretsuの各要素、要素番号の先頭を[0]として、
[0]ホワッツマイケル
[1]ナメネコ
[2]うちのタマ知りませんか
[3]ねこあつめ
[4]にゃんこ大戦争

という配列を用意します。
その要素番号をランダムな数にすると、猫のおみくじが出来上がります。
乱数を発生させてその乱数を配列の添え字にして、配列の中身の文字列を取り出します。

配列の要素数は5なので、ランダムな数の5で割った余りは、余り0~4になりますので、
各要素番号が乱数になる仕組みです。

では、何が出るかな…。

1回目は
「ナメネコ」

2回目は
「ねこあつめ」

これは猫好きな方にしか分からないかもしれませんが、猫の作品の名前をみるだけで、
うにゃ~~~~~つ(=^・^=)ってなるんです。

コードはこちらになります。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int main(void){

srand((unsigned int)time(NULL)); //現在の時刻で乱数の初期化

char *nekoretsu[5]={“ホワッツマイケル”,”うちのタマ知りませんか”,”ナメネコ”,”ねこあつめ”,”にゃんこ大戦争”};

int num=rand()%5;
printf(“%s”,nekoretsu[num]);

}

ではでは、ご精読ありがとうございました、にゃん!

C言語自作サンプルメニューへ
これからプログラミングをはじめる方へ
基本情報技術者試験トップへ
息抜きに(=^・^=)写真で癒し

C言語で和暦と干支を求める+追加で閏(うるう)年判定

C言語自作サンプルメニューへ
これからプログラミングをはじめる方へ
基本情報技術者試験トップへ
息抜きに(=^・^=)写真で癒し

おはこんばんにちは、うにゃうにゃエンジニアの猫です(=^・^=)
年賀状を書く時期にはちょっと使えるかもしれないプログラムを作りました。

年号を入れると令和何年とか干支は何だとか求められるプログラムです。
例えばこの記事を書いているのは2021年です。西暦に2021と入力して見ます。


このように「令和3年、うし年」と求まりました。
干支を文字列の配列で初期化して、西暦年を12で割った余りを配列の要素として求めています。
12で割り切れる(割った時の余りが0になる)のが直近だと2016年さる年です。
なので、要素番号は0から始まり、配列の先頭の[0]をさる年、[1]をとり年…としています。

昭和、平成、令和をwareki年として、昭和だったら西暦マイナス1925、平成だったら西暦マイナス1988、令和は西暦-2018と
計算しています。この辺はIFとElse ifなどの分岐を使っています。

至ってシンプルですが、どなたかのお役に立てるのかなぁ…。

では、動作確認で他の年も調べてみます。
1995年はワガハイが大好きな馬場ふみかさんが生れた年です。
1995を入力して見ます。

あと、昭和では自分の生まれた年で動作確認して見ます。

プログラムはこちらになります。


#include <stdio.h>
int etosirabe(int nen){
return nen%12;
}
int main(void){
char *jyunisi[12]={“さる”,”とり”,”いぬ”,”いのしし”,”ね”,”うし”,”とら”,”うさぎ”,”たつ”,”へび”,”うま”,”ひつじ”};
char *gengo;
int year,eto,wareki;
printf(“調べる年を西暦で入力=”);
scanf(“%d”,&year);
eto=etosirabe(year);
if(year>=1989 && year<=2018){ gengo=”平成”; wareki=year-1988; }else if(year>=2019){
gengo=”令和”;
wareki=year-2018;
}else{
gengo=”昭和”;
wareki=year-1925;
}
printf(“%d年は%s%d年で干支は「%s年」です。”,year,gengo,wareki,jyunisi[eto]);
}

あとは、このプログラムをちょっとずつ改良していきたいと思います。
基本情報技術者試験を勉強して、プログラムはどんどん改良していくことで自分の力になることを学びました。

追記 2021年1月19日
このプログラムにうるう年を求める処理を追加しました。
コメントの所が追加変更した所です。
画像では赤枠でくくっています。

#include
int etosirabe(int nen){
return nen%12;
}
//ここを追加。うるう年を求める関数
int isLeapYear(int uruyear){
if((uruyear%4==0 && uruyear%100!=0) || uruyear%400==0){
return 1;
}else{
return 0;
}
}
int main(void){
char *jyunisi[12]={“さる”,”とり”,”いぬ”,”いのしし”,”ね”,”うし”,”とら”,”うさぎ”,”たつ”,”へび”,”うま”,”ひつじ”};
char *gengo;
char *uruJadge;
int year,eto,wareki;
int uruFlug;
printf(“調べる年を西暦で入力=”);
scanf(“%d”,&year);
eto=etosirabe(year);
if(year>=1989 && year<=2018){ gengo=”平成”; wareki=year-1988; }else if(year>=2019){
gengo=”令和”;
wareki=year-2018;
}else{
gengo=”昭和”;
wareki=year-1925;
}
//ここでうるう年を調べる関数を呼び出す
uruFlug=isLeapYear(year);
if(uruFlug==1){
uruJadge=”うるう年です。”;
}else{
uruJadge=”うるう年ではありません。”;
}
//表示を変更
printf(“%d年は%s%d年で干支は「%s年」です。\n%s\n”,year,gengo,wareki,jyunisi[eto],uruJadge);
}

では、実行結果を見てみます。
馬場ふみかさんが生れた1995年の実行結果です。

次に2100年を見てみます。
うるう年は4で割り切れ且つ100で割れない、または400で割れる年です。
なので2100年はうるう年にはならないです。

令和82年とか、まぁ、私はいないです。

最後に400で割れる2000年を見てみます。

ご精読ありがとうございました。

C言語自作サンプルメニューへ
これからプログラミングをはじめる方へ
基本情報技術者試験トップへ
息抜きに(=^・^=)写真で癒し

飲み込みの遅い私がアルゴリズムを攻略するまで

この記事では、基本情報技術者試験で配点が高くなったアルゴリズムの攻略法を書いています。トレースのやり方や、やっておくべき過去問3選もあるので、ぜひお役立て下さい。

基本情報技術者試験トップ
アルゴリズム無料教材
CBT試験(午前免除午後試験)お役立ちリンク集
午前免除試験
これからプログラミングをはじめる方へ



基本情報技術者試験のアルゴリズム問題の疑似言語が読めないのは、必ず原因があって読めない、ということに気づきましたのでそれをシェアしたいと思います。
私は「要領の悪さ」と「どんくささ」でしたら、少なくともあなたには負けない自信があります!!
そんな私が、何故今まで自分は疑似言語が読めなかったのかを分析してまとめましたので、もしも参考に出来そうな所がありましたら、持って帰って下さい。

●混乱による理由
疑似言語の日本語によるプログラムの説明文でいろいろと難しそうな英字が出て来ますけれど、「それが変数なのか、配列なのか、プログラム(関数)名なのか」分からないと混乱します。
なので、配列の場合はhairetsu[]など、[]を書くことにしました。
また、どこを見ているのか分からなくなったので、左手でマウスを操作して、読んでいる所にカーソルを合わせ、右手でペンを持ってトレースする練習をしました。

●遅い
トレースが遅くて悩んでいました。それは配列の場合、どの要素番号なのか分からなくなってしまっていました。
そこで、例えばhairetsu[]={100,200,300,400,500}で配列の要素が0から始まる場合は、[0]と書いて、{100,200,300,400,500}の真上に0,1,2,3,4と配列の要素番号を書き、更にその右に「5」と配列の長さを書きました。
これにより解ける問題も出て来るかも知れません。
また、訓練によってトレースは早くなります。そこで、同じ過去問をじっくり解くという勉強を×3やりました。
そのプログラムを覚えてしまうぐらい繰り返してから次の過去問に行きました。
期間として1週間同じアルゴリズムを解きました。

●間違える
ミスを防ぐためには、変数の中でも関数が戻り値として返す変数に◯を囲いました。
私は引数、戻り値が良く分からなかったので、どこかで聞いたことのある例と対応付けました。カレーライスを作るプログラムが、処理の中でカレー鍋というプログラムを呼び出し、引数として(かっこ)の中に(じゃがいも、ニンジン、などなど)の具材を入れます。そこで戻り値として料理が出て来ます。
アルゴリズムが出来なかった頃の私は、カレー鍋の中に何の材料も入れないで、カレーライスを食べたい、何で出てこないの??あ、まちがってラーメン作っちゃった、という失態をしていました。

●テクニック
プログラムを読みやすくするテクニックとして、本文を良く読んで、何をやっているプログラムなのか日本語の説明文から掴む→
先に選択肢を見る→コメントとその対応のプログラムを見る→それからプログラム自体を見るという順番で解きました。

●CBTの画面上でのトレース
この本の読者特典に「動く疑似言語」といって、PowerPointを使った特典が付いています。


基本の整列、探索などのアルゴリズムの動きを画面上でトレース出来るので、令和2年度以降のCBT試験の対策として役立ちます。また本自体も解説が分かりやすいので、私はこの本でアルゴリズムのトレースを学びました。
若干扱っている年度が古いので、このあと紹介する比較的最近の過去問も合わせてやっておくと自信付くと思います。

●計算用紙でトレース
アルゴリズムを始めた頃はExcelで枠を作ってこの様に作っても良いと思います。

しかし、試験近くなって来たらA4用紙の中央に線を引いてその状態でこの様にトレースを出来るようなるまで練習あるのみです。

試験1週間前の元旦(令和3年1月1日)に解いたアルゴリズムです。

関連リンク:平成27年秋過去問ノート

関連リンク:平成29年春午後過去問ノート

●やっておくべき過去問3選
過去問どれからやるべきか迷う所です。そこでグズでノロマな私が無理なくアルゴリズム攻略出来るのに特に役立った過去問を3選紹介します。
※私の独断と偏見です。

第1位平成30年秋
このアルゴリズムは四則演算なので、+-×÷が分かればそれ以上の知識は要らずにトレース出来ます。なので、トレースのみに集中できて、すごくトレースの練習になります。
関連リンク:平成30年秋午後過去問ノート

第2位平成27年秋
このアルゴリズムは検索です。
配列の要素の比較をしてずらしながら検索して行きます。
こういった処理は基本情報技術者試験の良くあるパターンなのでこの試験の攻略するために練習になる問題です。

関連リンク:平成27年秋午後過去問ノート

第3位平成29年春
これはちょっと難易度が高いアルゴリズムですが、これを攻略出来たら自信もって良いと思います。経路探索、ダイクストラ法と呼ばれるアルゴリズムを使っています。
頭が混乱するかもしれませんが、アルゴリズムを攻略できたかどうかの要となる過去問だと私は思います。

関連リンク:平成29年春午後過去問ノート

最後にアルゴリズムの攻略や読んでいて面白いと思った本を紹介します。
すべて同じ著者、矢沢久雄先生の本です。(回し者では無く、良いものは良いと思ったので紹介致します。)

実際に作りながら学べますので、先の本と並行して学ぶと非常に面白いと思います。
javaとCに対応しています。(C言語はこの本のリンクからダウンロードで入手可能)

C言語なるほど実験室
基本情報技術者試験の範囲も扱っている実験を通して、プログラムの流れをつかめます。

関連記事

基本情報技術者試験トップ
アルゴリズム無料教材
CBT試験(午前免除午後試験)お役立ちリンク集
午前免除試験
これからプログラミングをはじめる方へ