学校の課題で、プログラミングの課題が出ました。
標準入出力(printf、scanf)、繰り返し(forまたはwhile)、条件分岐(if)、配列を使えと言うことです。
これを使ったプログラムはどのようなものがあるんでしょうか?よければ教えて頂けないでしょうか?
よろしくお願いしますm(_ _)m

A 回答 (1件)

定番でよければ



じゃんけんゲームを繰り返し行うプログラム
ひらがなで「ぐー」「ちょき」「ぱー」
もしくは数字で「1(ぐー)」「2(ちょき)」「3(ぱー)」を入力してもらって
ランダムでプログラムが出した手とじゃんけんを繰り返す

「おわり」や「0」と入力するとプログラムが終わるようにするといいと思います
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

QCのプログラムに無性にイライラするのはおかしいですか?

CQ出版のインタフェース 2017-5 の記事のプログラム例に
for( i=0; i<256; i++){
 for( y =0; y < Y; y++ ){
  for( x = 0; x < X; x++){
   p[0] = img -> imageData[img->widthStep* y + x*3 ]; //B(青色)
   if(p[0]==i){hn[i]++;}
  }
 }
}
がありました。このリストを見て、無性にイライラするのは私だけでしょうか?

なぜ、i,y,x の3重のループで処理しないといけないのか、y,xの2重ループで十分ではないかと思います。

for( y =0; y < Y; y++ ){
 for( x = 0; x < X; x++){
  p[0] = img -> imageData[img->widthStep* y + x*3 ];  //B(青色)
  hn[ p[0] ]++;
 }
}

3重にするならせめて、y,x,i の順にしてp[0]への代入は1回で済ませればと思います。

for( y =0; y < Y; y++ ){
 for( x = 0; x < X; x++){
  p[0] = img -> imageData[img->widthStep* y + x*3 ];  //B(青色)
  for( i=0; i<256; i++){
     if(p[0]==i){hn[i]++;}
  }
 }
}

最近のコンパイラの最適化では、私の書いたようなコーディング(修正?)は無意味なのでしょうか?

CQ出版のインタフェース 2017-5 の記事のプログラム例に
for( i=0; i<256; i++){
 for( y =0; y < Y; y++ ){
  for( x = 0; x < X; x++){
   p[0] = img -> imageData[img->widthStep* y + x*3 ]; //B(青色)
   if(p[0]==i){hn[i]++;}
  }
 }
}
がありました。このリストを見て、無性にイライラするのは私だけでしょうか?

なぜ、i,y,x の3重のループで処理しないといけないのか、y,xの2重ループで十分ではないかと思います。

for( y =0; y < Y; y++ ){
 for( x = 0; x < X; x++)...続きを読む

Aベストアンサー

利点を考えてみました


これを並列処理したときに
スレッド0: hn[0] に p[0] = 0 をカウント
スレッド1: hn[1] に p[0] = 1 をカウント
...
とすれば、
・img -> imageData は読み出すだけなので衝突しない
・hn[i] でアクセスする領域は、スレッド毎に i が違うので、同じ箇所に書き込まれることはない。
となり、排他処理が不要となります。
(もちろん、x,y,i,p[0]はスレッドでローカルな変数とします)

ただ、並列処理のオーバーヘッドや同時並列処理数等を考えると、こんな並列処理はしない方が効率的です。


あるいは、hn[]がシークに時間がかかる領域の場合、
hn[p[0]) で毎回違う位置を探しに行って、その時間が無視できないほどだったら、
先にhnを決めてしまった方が速くなるでしょう。

こちらも、非現実的です。

Qパソコンに使われているn進法は、2進法 16進法 だけですか

パソコンに使われているn進法は、2進法 16進法 だけですか

Aベストアンサー

内部的には…ってのは回答ついているのでいいとして。

表現(表記)の…ってことなら8進数とかもありますかね。
C言語で桁揃えに先頭に0を付けて揃えよう。
なんてやるとハマるわけですが。

QVisual Studio C#

public decimal PlanPrice
{
get
{
int x = 0;
decimal a;
a = (decimal)x;
return Settings.Default.PlanPrice;
}
}
public decimal ResultPrice
{get;private set;}
public decimal SubtractPrice
{
get
{
return ResultPrice - PlanPrice;
}
}
public decimal TotalPrice
{
get
{
decimal p =
_previousModel == null ?
0 :
_previousModel.TotalPrice;
return p + SubtractPrice ;
}
}
public decimal PercentComplete
{
get
{
return ResultPrice / PlanPrice;
}
}

↑のコードで達成率をResultPrice / PlanPriceで出そうと思ったのですが1月のように値が出ないのと、decimal型で書いているのに少数が出ないのはどうしてでしょうか?

public decimal PlanPrice
{
get
{
int x = 0;
decimal a;
a = (decimal)x;
return Settings.Default.PlanPrice;
}
}
public decimal ResultPrice
{get;private set;}
public decimal SubtractPrice
{
get
{
return ResultPrice - PlanPrice;
}
}
public decima...続きを読む

Aベストアンサー

https://oshiete.goo.ne.jp/qa/9843253.html

doubleがdecimalになっても同じです。

「public decimal PercentComplete」自体は小数点以下まで計算した値を返しているはずです。
なので、この部分だけ見せられても、原因はわかりません。

・PercentCompleteは 比率であって、百分率にはなっていないように見えます。
これを 100倍にするような計算をしているはずです。
それが int p = PercentComplete * 100 ; みたいにintで受けたりしてませんか?

・その表を表示するのに、どんなコントロールを使っているかがわかりませんが、
Columns[達成率].Format ="#,###,###" ;
みたいな感じの書式設定されていたりしませんか?
(.Netの書式設定がそのまま使えるとして)
https://msdn.microsoft.com/ja-jp/library/0c899ak8(v=vs.110).aspx#SpecifierD
上記書式だと、 小数点以下は表示されないし、 #の機能により整数部が 0 の場合は表示されません
1月が空欄なのは、 小数点以下非表示、整数部の0も表示されない、という状態なのでは

https://oshiete.goo.ne.jp/qa/9843253.html

doubleがdecimalになっても同じです。

「public decimal PercentComplete」自体は小数点以下まで計算した値を返しているはずです。
なので、この部分だけ見せられても、原因はわかりません。

・PercentCompleteは 比率であって、百分率にはなっていないように見えます。
これを 100倍にするような計算をしているはずです。
それが int p = PercentComplete * 100 ; みたいにintで受けたりしてませんか?

・その表を表示するのに、どんなコントロールを使っているか...続きを読む

Q人にガソリンをかけてマッチの火を近づけても引火しない理由

【社会】[速報]姉に灯油をかけ火を付けようとした妹を殺人未遂で逮捕 - 青森
上のこの記事を読んで不思議に思いました。ガソリンは着火剤を混ぜないとそれ単独では引火しないのですか?
ガスはガス漏れした時のために本来はない匂いをつけてると聞いたことがありますがガソリンも引火しないように何か混ぜたものをガソリンとして売っているのですか?

Aベストアンサー

ネタは「青森」にありますし、あなたはガソリンが思ったほど火が点きにくい事を知らない。今は暑いがその時暑かったかどうか分からない。だから「大いにありうる話」です。

Qおにぎりをサランラップ+アルミホイルで包む意味はあるの? アルミホイルって何のためにしてるの? 科学

おにぎりをサランラップ+アルミホイルで包む意味はあるの?

アルミホイルって何のためにしてるの?

科学的に何か意味があるの?

Aベストアンサー

握って、包んでから、すぐに食べる場合は、アルミホイルとラップではそれほど差がつかないようですが、5時間程度経ってから食べる場合はアルミホイルの方がおいしいらしいです。
理由は、はっきりしませんが、アルミホイルの場合は、熱伝導率が高い為に、早くおにぎりが冷える事と、完全に密閉されない為に、おにぎりが蒸れない事が原因では無いかと思われます。
ラップの場合は、ほぼ完全に密閉される為に、米が蒸れてくっついてしまう現象が起きる可能性があります。
アルミホイルの場合は、その度合いが少ない為、米の粒がくっつきにくく、おにぎりのふっくら感が違うと言う意見があるようです。

QC/C++言語で変数名から変数のアドレスを取得する方法があれば、ご教示願います。 例えばですが、関数

C/C++言語で変数名から変数のアドレスを取得する方法があれば、ご教示願います。

例えばですが、関数GetProcAddress()は、関数の文字列からエクスポート済みの関数のアドレスを戻り値で返しています。
GetProcAddress()と同じようにアドレスを取得したい変数名の文字列を渡して、変数のアドレスを取得したいです。

よろしくお願いします。

Aベストアンサー

無理です。

C/C++ はコンパイルした時点で変数名は捨てられて自動採番の識別子に置き換えられるので。

ただし、「どうしても変数名から」というときのために「マクロ引数の文字列化」を巧みに利用してそれらしい挙動をさせるためのコードはよく見ます。
詳しくはググってください。

参考になればよろしいんですが。

QC言語はどこまでゲームを作り込むことができますか?

ゲームを作っているのですが、使用しているソフトではパフォーマンスに少し満足できません。
なのでC言語を学ぼうと思ったのですがC言語は、例えばACTが作れるとか、どのくらいまで作れるとか。
逆にRPGとかは作れないみたいな、そういった限界がどこまであるのかわかりますか?

Aベストアンサー

C言語に限界はありません。
限界は、プログラマの方にあります。
C言語に変えたら全て解決、といった単純な話ではありませんので、覚悟してください。


CPUは、機械語しか理解できません。
全てのプログラムは、機械語に翻訳されるか、「プログラミング言語を解釈して実行するプログラム」を使って実行されます。

C言語は、大体前者で、しかも、 機械語とほぼ同等なことができるように作られています。
なので、原理的には、今あるコンピュータゲームは、ほぼ全てC言語で作ることができる、となります。


ですが、あなたが言う「作れる」とはニュアンスが違うと思います。

C言語自体は、とても低機能です。
そのツールが持っているような機能、例えば「画面にキャラクターを表示する」といったものはありません。
「水平に弾を発射」と設定すればいいだけのものが、
「一定時間毎に座標を少しずつ変化させて表示。画面外に出たら廃棄」
といった感じの、細かく分解する必要があります。
(これでも不十分で、「一定時間毎」ってどうやる?「画面外」とは?等と、より細かく分解しなければなりません)

結局、C言語で作る、ということは、「今使っているツールと同じようなものを自作する」のと同じことです。


また、C言語は速い、と誤解されているようです。
「無駄を省く等のチューニングができる場合がある」から「速くなるかもしれない」だけです。
そのツールでも、パフォーマンスは考慮されているでしょう。
C言語で書いても、何の対策もしていないなら、ツール以下のパフォーマンスになることもあります。

C言語に限界はありません。
限界は、プログラマの方にあります。
C言語に変えたら全て解決、といった単純な話ではありませんので、覚悟してください。


CPUは、機械語しか理解できません。
全てのプログラムは、機械語に翻訳されるか、「プログラミング言語を解釈して実行するプログラム」を使って実行されます。

C言語は、大体前者で、しかも、 機械語とほぼ同等なことができるように作られています。
なので、原理的には、今あるコンピュータゲームは、ほぼ全てC言語で作ることができる、となります。


です...続きを読む

Qイスラム教徒の方々は豚骨ラーメンなども食べることはできないのですか?

イスラム教徒の方々は豚骨ラーメンなども食べることはできないのですか?

Aベストアンサー

そうです。
お祈りされたとんこつから作られたものでないと食べられません。

Q最も高い身長を表示するプログラム

5人分の身長から最も高い身長を表示するプログラムをつくったのですが、エラーがでて実行できません。改善すべきところを教えてください。お願いします。
int main(void)
{
double a[5], max = 0;
int i;

for (i = 1; i <= 5; i++)
{
a[i] = 0;
}
printf("数値を5つ入力してください。\n");

for (i = 1; i <= 5; i++)
{
scanf("%lf", &a[i]);
}

for (i = 1; i <= 5; i++)
{
if (a[i] > max)
max = a[i];
}

printf("最も高い身長は%fです\n", max);

return 0;
}

Aベストアンサー

double a[5] ;
と宣言したら、安全に使えるのは a[0] 〜 a[4] です。

なので、このプログラムを安全なものにするなら
・double a[5]はそのまま、 i=0;i<5;i++ にして、 i=0〜4 の範囲で使う
・「i = 1; i <= 5; i++は変えない」 のなら
 ・ i=1〜5を、 0〜4 に対応させて使う
   単純明快なのは、 a[i-1] とすること
 ・double a[5+1] と宣言して、a[5] を安全に使えるようにする。
   a[0] が無駄になるけど気にしない

QDOS窓の大きさについて

早速ですが、コマンドプロンプトで使用されるDOS窓ですが、コマンドプロンプトを起動して、プロパティを開き行数を変更して1500行にしました。円周率の計算をVBとC#の2種類でやって見ました。VBの方は20000桁表示されますが、C#の方は溢れて、15000桁しか表示されません。
 どうもC#の方では元の行数300行がそのままになってるようです。どうすればC#の方でも、全桁表示されるでしょうか?
 実行画面ではC#ではデバッグ無しで実行してます。VBの方はデバッグ無しが無いのでデバッグをしてのことです。

Aベストアンサー

処理結果をファイルへリダイレクトしてそれをエディタで表示してみてはいかがでしょうか。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング