最近はPHPのお勉強は影をひそめ、Cばかりやっています。人間波というのはあるのですね。
高校で、情報という教科を担当しているために、校内Webページを利用した授業を行っています。そのため、校内WebサーバにPHPを入れて、生徒にアンケートなどさせています。なので、PHPを利用することは必要不可欠?
ただ、やっぱりプログラムの基礎を身につけたい思いから、C言語を勉強しているのですが、将来的には勤務している学校からパソコン甲子園に出場したい考えです。
そのための準備として、現在自分でパソコン甲子園の問題を考えているのですが、本職のプログラマの人であれば、1時間くらいで予選問題なんてできるんだろうな~と思いながら日々格闘しています。
そこで、今回パソコン甲子園2007予選問題04問と関連して、以下の問題を考えています。
0と1のみの文字列から連続する1の個数の最大値を求める
*** 「かめかめPHP」運営中 ***
高校で、情報という教科を担当しているために、校内Webページを利用した授業を行っています。そのため、校内WebサーバにPHPを入れて、生徒にアンケートなどさせています。なので、PHPを利用することは必要不可欠?
ただ、やっぱりプログラムの基礎を身につけたい思いから、C言語を勉強しているのですが、将来的には勤務している学校からパソコン甲子園に出場したい考えです。
そのための準備として、現在自分でパソコン甲子園の問題を考えているのですが、本職のプログラマの人であれば、1時間くらいで予選問題なんてできるんだろうな~と思いながら日々格闘しています。
そこで、今回パソコン甲子園2007予選問題04問と関連して、以下の問題を考えています。
↓↓↓ ヽ(^◇^*)/ ↓↓↓
|
PR
地球上の2点間の距離を計算するプログラムを組んでいることろですが、基本的な計算方法は昨日の考え方でプログラムが組めたのですが・・・
最後に、求めた距離を少数第1位で四捨五入せよというもの。
四捨五入する位がすでに分かっているので、
double num;
scanf("%f",&num);
printf("%.0f\n",num);
上記のようにprintfのところを%.0fにしておけばよい。
これで、パソコン甲子園2008予選問題05問が解けたので、「かめかめPHP」にソースコードを公開しておきました。
*** 「かめかめPHP」運営中 ***
最後に、求めた距離を少数第1位で四捨五入せよというもの。
四捨五入する位がすでに分かっているので、
double num;
scanf("%f",&num);
printf("%.0f\n",num);
上記のようにprintfのところを%.0fにしておけばよい。
これで、パソコン甲子園2008予選問題05問が解けたので、「かめかめPHP」にソースコードを公開しておきました。
↓↓↓ ヽ(^◇^*)/ ↓↓↓
|
経度、緯度の与えられている地球上の2点間の距離を求め方。
上記の場合球面上の点が極座標で表されているということ。
それを、直交座標に書き直すと次のようになる。
経度をφ、緯度をθとすると、
となる。よって、2点間の直交座標を

とすると、2点間の直線距離は
となる。
よって、角AOBをδとして、δを求めると、
となるので、地球上の2点間の距離は

となる。
*** 「かめかめPHP」運営中 ***
上記の場合球面上の点が極座標で表されているということ。
それを、直交座標に書き直すと次のようになる。
経度をφ、緯度をθとすると、
|
|
|
とすると、2点間の直線距離は
となる。
よって、角AOBをδとして、δを求めると、
|
|
|
となる。
↓↓↓ ヽ(^◇^*)/ ↓↓↓
|
やっとのことで、パソコン甲子園2008予選問題4の解答例を作ることができました。私のWebページに載せておきました。
さて、今度は問題5に取り掛かろうと思ったら…
これって、結局球面を極座標表示であらわして、球面上の2点の球面にそった距離を求めろ!ってことですよね。2つの角度から距離を求める…
これは、数学の問題ですね(_ _,)/~~
数学の問題とならば、結構燃えます。紙と鉛筆を取り出して、微分積分を駆使して…
…
休憩します。
*** 「かめかめPHP」運営中 ***
さて、今度は問題5に取り掛かろうと思ったら…
地球上の 2都市の北緯と東経を入力とし、地表距離を計算して出 力するプログラムを作成してください。ただし、地球は半径 6,378.1km の球とし、2点間の地表距離とはこの球面に沿った最短距 離です。また、南半球でも南緯は用いずに北緯 0~-90 度を用い、 グリニッジ子午線の西でも西経は用いずに東経 180~360度を用いる こととします。地表距離は km単位で求め、小数点以下は四捨五入 し、整数値として出力してください。
パソコン甲子園2008予選問題より
これって、結局球面を極座標表示であらわして、球面上の2点の球面にそった距離を求めろ!ってことですよね。2つの角度から距離を求める…
これは、数学の問題ですね(_ _,)/~~
数学の問題とならば、結構燃えます。紙と鉛筆を取り出して、微分積分を駆使して…
…
休憩します。
↓↓↓ ヽ(^◇^*)/ ↓↓↓
|
昨日に引き続き、ポインタを使った文字列の分割に挑戦してみた。
あたえたカラーコード#ffaa00から赤のff、緑のaa、青の00に分割する。下にソースあり。
これと、以前の記事のものをうまくつなげれば、さらに一歩目的に近づきそう 。('-'。)(。'-')。
*** 「かめかめPHP」運営中 ***
ここからソース
それでは実行結果
あたえたカラーコード#ffaa00から赤のff、緑のaa、青の00に分割する。下にソースあり。
これと、以前の記事のものをうまくつなげれば、さらに一歩目的に近づきそう 。('-'。)(。'-')。
↓↓↓ ヽ(^◇^*)/ ↓↓↓
|
ここからソース
#include‹stdio.h›
#include‹stdlib.h›
#include‹string.h›
int main(){
char s[80],rgb[3][80],*r,*g,*b;
int n;
strcpy(s,"#ffaa00");
strcpy(rgb[0],s);
strcpy(rgb[1],s);
strcpy(rgb[2],s);
r=rgb[0];
g=rgb[1];
b=rgb[2];
r=r+1;
*(r+2)='\0';
g=g+3;
*(g+2)='\0';
b=b+5;
*(b+2)='\0';
strcpy(rgb[0],r);
strcpy(rgb[1],g);
strcpy(rgb[2],b);
printf("red:%s\n",rgb[0]);
printf("green:%s\n",rgb[1]);
printf("blue:%s\n",rgb[2]);
return 0;
}
|
それでは実行結果
red:ff green:aa blue:00 |
