言語の問題集の回答がないので困っているので誰か教えてください。
私はまだ始めたばかりなので手におえません。
今私が理解しているif文、switch文、for文、while文、do-while文、配列、を
使用してでお願いします。

何重にするかを入力すると、実行例のような正方形が重なった図形を表示するプログラムを作成しなさい。
ファイルを作る際には3,4,5重の場合を実行する。(アスタリスクの数を長さとする)

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

A 回答 (1件)

>実行例のような正方形が重なった図形を表示するプログラムを作成しなさい。



実行例はどこにあるのですか?

>ファイルを作る際には3,4,5重の場合を実行する。

ファイルの名前は任意ですか?
3,4,5重の場合ってどういう意味ですか?
実行するって何を実行するのですか?

>アスタリスクの数を長さとする
アスタリスクの数とはどこから持ってくるのですか?
    • good
    • 0

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

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

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

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

Qwordで使う矢印や図形など

ワードで使う矢印や図形などが文とともに移動するように設定したいのですが
どうしたらいいかわかりません(>_<)
今のままでは矢印や図形の上の部分に文を挿入すると
矢印や図形がずれてしまいます
どうぞご存知の方教えてください

Aベストアンサー

矢印と図形の関係が崩れるというのであれば、
二つを選択しておき、グループ化し、一つの図形として扱うと良いかと。

Qswitch文とwhile文を用いたプログラムに関して

swich文とwhile文を用いたプログラムについて

授業の課題で、swich文とwhile文を用いたプログラムを作りなさい。いう課題が出ました。

5桁以上9桁以下の正の整数を入力し、4で割り切れたとき、何桁の数字かを出力。4でわって1余ったとき、すべての桁の合計を出力。3余ったとき、与えられた数の逆を変数に代入し、その変数を出力(単純に表示するわけではなく、数字として表示)

といったものです。
途中からの授業参加で、C言語に関する知識はほとんどありません。do文を用いたプログラムは見つけれたのですが、while文とswich文を用いろということなので、do文は使えないです。

どなたか教えていただけませんか?
今日中にわからないとちょっとやばいです・・・。
よろしくお願いします

Aベストアンサー

こんな感じでいいのかな?

#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "math.h"

int main(int argc, char* argv[])
{

char sInput[32];
int iInput=0;
int iLen=0;
int iMod=0;
int iSum=0;
int iReb=0;
int iCnt=0;
char sBuf[32];

memset(sInput,0,sizeof(sInput));
memset(sBuf,0,sizeof(sBuf));
scanf("%s",&sInput);
iLen = strlen(sInput);

if( iLen > 9 || iLen < 5 )
{
printf("対象桁数外");
return 0;
}

iInput = atoi(sInput);

iMod = iInput % 4;

switch(iMod)
{
case 0:
printf("入力された数字は %d 桁です。",strlen(sInput));
break;
case 1:
while(iCnt < iLen)
{
sprintf(sBuf,"%c",sInput[iCnt]);
iSum += atoi(sBuf);
iCnt++;
}
printf("入力された数字の合計は %d です。",iSum);
break;
case 3:
iReb = 0;
while(iCnt < iLen)
{
iCnt++;
sprintf(sBuf,"%s%c",sBuf,sInput[iLen-iCnt]);
}
iReb = atoi(sBuf);
printf("入力された数字の逆順は %d です。",iReb);
break;
}
return 0;
}

こんな感じでいいのかな?

#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "math.h"

int main(int argc, char* argv[])
{

char sInput[32];
int iInput=0;
int iLen=0;
int iMod=0;
int iSum=0;
int iReb=0;
int iCnt=0;
char sBuf[32];

memset(sInput,0,sizeof(sInput));
memset(sBuf,0,sizeof(sBuf));
scanf("%s",&sInput);
iLen = strlen(sInput);

if( iLen > 9 || iLen < 5 )
{
...続きを読む

Qエクセルで矢印の図形を書くとき

エクセルで矢印の図形を書くとき、矢印と直線の二重線になるのですが。
どうして、矢印一本線になりますか?
教えてください

Aベストアンサー

矢印の線のスタイルが二重線になってしまってるのでしょうか?

それでしたら矢印をダブルクリックしてオートシェイプの書式設定から「色と線」のタブの中のスタイルと言う個所を実線に変更したら直ると思います。

Qdo while文の条件

do while文の条件にprintfを使う場合、これはありなんでしょうか?
内容:0が入力されていたら、whileのprintfを実行してからdoに戻る。0以外ならprintfを実行しないで処理を抜ける。
int i;
do
{
printf("0以外の数字を入力してください。\n");
scanf("%d",&i);
}while(i == 0 && printf("まじめに入力してください。\n"));

Aベストアンサー

「あり」か「なし」かは場合によります。

実験が目的の場合や、自分一人がメンテし一生他人に見せない場合ならありです。
でも、もしあなたが私の部下で、製品向けにこのコードを書いたら、間違いなく説教です。(笑)

> do while文の条件にprintfを使う場合・・・

まず、このコードの場合、do whileの条件式の中に書かれてはいますが、
printfを条件の意味で使ってませんから!!

QOfficeの「図形描画バー」の「オブジェクトの選択」(白抜き矢印)のショートカットキーは?

エクセルの「図形描画バー」の「オブジェクトの選択」(白抜き矢印)のショートカットキーをお教えください。

Aベストアンサー

ショートカット キー ヘルプ
アシスタント > Excel 2003 > スタートアップと設定 > ユーザー補助機能 > ショートカット キー

参考URL:http://office.microsoft.com/ja-jp/assistance/HP052037811041.aspx

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つの変数で処理します。毎ケタ毎残す必要が無ければ同じ変数を使って良いんです。

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

QExcel2003の「図形描画>オブジェク」の矢印

 Excelの初心者です、宜しくお願いします。

 Windows XP Excel 2003 では、「図形描画>オブジェクトの選択」という矢印がありますが、
これと同じ機能(「オブジェクトの選択」という矢印)はExcel 2010にも有るのでしょうか。

 あるとすればどこの設定をどのようにしてやればいいのでしょうか、宜しくお願いします。

Aベストアンサー

ずいぶん分かりにくい場所にあります。
「ホーム」タブ→「編集」グループ→「検索と選択」→「オブジェクトの選択」です。

「Excel 2007/2010 で 図形(オブジェクト)の選択(矢印アイコン)がない!? 」
http://ipa-style.blogspot.jp/2011/06/excel-20072010.html

Qswitch文かif文か?

スイッチ(SW50~SW80)を押したら、それに対応したコマンドを送る。というものを作っています。
スイッチはスライドスイッチなので、
1)ON(0)の間だけコマンドを出して、OFF(1)は止める。
2)ONしている間に別のスイッチが入ったら止める。
という風に組みたいのですが、中々上手くいきません。
8ピンのスライドスイッチなのですが、1~4はIDとして、5~8をコマンドとして使います。
なので、1~4は絶対にONになります。とすると、2)にしたいとき、defaultが使えなくて…if文を入れたらややこしくなりました。
もっと簡潔に、かつ解りやすく書くにはどうしたらいいでしょうか?

#define SW1 input(PIN_C0)// ID
#define SW2 input(PIN_C1)// ID
#define SW3 input(PIN_C2)// ID
#define SW4 input(PIN_C3)// ID
#define SW50 PIN_C4
#define SW60 PIN_C5
#define SW70 PIN_C6
#define SW80 PIN_C7

uchar LED_ON(void){
uchar DATA;
DATA=0x50;
DATA+=0x4F;
DATA+=0x4E;
return(DATA);
}

uchar LED_OFF(void){
uchar DATA;
DATA=0x50;
DATA+=0x4F;
DATA+=0x46;
return(DATA);
}

void LED(void){
ulong n;
uchar DATA;
while(1){
WriteFSKbyte(DATA);
switch(n){
case SW50:DATA=LED_ON();
if((SW50||SW60||SW80)==0){
DATA=LED_OFF();
} break;
case SW60:while(SW60==0){
DATA=LED_ON();
DelayMs(1000);
DATA=LED_OFF();
DelayMs(1000);
if((SW50||SW70||SW80)==0)
break;
} break;
case SW70:while(SW70==0){
DATA=LED_ON();
DelayMs(500);
DATA=LED_OFF();
DelayMs(500);
if((SW50||SW60||SW80)==0)
break;
} break;
case SW80:DATA=LED_OFF();
if((SW50||SW60||SW80)==0){
DATA=LED_OFF();
} break;
}
}
}

スイッチ(SW50~SW80)を押したら、それに対応したコマンドを送る。というものを作っています。
スイッチはスライドスイッチなので、
1)ON(0)の間だけコマンドを出して、OFF(1)は止める。
2)ONしている間に別のスイッチが入ったら止める。
という風に組みたいのですが、中々上手くいきません。
8ピンのスライドスイッチなのですが、1~4はIDとして、5~8をコマンドとして使います。
なので、1~4は絶対にONになります。とすると、2)にしたいとき、defaultが使えなくて…if文を入れたらややこしくなり...続きを読む

Aベストアンサー

> sw1234=input_c();
これだと、sw1234には、SW5~SW8のデータも入ってしまいます。
> sw1234=input_c() & 0x0f;
とすることで、下位4bit=SW1~SW4のデータだけが入れられます。

あと、スイッチと入力値の対応が「ON=0、OFF=1」だとのことですから、
> case 0x01:WriteFSKbyte(0x01);break;
これだと逆に「SW1がOFFでSW2~4がONの時」って条件になってしまいます。
SW1だけがONな場合の条件は、SW1だけ0でSW2~SW4を1にした「case 0x0E:」になります。


で、話を戻しますが

> SW1~4のどれかが入っていないと、SW5~8は出力しない

この条件は「どれか」でいいのでしょうか?
SW1~SW4が二つ以上入ってもかまわないが、
「SW1~SW4が全てOFFの場合」(sw1234が0x0Fの時)は処理しない
でいいのだったら、

  while (1) {
    sw1234 = input_c() & 0x0f;
    sw5678 = input_c() & 0xf0;
    switch(sw5678) {
    case 0xe0: /* SW5~SW8 のうち、SW5だけON */
      if (sw1234 != 0x0F) LED_ON();
      break;
    case 0xd0: /* SW5~SW8 のうち、SW6だけON */
      if (sw1234 != 0x0F) LED_ON();
      break;
    …

と記述できます。

SW1~SW4のうちでも「一つだけしかONにしてはいけない」だったら、

> SW1(ON)+SW5(ON)=LED_ON
> SW2(ON)+SW5(ON)=LED_ON
> SW1(ON)+SW8(OFF)=LED_OFF

こういう条件を全てリストアップしたうえで、
以下のように、複数のスイッチの状態をまとめて判断するという方法もあります。
(switch文では、break せずに case を複数並べることで、複数の条件に対し処理をまとめることができます)

  int sw;
  while(1){
    sw = input_c();
    switch(sw){
    case 0xEE: /*二進11101110、SW1(ON)+SW5(ON) */
    case 0xED: /*二進11101101、SW2(ON)+SW5(ON) */
    case 0xEB: /*二進11101011、SW3(ON)+SW5(ON) */
    case 0xE7: /*二進11100111、SW4(ON)+SW5(ON) */
      /* SW1~SW4のうちどれか1つだけONで、SW5~SW8 のうちSW5だけがONの場合 */
      LED_ON();
      break;
    case 0xDE: /*二進11011110、SW1(ON)+SW6(ON) */
    case 0xDD: /*二進11011101、SW2(ON)+SW6(ON) */
    case 0xDB: /*二進11011011、SW3(ON)+SW6(ON) */
    case 0xD7: /*二進11010111、SW4(ON)+SW6(ON) */
      /* SW1~SW4のうちどれか1つだけONで、SW5~SW8 のうちSW6だけがONの場合 */
      LED_ON();
      break;
    …

> sw1234=input_c();
これだと、sw1234には、SW5~SW8のデータも入ってしまいます。
> sw1234=input_c() & 0x0f;
とすることで、下位4bit=SW1~SW4のデータだけが入れられます。

あと、スイッチと入力値の対応が「ON=0、OFF=1」だとのことですから、
> case 0x01:WriteFSKbyte(0x01);break;
これだと逆に「SW1がOFFでSW2~4がONの時」って条件になってしまいます。
SW1だけがONな場合の条件は、SW1だけ0でSW2~SW4を1にした「case 0x0E:」になります。


で、話を戻しますが

> SW1~4のどれかが...続きを読む

Q図形の移動をカーソルキー(矢印キー)で移動しようとすると勝手に上の方向に移動する。

Word2003です
今日突然 オートシェープで描いた図形を移動するため、カーソルキー(矢印キー)を押すとどの方向のキーを押しても図形が勝手に上の方向に移動し消えてしまうようになってしまいました。
Ctrlキーを押しながらカーソルキーを押しても同じです。

また、図形で絵を描くため、二つ目の図形をドラッグしても、ドラッグ先から勝手に上の方に移動してしまいます。

原因と直す方法を至急お教え下さい。よろしくお願いします

Aベストアンサー

ANo.1ですが...
私の回答に補足されていますが、ANo.1 で回答したもの以外の原因以外
は知りませんので、その文書特有の不具合なのでは?

新規文書でおきないのならば、その文書を保存しておいてから開くとき
に[修復して開く]を選択して開きます。
これで問題がおきないで修復されているのかを確認してください。

Word 2003 で使用できなくなった破損ファイルを修復する方法
http://support.microsoft.com/kb/881318/ja

Qアスタリスクで正方形

アスタリスク(*)で正方形を作るプログラムをC言語で書いているのですが関数で描画部分を作ることが出来ません。動かす方法を教えて頂けないでしょうか

#include <stdio.h>

void seihoukei(void);
int no,i,j,cnt;
int main(void)
{
int cnt,i,j;

do{
printf("数字(2-9)を入力して下さい:");
scanf("%d",&cnt);

if(cnt<2||cnt>9){
printf("入力エラーです。もう一度入力して下さい");
}
}while(cnt<2||cnt>9);

for(i=1;i<cnt;i++){
for(j=1;j<=cnt;j++){
seihoukei();
}
}
return 0;
}
void seihoukei(void)
{
j = 1;
while(j <= j){
putchar('*');
j=j+1;
}
putchar('\n');
}

Aベストアンサー

とりあえずwhile(j <= j)は無限ループになります。

for(i=1;i<cnt;i++){
for(j=1;j<=cnt;j++){

でcnt*cntの'*'を書けばいいという意図は見えるのですが
void seihoukei(void)でまたループしてるので何がしたいのかよく分かりません。
またここがなぜwhileなのかも不明
ついでにforの条件式がおかしいです。

とりあえず正方形を書きたいだけであれば。

for(i=1;i<cnt;i++){
for(j=1;j<=cnt;j++){
putchar('*');
}
putchar('\n');
}

でいけると思います。
もし関数にしたいなら

for(i=1;i<cnt;i++){
for(j=1;j<=cnt;j++){
seihoukei();
}
}

をseihoukei(cnt);にして

void seihoukei(int size)
{
int i,j;
for(i=0;i<size;i++){
for(j=0;j<size;j++){
putchar('*');
}
putchar('\n');
}
}

を呼び出す形にすればいいと思いますがとりあえず文法が怪しいのでその辺を注意しながらやるといいです。

とりあえずwhile(j <= j)は無限ループになります。

for(i=1;i<cnt;i++){
for(j=1;j<=cnt;j++){

でcnt*cntの'*'を書けばいいという意図は見えるのですが
void seihoukei(void)でまたループしてるので何がしたいのかよく分かりません。
またここがなぜwhileなのかも不明
ついでにforの条件式がおかしいです。

とりあえず正方形を書きたいだけであれば。

for(i=1;i<cnt;i++){
for(j=1;j<=cnt;j++){
putchar('*');
}
putchar('\n');
}

でいけると思います。
もし関数にしたいなら

for(i=1;i<cnt;i++){
for(j=1;j...続きを読む


人気Q&Aランキング