今僕は、『if else』『while』『for』『switch』『配列(t[])』を知っているのですが、それで何かプログラムを作りたいのですが・・・思いつきません。
それを使ってできるプログラムが載っているサイトを教えてください。

それか、これらを使ってできる問題を言ってくれるだけでもけっこうです(それらだけでですよ!)

回答おねがいします。

このQ&Aに関連する最新のQ&A

A 回答 (17件中11~17件)

プログラミングの練習でしたらソートを書いてみたらいかがでしょうか。



「配列に入っている文字列の文字を降順および昇順にならべかえよ。」

どういった順番で作るか分からなければトランプを並べ替えて、手順を考えるとよいと思います。

多分そのうち、ソートも習うと思いますが・・・
ソートといっても「バブルソート、シェルソート、バイナリ(2分樹)ソート」など色々な方法があります。

どのようにしたらプログラムが上手に作れるようになるかというのは、設計に近い内容なので、もっと専門的に詳しく勉強してみたいならば「Cによるらくらく構造化設計國友義久 著 1992年2月20日 CQ出版 ISBN 4-7898-3308-9」(絶版または重版未定なので復刊どっとコムで投票を受け付けています)を図書館で捜して読んでみるよよいと思います。

まぁ、先をあせらず今の課題をじっくりと学習していってください。
毎日の積み重ねがあってこそ日の目を見る日がやってくることでしょう。
    • good
    • 0
この回答へのお礼

1992年ってけっこう昔ですよね。
けど、それでも紹介するということは、とってもいい本なんですね。
ぜひ、調べてみます。

回答ありがとうございました。

お礼日時:2007/07/14 22:55

> それらだけでですよ!



main関数は作れるとしても、配列以外の変数も、演算子も、標準関数も一切使えないのですよね。int型とリテラルは使えるのでしょうか?

むしろ、
「if文、while文、for文、switch文、および配列だけで、コンパイル、実行&終了可能なプログラムを書け。プログラムが何らかの役に立つかどうかは問わない」
という問題でも結構難度が高いと思います。
    • good
    • 0
この回答へのお礼

リテラルって何ですか?

いや何か問題とかないだろうかと思ったんですが・・・。それだけじゃ難しいんですね。
じゃあ、もっと覚えてからリベンジします。

回答ありがとうございました。

お礼日時:2007/07/12 06:57

あっ、分かりづらかったですか。


じゃあ、ちょっと変えて、
static char moji[13] = {
'0','2','1','0','3','1','0','4','0','9','4','0','2','3' };
int count[10];
の配列を用意してもらって。
moji配列中に'0'~'9'の文字の各々登場する回数をカウントしてcount配列に格納してください。'0'が5回とかカウントします。
ルール。
・charは習ってますよね?
・if文とswitch文は使用禁止です。
・for文かwhile文は使用可能。
以上です。
    • good
    • 0

No.1です。



プログラムには、ランダム関数という乱数(バラバラ数)を
導き出す関数があります。
それを使わないと、数字がばらばらに出ないので、ロト6を
占うには面白さが欠けます。
(RPGゲームの「何ポイントのダメージ!」とかはランダム
 関数です。)

よって、ランダム関数を利用するわけですが。
関数を書くと判りますが、コンピュータのランダム関数は、
毎回バラバラなりに同じ数字が返ってきます。
例えば、1回目に、「1,26,43,15,24,11」と返ってきたとき、
そのソフトを終了し再度実行するとまったく同じ「1,26,43,15,24,11」
という文字列が返ってきてしまいます。

そこで、現在の時刻、例えば「2007/07/12 0:25:43」のような
常に変わりゆく数字を利用し、上記のランダム関数に味付けとして
加えてやると、同じ数字が二度と出ません。
例えば、簡単な例では秒数を44で割った余りを足すだけでも
「1,26,43,15,24,11」それぞれに+幾つを足すのでバラけて見えます。
そういう意味で、日時を利用すると面白い数字が返ってくると
いうわけです。

なお、例に書いてあるように、数字の順番はバラバラで取れる
はずです。
ただ、ロト6を買うには1からの順番が書きやすいですよね?
ということは結果を並び変えたいですよね?
という意味で、1から43は配列を利用。
ゆとりがあれば、ソート関数で並び変えられるようにするわけです。

そのほか。
複雑なものになると、
・トランプのポーカー役、麻雀役
・自販機の釣銭計算
・曜日計算、週計算、時間計算
…ふと思いつくだけでも仰る構文を利用するアルゴリズムは
超大量にあります。
普段何気ないものでも結構難しいものですよ。
お試しください。
    • good
    • 0
この回答へのお礼

このプログラムは乱数を覚えないと組めませんよね・・・。というわけで、乱数を理解して、このプログラムを組んでみます。

回答ありがとうございました。

お礼日時:2007/07/12 01:07

> ”0103405067020”で登場する数字の数とはいったいどういうことなのでしょう?


コレは 0がいくつ 1がいくつ といった具合にこの文字列中の数字の種類を数えてくださいといった趣旨だと思います
    • good
    • 0
この回答へのお礼

あぁ、そうか!

そういう風に問題を理解できるようになりたい(頑

回答ありがとうございました。

お礼日時:2007/07/12 00:35

えーと、じゃあ問題を。


『if else』の問題。
変数aが1なら変数bを3に、変数aが2なら変数bを1にしてください。

『while』の問題。
入力された数値が、1~5以外だったら警告して、もう一度入力させるプログラムを作ってください。

『for』の問題。
1,3,5,7,9,11,・・・・変数nまでの数列をforを使って足してください。

『switch』の問題。
変数aが1,4,8,9なら変数bを2に、変数aが2,3,7なら変数bを1にしてください。それ以外は変数bを0にしてください。種類を分類します。

『配列(t[])』の問題。
文字列"0103405067020"でそれぞれ登場する数字の数を数えなさい。

この回答への補足

すいません。

配列の問題なんですが・・・

”0103405067020”で登場する数字の数とはいったいどういうことなのでしょう?

補足日時:2007/07/12 00:19
    • good
    • 0

分岐とループと配列を使いたいということであれば。



ロト6のあたりを占うソフトでも作れば如何でしょうか(笑)
1~43の数字を配列に入れ。
6個決まるまでループ。
時間の概念+ランダムでチョイスし、重複した数字をチョイスした
場合は再取得をします。

ソフトができれば、その番号のクジを買ってみて。
当たったら儲けもんですよね。(笑)

この回答への補足

すいません。
時間の概念ってどういう意味ですか?
ランダムは習っていないのですが・・・。

補足日時:2007/07/12 00:08
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

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

Q高齢者がITを使うときに問題があるのはどこですか???

私は高齢者が快適な生活を送るために必要なことは何かをテーマに研究しています。

高齢者がITやマルチメディア関連のものを用いるときの問題点にはどのようなものがあると思いますか???現在、高齢者が利用しているもので、ここはまずい!!!というところがありましたら、教えてください。
また、高齢者が少しでも疲労をおこさないような改善策がありましたらお願いします。

Aベストアンサー

こんにちは。

年寄りと一括りには出来ませんが、若者のようにマニュアルを見る前に兎に角触って見ると言う事は先ずしません。必ず取説と首っ引きで挑戦する人が多いと思いますが、殆どのマニュアルを書くライターは馬鹿ばっかり多くて難しく書く事でライターの権威を示したいと言う魂胆が見え見えです。

落語家とか漫画家が書いたパソコン用のマニュアルを書店で見かけましたが、マニュアルは、ああ有るべきだと思いました。

------------------------------------------
機器の方ですが、数少ないボタンの組み合わせで機能の選択は歳を取ると難解です。

(少数ボタンに依る機能の選択)

例えば、デジカメで4つ位のボタンで2~30種類位の機能の選択などは、取説と首っ引きの時は一通り理解しても、実際持ち歩いていて、さて撮る段に成ってフラッシュはどのボタンの組み合わせで作動するのか、マクロはetc??????・・・・

腕時計でも多機能の物は3つか4つのボタンで様々な機能を持たせ時刻合わせ一つでも難儀をします。カーラジオなども少数ボタンで多機能の物が多く理解し難いと思います。

電車の自動切符販売機やATMでの振り込み等、電話機もビデオもカラオケ機も冷蔵庫も洗濯機も、少数ボタンでの多機能化製品が多い、それらを取り説で懇切丁寧に教えるのは(根本を其の儘で)本末転倒の気がします。
年寄りが長生きしすぎが悪いと言えばそれまでですが、高齢化社会とIT化の接点が解決しないと、大昔の年寄に文盲が多かったように、高齢者IT文盲が沢山生まれると思います。

こんにちは。

年寄りと一括りには出来ませんが、若者のようにマニュアルを見る前に兎に角触って見ると言う事は先ずしません。必ず取説と首っ引きで挑戦する人が多いと思いますが、殆どのマニュアルを書くライターは馬鹿ばっかり多くて難しく書く事でライターの権威を示したいと言う魂胆が見え見えです。

落語家とか漫画家が書いたパソコン用のマニュアルを書店で見かけましたが、マニュアルは、ああ有るべきだと思いました。

------------------------------------------
機器の方ですが、数少ないボタ...続きを読む

Qwhile for/ if else/do while文を使い”640968592”の各数字を独立させて取り出すことは可能でしょうか?

忙しい中失礼します。

今以下のようなプログラミングを組もうとしています。
1.”640968592”といった9桁の数字を入力→scanfで入力(これは出来ます)
2.各桁の数字を独立させて取り出す:”6” ”4” ”0” ”9” ”6”・・・といった具合に(これも一応出来ます)
3.偶数桁は2倍する
  2桁目:4x2=8
  4桁目:9x2=18
  6桁目:8x2=16
  8桁目:9x2=18

そして、私の場合、以下のようなプログラムになるのですが、これがなんとも不細工な感じがし、スマートにプログラムを変更したいと思っています。

抱えている問題:while for/ if else/do while文などを用いて、下記のプログラムを書き直すことは可能なのでしょうか?例え出来たとしても、文int=num1~num35までの定義も減らすことは可能なのでしょうか?
手も足も出ない・・・

プログラム内容
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int num1,num2,num3,num4; /*8 9桁目*/
int num5,num6; /*7桁目*/



int num15,num16; /*2桁目*/
int num17; /*1桁目*/
int num19,num20,num21,num22,num23,num24,num25;
int num26,num27,num28,num29,num30,num31,num32;
int num33,num34,num35;


printf("Write the SIN: ");
scanf ("%d", &num1);

num2=num1 / pow(10, 8); //9桁目

num3=num1 / pow(10, 7); //8桁目
num4=num3 % 10;

num5=num1 / pow(10, 6); //7桁目
num6=num5 % 10;



num15=num1/pow(10, 1); //2桁目
num16=num15%10;

num17=num1%10; //1桁目

num19=num4*2; //8桁目計算
num20=num19/10;
num21=num19%10;
num22=num20+num21;



num31=num16*2; //2桁目計算
num32=num31/10;
num33=num31%10;
num34=num32+num33;

system("pause");

return 0;
}

こんなのが直ぐにプログラムとして早く組めるようになりたい・・・


どうしても頭に浮かばないのです。アドバイス等あればお願いします。

<使用環境:フリーソフト(Borland?)C ANSI C>

忙しい中失礼します。

今以下のようなプログラミングを組もうとしています。
1.”640968592”といった9桁の数字を入力→scanfで入力(これは出来ます)
2.各桁の数字を独立させて取り出す:”6” ”4” ”0” ”9” ”6”・・・といった具合に(これも一応出来ます)
3.偶数桁は2倍する
  2桁目:4x2=8
  4桁目:9x2=18
  6桁目:8x2=16
  8桁目:9x2=18

そして、私の場合、以下のようなプログラムになるのですが、これがなんとも不細工な感じがし、スマートにプログラムを変更したいと思っています...続きを読む

Aベストアンサー

プログラム的にはほぼ合っていますが、ループ化するには向きません。
間違いは、ケタが1ketame~3ketameと書いてあるが逆。

ループ化する布石として、
・なるべく数値を直接使わないで変数から求めるようにする。
1ketameとかは、%dketameで変数からケタを表示する。
/100なら、/ pow(10,変数)で計算する。
両方とも、変数ketaから求められますよね。
keta=3;を初期値として、keta--;で減算しながら書いてみてください。
ketanumも3つでは無く1つの変数で処理します。毎ケタ毎残す必要が無ければ同じ変数を使って良いんです。

できあがったプログラムを見てください。同じような処理の繰り返しでループ化できそうになりませんでしたか?

Q人権作文のテーマ 高齢者問題

私は学校の宿題で人権作文を書こうとしています。
そこで高齢者について書きたいのですが、バリアフリーに関すること(階段がきついなど)や高齢者だから身体に不自由があることなどは書いてもいいのでしょうか。
また、どんな問題を書けばいいのでしょうか。その理由や原因も教えていただけないでしょうか。
よろしくお願いします。

Aベストアンサー

「高齢者」はいずれ誰もがなり得る存在ですから、考えてみるのは面白い事だと思います。
バリアフリーに関することや高齢者だから身体に不自由があることを、配慮すべき事由として文中で扱うことは問題ないでしょう。しかし、まずは人権とは何なのかというあなたなりの定義を芯として持つことがまず大事と思います。
「人権は守るもの」と唱えるのではなく、「なぜ尊重すべきなのか」という根本原則でとらえておく事です。

ちなみに私なら、
1)人権とは何か、なぜ人権は守られるべきなのか
2)例えば、高齢者においては現実にこのような不自由がある
3)最近は配慮されているとは言え、その見方が一方的なものになってニーズを勘違いしてはいまいか。
4)真に教育すべきは表面的な「人権」ではなく、他者を尊重・尊敬する心そのものを原点とすべきではないか。
5)これから私に何が出来るだろう。
といった問題提起の作文にしちゃいますね。


その他、
・シングルファミリーなど、本人に原因がない事由での社会参画機会の喪失に関する問題
・学歴社会に正当性はあると言えるのか
・知る権利と商業主義:有名人のプライバシー
・刑期を終えた元服役囚達の人権問題
・同性結婚
・尊厳死
・身元調査
といった社会的な事柄や、
・権利に溺れて身勝手になってはいないか(生活保護の不正受給などありますよね)
・人権教育が新たな差別を産む原因になってはいないか
・床屋、土方、百姓、片手落ち、などが放送禁止用語になったわけ
といった自戒的な内容での切り口もありでしょうかね。
・高校無償化に関する問題(朝鮮系学校などは対象外とするなんて政治判断についてどう感じる?)
・校則の妥当性(頭髪や靴下の色を決める必要が何故あったの?)
・女性専用車両、レディースデー、女性プランに関する男女視点
と言った学生にも身近なものについて”賛否両面から”考えてみるのも面白い経験となるでしょう。

そうそう、プライバシーと言えば、日本語にはプライバシーに相当する概念を表す言葉が無かったって話がありますね。これも一つの「人権」に関する話。プライバシーを守る権利も認められるべきなのでしょうが、それがために現代の都会での孤独死など「孤立」に繋がっているって現実も確かにある。

さあ、人権とはどこまでを認めるべきという線引きができるものでしょうか?
そういう視点で考えてみるのも面白いと思いますよ。


ともかく、思いつくキーワードをまず箇条書きや付箋紙に書き出してみて、相関関係や順序をあれこれ並べながら考えてみるとストーリー建てしやすいでしょう。

「高齢者」はいずれ誰もがなり得る存在ですから、考えてみるのは面白い事だと思います。
バリアフリーに関することや高齢者だから身体に不自由があることを、配慮すべき事由として文中で扱うことは問題ないでしょう。しかし、まずは人権とは何なのかというあなたなりの定義を芯として持つことがまず大事と思います。
「人権は守るもの」と唱えるのではなく、「なぜ尊重すべきなのか」という根本原則でとらえておく事です。

ちなみに私なら、
1)人権とは何か、なぜ人権は守られるべきなのか
2)例えば、高齢者...続きを読む

Qif~else文の中にまたif~else文をいれるには。

 このプログラムを思うように実行したいのですが、できません。
コンパイルはできるのですが、警告が4つほど出て、結果も自分が思ってるのとは違います。
プログラムのどこを改善すべきか教えてください。
OSはWindows XPで、コンパイラはボーランドのフリーコンパイラを使用しています。
#include<stdio.h>
int main(){
int a,b,c,d;
printf("1か0を入力してください。\n");
scanf("%d",&a);
if(a=0)
{
printf("2か3を入力してください。\n");
scanf("%d",&b);
if(b=2){
printf("今まで合計は%dです。\n",a+b);
}
if(b=3){
printf("今まで合計は%dです。\n",a+b);
}
else {
printf("指定した数字を入力して下さい。\n");
}
}
else if(a=1)
{
printf("あなたは%dを入力しました。\n",a);
}
else
{
printf("指定した数字を入力してください。\n");
}
return 0;
}

 このプログラムを思うように実行したいのですが、できません。
コンパイルはできるのですが、警告が4つほど出て、結果も自分が思ってるのとは違います。
プログラムのどこを改善すべきか教えてください。
OSはWindows XPで、コンパイラはボーランドのフリーコンパイラを使用しています。
#include<stdio.h>
int main(){
int a,b,c,d;
printf("1か0を入力してください。\n");
scanf("%d",&a);
if(a=0)
{
printf("2か3を入力してください。\n");
scanf("%d",&b);
if(b=2){
printf("今まで合計...続きを読む

Aベストアンサー

No1に追加です。No6のかたが回答されていますが、せっかく途中まで書いたので参考までに回答させていただきます。矢印のある行が変更したところです。(矢印は入力しないでください)今は試せないんですけど多分これでできると思います。うまくいかなかったらすいません。あと字下げしても投稿する際に左寄せになってしまうようなので見づらいかもしれませんが許してください。もっといいやり方があると思いますけど参考にしてみてください。

#include<stdio.h>
int main(){
int a,b,c,d;
printf("1か0を入力してください。\n");
scanf("%d",&a);
if(a==0) ←
{
printf("2か3を入力してください。\n");
scanf("%d",&b);
if(b==2) ←
{
printf("今まで合計は%dです。\n",a+b);
}
else  ←
{ 
if(b==3) ←
{ 
printf("今まで合計は%dです。\n",a+b); 
}
else  
{
  printf("指定した数字を入力して下さい。\n"); 
}  ←この } は20行目のelseを終了する意味
}  ←この } は14行目のelseを終了する意味
}  ←この } は7行目のifを終了する意味

if(a==1) ←初めのifが当てはまらなかったり、初めのifの処理を終えるとここへ来る。
{
printf("あなたは%dを入力しました。\n",a);
}
else ←
{
printf("指定した数字を入力してください。\n");
}
return 0;
}

No1に追加です。No6のかたが回答されていますが、せっかく途中まで書いたので参考までに回答させていただきます。矢印のある行が変更したところです。(矢印は入力しないでください)今は試せないんですけど多分これでできると思います。うまくいかなかったらすいません。あと字下げしても投稿する際に左寄せになってしまうようなので見づらいかもしれませんが許してください。もっといいやり方があると思いますけど参考にしてみてください。

#include<stdio.h>
int main(){
int a,b,c,d;
printf("1か0を入...続きを読む

Q高齢者の所在不明問題

高齢者の所在不明問題

年金目的なんだろうけど、返金や逮捕は出来ないの?

Aベストアンサー

年金は関係ない場合もありますよ。

地元にも残念ながら複数名所在不明の高齢者がいるそうです。
一人は完全独居だそうで、年金の受け取り申請はしていないそうです。

逆に年金を受け取らずに、帰ってくるのを信じて後期高齢者医療保険料を支払い続けているケースもあるそうです。

年金目的で死亡届を出さないのはもちろん悪質で詐欺罪などで捕まりますが、失踪届けを出さないで帰りを待ち続けるのは特に罪には問えなかったような。。。

Qif文で「配列a[i]が小数ならば」を表現したい

if文で「配列a[i]が小数ならば」を表現したいのですが、どうしたらよいのか分かりません。

if(????){

配列a[i]には、整数や0、そして小数が入っています。
どうぞご教授いただければ幸いです。

Aベストアンサー

aの型がdoubleとして
if(a[i] != (double)(int)a[i]){

というのが自然ではあるのですが、内部表現上の誤差でうまくいかないケースもでてくると予想されます
やろうとしているケースにもよりますが小数部分がある値より小さい時という判定にしなければならないかもしれません

Q高齢者のマナー問題 何で平気で公共交通機関で携帯で話して罪悪感が無いのか?

自分が過去に質問をした件に似た案件です(今度は高齢者の携帯マナー問題と何で謝らないのかと言う問題)

携帯電話は普通、公共交通機関では通話はマナー違反(新幹線ならデッキで話す・電車の中と言ってすぐ切る・電源をオフにする)他にもレストランなどでは席をはずして話すがマナー

しかし昨日ある御老人の携帯マナーに呆れて物が言えませんでした。停車中なので仕方ない(本当は論外)ですが、堂々と携帯電話で話している方が1名。しかし長々と話して声がうるさい(自分がウオークマンで聞いていても筒抜けする程酷かったし終わりそうもなかった)ので「携帯電話の通話は電車の中では御法度ですよ」と言えばにっこりして笑って何にも謝らなく電話を切ってニコッと笑ったので頭に来て「いい加減にしてくださいよ。携帯電話を車内で話すのは問題ですよ!話すなら停車中ならホーム、運転中なら電話を切る等しなさいよ!」と烈火の如く怒りました。それでも全く謝らない酷さ。

しかし何で高齢者の携帯電話のマナー違反が酷いのでしょうか?それと「注意されても何でごめんなさいの一言が無い」のでしょうか。若い人ならすみませんと言いますし自分も注意されれば謝ります。しかし高齢者の場合10人いれば9人がこのありさま。この問題を解決するならどうすればいいのでしょか?何で注意されても謝らないのでしょうか?。携帯電話の高齢者向けも増えましたけど注意などのマナーブックは配っているのでしょうか?酷いケースは病院の中で話す人もいます。

ついでに昨日22年2月2日の記念切手を発売で高齢者の方が順番ぬかしで
券を購入していましたが頭にきました・・・

自分が過去に質問をした件に似た案件です(今度は高齢者の携帯マナー問題と何で謝らないのかと言う問題)

携帯電話は普通、公共交通機関では通話はマナー違反(新幹線ならデッキで話す・電車の中と言ってすぐ切る・電源をオフにする)他にもレストランなどでは席をはずして話すがマナー

しかし昨日ある御老人の携帯マナーに呆れて物が言えませんでした。停車中なので仕方ない(本当は論外)ですが、堂々と携帯電話で話している方が1名。しかし長々と話して声がうるさい(自分がウオークマンで聞いていても筒...続きを読む

Aベストアンサー

>にっこりして笑って何にも謝らなく電話を切ってニコッと笑ったので

見てないのでわかりませんが、これが会釈というか「ごめんね」って感じの照れ隠しも含めた意味合いではなかったでしょうか?
それとも本当にバカにした様な感じだったのでしょうか?

確かにマナー違反なのは嫌ですが、私は公共の場で若者が年配の方を烈火の如く怒っている場の方が嫌です^^;
1度軽く注意した段階でやめなければ「こりゃダメだ」と、とりあえずは怒りをおさめておくべきだったかもしれないですね。
いくら正論とはいえ自分がその場にいたらすごく嫌な気分です。

ちなみに高齢者は耳が遠いので電話の声は大きくなってしまうんですよね。だからこそマナーをまもらないといけないのですが。

全然関係ないですが、下の方も言ってますが、質問者様が高齢者だけでなくて横抜かしをしたり車内で携帯電話で話すガラの悪い兄ちゃん達にも同じ様に注意できるのなら心から尊敬します。

Qchar *name1[4] とchar name2[][4] の違いについて

C言語のことで質問があります。

char *name1[4]は
char *name1[4] = {"abcdefghi","jkl","l","mn"};
と宣言でき,ポインタを4つ確保した形となりました。

char name2[][4]は
char name2[][4] = {"abc","def","ghi","jkl","mno","pqr","stu","vwx"};
と4文字以内の文字列を初期化した数だけ確保した形となりました。

この結果からchar *name1[4]の意味は,char name2[][4]ではなくchar name2[4][]に近いと思いました。
しかし,char name2[4][]ではポインタを4つ確保した事にはならないみたいでコンパイルが通りません。
*name1[4]では4つのポインタを確保できるのに~と思ってしまいます。

ポインタと配列は別物と考えるべきなのでしょうか?
訳の分からない質問かもしれませんが,
何卒ご指導いただくようよろしくお願いします。

Aベストアンサー

ポインタと配列の違いというのは、変数と定数の違いのようなものです。

話を簡単にするために、一次元配列から考えましょう。

char *p1; と定義した時のp1は、いうまでもなくポインタで、
これは変数です。p1は任意の文字列を指すことができます。
char a1[4]; と配列の形で定義した場合のa1については、
a1[0]やa1[1]等を、通常のchar型の変数と全く同じように扱うことが
できます。しかし、a1自体は、例えば a1 = p1; のように値を代入する
ことができません。(逆の p1 = a1; は可能。)つまり、この場合のa1は、
変数ではなく、定数のようなものなのです。

複合的なケースについて見てみましょう。
char **q1; ポインタへのポインタ
 q1,*q1,**q1,q1[0],*q1[0],q1[0][0] のいずれも変数として
 扱うことができます。(値を代入することが文法的に許されます。
 ただし、実行時にはアクセス違反になる場合もあります。)
char q2[4][4]; 二次元配列
 q2,q2[0]は変数として扱うことができません。q2[0][0]のように
 して、初めて変数として扱えるようになります。
char *q3[4]; ポインタの配列
 q3は変数として扱うことができませんが、q3[0],*q3[0],q3[0][0]
 はいずれも変数として扱うことができます。
 なお、この定義は char *(q3[4]); とした場合と全く同じ意味です。
char (*q4)[4]; 配列へのポインタ
 q4,(*q4)[0],q4[0][0]はいずれも変数として扱うことができます。
 しかし、*q4,q4[0]は変数として扱うことができません。

char *name1[4]; と char name2[4][]; は確かに似ています。しかし
違うところもあります。それは、name1[0] が変数として扱えるのに
対し、name2[0] には値を代入できないという点です。(データの
具体的な構造については、inthefloiさんが書いておられる通りです。
> char name2[4][]ではポインタを4つ確保した事にはならないみたい
というのも、全くその通りで、配列の定義では、ポインタ変数の領域
を確保する余地はないのです。

ポインタと配列の違いというのは、変数と定数の違いのようなものです。

話を簡単にするために、一次元配列から考えましょう。

char *p1; と定義した時のp1は、いうまでもなくポインタで、
これは変数です。p1は任意の文字列を指すことができます。
char a1[4]; と配列の形で定義した場合のa1については、
a1[0]やa1[1]等を、通常のchar型の変数と全く同じように扱うことが
できます。しかし、a1自体は、例えば a1 = p1; のように値を代入する
ことができません。(逆の p1 = a1; は可能。)つまり...続きを読む

Q人権作文のことについて聞きたいのですが、僕は最近問題になっている高齢者

人権作文のことについて聞きたいのですが、僕は最近問題になっている高齢者の所在が分からなくなったり
ミイラ化した状態で見つかったことと、老人ホームでの高齢者の差別について書いたのですが、高齢者の
所在が分からなくなったり、ミイラ化した状態で見つかるということについては、ぼくは、これは年金目当てで家族が死んだことを隠していたのではないかなどとと書いたのですがこれは人権ではないですよね?
また、この人権作文はもう提出していてあさってには発表しなければならないのですが、そのときには、
少しそこをはぶいたほうがいいのでしょうか。それとも、本題に入る前の最近起こった出来事として一応
全部言ったらいいのでしょうか。
みなさんの意見がききたいのでご回答よろしくお願いします。

Aベストアンサー

私は、ミイラ化した高齢者の問題が、高齢者の人権とまったく関係ない問題とは思いません。
死者に対しても、人間らしく弔いをする、これが人権を尊重するということだと思います。

その場に放置するというのでは、人権を軽んじるということでしょう。

まして、それを自分の利益のために利用するというのは、人の道に外れます。

なので、書かれたことを全部読んだとしても、差し障りはないと思います。

そもそも、日本は、思想・良心の自由、表現の自由が保障された国です。
自分の考えたことを発表する、これは素晴らしいことだと思いますよ。

Q[VC++][MFC][SDI]ダイアログコントロールもしくわツールバー!!詰まってます!!

現在VC++6.0でMFCを使いSDIのプログラムを作っているのですが、フォームにダイアログバーを張っています。

これをツールバーのように自由に動かしたり、左右上下にドッキングさせたり。
これって実現可能でしょうか?

色々ためしてみたんですが無理でした。
やっぱ不可能ですかね?

これが無理なんであればデフォルトで作成されるツールバー([新規作成][開く][保存]等が入ってる)にコントロール(ボタンやリストボックス)を追加して使用、と考えているのですがこれも難しい!!!


まだまだ未熟者なのですがどうかご存知の方おられましたらご教授ください!!
よろしくお願いします!!

Aベストアンサー

Dannerです。
参考URL(英語)を載せておきます。

参考URL:http://www.codeguru.com/Cpp/controls/toolbar/placingcontrolsintoolbars/article.php/c2505/


人気Q&Aランキング

おすすめ情報