A 回答 (7件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
> 数が逆しかできないです......。
とわかっているのなら、逆にするだけです。
次の問題を解いてみましょう
○入力した数値まで、昇順と降順を同時に出力するプログラムを作る
例) 5 を入力したら
1 5
2 4
3 3
4 2
5 1
複雑に見えた元の問題ですが、簡単なプログラムを組み合わせだけだとわかるかと思います。
どんな複雑なプログラムも、実際には「簡単なプログラム」を組み合わせたものです。
この「簡単なプログラム」への分解方法と組み合わせ方法を考えるのが、プログラミングです。
問題に行き詰まったら、分解することから考えてみましょう。
No.6
- 回答日時:
>私が希望している形はケース(2)の形です。
>11111
>□222
>□□3 (※3段ピラミッドの場合)
以下のように、して下さい。
---------------------------------------------------
#include <stdio.h>
int main(void){
int dansu; //入力値(段数)
int yoko; //横幅の個数(最上段)
int i;
int j;
int val; //各段に表示する値(10の余りの数)
printf ("1~999の数値を入力してください=>");
scanf("%d",&dansu);
printf("入力値は%dです\n",dansu);
if (dansu < 1 || dansu > 999){
printf("数値が範囲外です\n");
return 0;
}
//最上段の横幅の個数を求める
yoko = 2 * dansu - 1;
//1~段数まで繰り返す
for (i = 0; i < dansu; i++,yoko--){
val = (i+1) % 10;
//1~各段の横幅分まで繰り返す
//各段の空白は1段ごとに1つずつ増える
//各段の横幅1段ごとに1つずつ減る
for (j = 0; j < yoko; j++){
if (j < i){
printf(" ");
}else{
printf("%d",val);
}
}
//最後で改行する
printf("\n");
}
return 0;
}
---------------------------------------------------
以下実行結果です。
1~999の数値を入力してください=>3
入力値は3です
11111
222
3
1~999の数値を入力してください=>7
入力値は7です
1111111111111
22222222222
333333333
4444444
55555
666
7
--------------------------------------------------------------
このサイトでは、空白がつめられるので、きれいな形になりませんが、
実際に実行すると、きれいな形で表示されませす。
不明点があれば、補足ください。
--------------------------------------------------------
No.5
- 回答日時:
#4です。
すみません、間違いました。
ケース1)
111
□22
□□3
は、きれいな三角形になりません。
そうするには、
ケース2)
11111
□222
□□3
ケース3)
1□1□1
□2□2
□□3
が正しいです。
ケース1)2)3)のどれをのぞまれますか?
No.4
- 回答日時:
>ですが、私の質問の内容不足もあったのですが、ピラミッドなので、形としては、
>111
>□22
>□□3
>にする必要があります。
とういうことですが、きれいな三角形をひっくりかえしたものを描きたいということでしょうか?
そうすると、3段の三角形を例に取ると
ケース1)
111
□22
□□1
は、きれいな三角形になりません。
そうするには、
ケース2)
11111
□222
□□1
ケース3)
1□1□1
□2□2
□□1
のようにするしか有りません。
1)2)3)のどれを、のぞまれてますか?
No.3
- 回答日時:
#1です。
このようなかたちになればよいですか?
-----------------------------------------------
#include <stdio.h>
int main(void){
int dansu; //入力値(段数)
int i;
int j;
int val; //各行に表示する値(10の余りの数)
int kaisu; //各行で繰り返す回数
printf ("1~999の数値を入力してください=>");
scanf("%d",&dansu);
printf("入力値は%dです\n",dansu);
if (dansu < 1 || dansu > 999){
printf("数値が範囲外です\n");
return 0;
}
//1~段数まで繰り返す
for (i = 1; i <= dansu; i++){
val = i % 10;
kaisu = dansu - i + 1;
//1~各行の段数まで繰り返す
for (j = 1; j <= dansu; j++){
if (i - j > 0){
printf(" ");
}else{
printf("%d",val);
}
}
//最後で改行する
printf("\n");
}
return 0;
}
------------------------------------------------------
以下、実行結果です。
1~999の数値を入力してください=>13
入力値は13です
1111111111111
222222222222
33333333333
4444444444
555555555
66666666
7777777
888888
99999
0000
111
22
3
-----------------------------------------
このサイトはスペースがつぶされるので、見た目とは
違います。実行して確認して下さい。
No.2
- 回答日時:
まずは
「読み込んだ整数の段数を/第i行目にはi % 10によって得られる数字を表示」
は作れますか?
「読み込んだ整数の段数を持つ下向き『*』のピラミッドを表示」
は作れますか?
例えば、3段の*のピラミッドだと
*****
□***
□□*
こんな感じになるでしょう。
i=0からループさせれば
i=0, 0個の空白、5個の* (5=3+3 -1)
i=1, 1個の空白、3個の* (3=(3-1)+(3-1)-1)
i=2, 2個の空白、1個の* (1=(3-2)+(3-2)-1)
他の数のピラミッドについても調べてみましょう。
法則が見つかるはずです。
No.1
- 回答日時:
以下のようにしてください。
1~999の段数まで行います。上限を変えたい場合は、999の値を自分で好きなように変えてください。
------------------------------------------------------
#include <stdio.h>
int main(void){
int dansu; //入力値(段数)
int i;
int j;
int val; //各行に表示する値(10の余りの数)
int kaisu; //各行で繰り返す回数
printf ("1~999の数値を入力してください=>");
scanf("%d",&dansu);
printf("入力値は%dです\n",dansu);
if (dansu < 1 || dansu > 999){
printf("数値が範囲外です\n");
return 0;
}
//1~段数まで繰り返す
for (i = 1; i <= dansu; i++){
val = i % 10;
kaisu = dansu - i + 1;
//1~各行の回数まで繰り返す
for (j = 1; j <= kaisu; j++){
printf("%d",val);
}
//最後で改行する
printf("\n");
}
return 0;
}
-------------------------------------------
以下、13の場合の、実行結果です。
1~999の数値を入力してください=>13
入力値は13です
1111111111111
222222222222
33333333333
4444444444
555555555
66666666
7777777
888888
99999
0000
111
22
3
ーーーーーーーーーーーーーーーーーーーーーー
不明点は、補足してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# 至急お願いします。C言語で.imgのファイルを読み込んで1バイトづつ出力するプログラムを作りたいので 3 2023/01/16 22:49
- C言語・C++・C# C言語 3 2022/10/04 15:07
- その他(プログラミング・Web制作) プログラミングについて(Python) 添付した画像はC言語で簡単に作ったソースで、1つの配列に5つ 3 2022/09/10 19:15
- C言語・C++・C# C言語について。 3 2022/11/05 20:30
- 計算機科学 急ぎです、大学数学再帰の問題難しくてがわからないです。 以下の4つの文字列を連結して新たに生成できる 1 2023/05/17 20:11
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
数字以外が入力されたらエラー...
-
正負を反転させて出力するプロ...
-
プログラミング初心者です。 Py...
-
scanfが2回使えない・・・?;
-
Linuxで入力待ちなしkeyread関...
-
if文の条件にscanf関数を使うと…?
-
scanf が無視されます
-
scanf関数 バッファに残ったエ...
-
java初心者です。入力されたの...
-
scanf("%s", buf);でスペースを...
-
Eclipseコンソール表示を、リセ...
-
double型が正常に認識されてい...
-
入力エラーの処理について。
-
【C言語】入力された文字種別ご...
-
少数部の判定
-
fgetsとループ処理
-
C言語scanf_sで何故か2回入力に...
-
Userformの入力順序をタブオー...
-
enterでループ終了
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
double型が正常に認識されてい...
-
プログラミング初心者です。 Py...
-
正負を反転させて出力するプロ...
-
Excel VBAで、Application.Inpu...
-
C言語について。
-
batプログラム上で文字列を入力...
-
*をユーザーが入力した数字の数...
-
cout関数を使っているのですが...
-
漢字のソートについて
-
数字以外が入力されたらエラー...
-
Userformの入力順序をタブオー...
-
ワードで文字を入力する時の変...
-
Linuxで入力待ちなしkeyread関...
-
java初心者です。入力されたの...
-
EDITコントロールで入力できる...
-
Eclipseコンソール表示を、リセ...
-
小数か整数かを判定する方法
-
C言語scanf_sで何故か2回入力に...
-
VB.NETで16進数+16進数や16進...
-
Linuxプログラミングで、キーボ...
おすすめ情報
ご回答ありがとうございます。
確かにtastu99さん通りのプログラムが実行されました。
ですが、私の質問の内容不足もあったのですが、ピラミッドなので、形としては、
111
□22
□□3
にする必要があります。
ご回答ありがとうございます。
*を用いたのはできましたが、
int i, j; //ループ変数
int no; //段数番号
int prmd; //ピラミッドの個数
int blnk; //空白の個数
printf("段数を入力してください。"); scanf("%d", &no);
//ピラミッド//
for(i=no; i>0; i--){
prmd = (i - 1) * 2 + 1;
blnk = no - i;
for(j=1; j<=blnk; j++)
putchar(' ');
for(j=1; j<=prmd; j++)
printf("%d", i % 10);
putchar('\n');
数が逆しかできないです......。
字数制限で一部省略しています。
補足解答ありがとうございます。
こちらの補足内容間違いでした。
私が希望している形はケース(2)の形です。
11111
□222
□□3 (※3段ピラミッドの場合)
この数字の列のピラミッドです。