C言語のfor文問題で・・・
わからない問題がありまして・・・
アスタリスクを表示させる問題なのですが・・・
わかる方いたら、ソースコードだけでいいので、教えてくだい、お願いします
ただし、printfで、全てのアスタリスクを表示させるのはNGで、配列も使ってはいけません。
main関数以外の関数は使わないように、お願いします。
(1)
1段目に*が1つで、 (三角旗型のアスタリスク)
2段目に*が2つで、
3段目に*が3つで、
4段目に*が2つで、
5段目に*が1つ。
(2)
1段目に*が1つで、
2段目に*が3つで、
3段目に*が5つで、 (ダイヤ型のアスタリスク)
4段目に*が3つで、
5段目に*が1つ。
(3)
1段目に*が2つで、 (六角形型のアスタリスク)
2段目に*が4つで、
3段目に*が2つ。
以上3問です。
No.2ベストアンサー
- 回答日時:
「ソースコードだけ」っていうじゃなーい、でもそれ「代わりに回答してくれ」って意味ですから、残念。
#我ながら古い。
という訳で方針だけ説明しますが、要は「*の位置決めをどうするか」という話ですね。
ANSIエスケープシーケンスなんて手もなくはないですが、まぁ普通に空白で左から埋めていけばいいでしょう。
「関数」を封じられると#1でも言われているように打つ手なしですが、まぁ本意は「関数を作るな、main()内で完結しろ」って意味でしょうから普通にfor()とputchar()でケースに応じて空白か*を出力するだけです。
一行終わったら改行を出力して次の行、の繰り返し。
配列がNGなのは先に文字列パターンを作って出力するだけ、という手を封じるのが目的でしょうか。
ベタにやってもいいですが、増減値にパターンがあるので各行の空白の数、*の数は計算でも出せなくはありません。
No.8
- 回答日時:
たぶんですね、いろいろ条件がついてるのを見て、パニックになってるだけだと思うんですよ。
まずは、冷静に考えること。
条件がなければ、こんなプログラムをまず考えますよね?
/* 問題(2) */
int main(){
printf("__*\n"); /* スペースを_だ代用 */
printf("_***\n");
printf("*****\n");
printf("_***\n");
printf("__*\n");
return 0;
}
「配列も使ってはいけません」等と言われなければ、配列使うことなんか考えもしないでしょう。
「main関数以外の関数は使わないように」等と言われなれば、関数を定義することなんか考えもしないでしょう。
自分で思いつけるプログラムを作ってから、条件に合せて変更していけばいいのです。
printfがだめなら、代替方法がないか、調べてみましょう。マニュアルを読めば、printf以外にも出力関数がいっぱいあることがわかります、printfと同じ機能でなくても、今回の目的を十分果せる関数が見つかります。
forは所定回数繰り返すのに使用します。問題を見れば「*がX個」といかにも「forで繰り返してくれ」と言わんばかりのものがあるじゃないですか。
プログラムの書き方は一つじゃないです。
ここで「解答」待ってる時間があるなら、自分で考えて、とりあえず実行してみましょうよ。
/* 問題(2)別解 */
#include <stdio.h>
#define S putchar('*');
#define s putchar(' ');
#define E putchar('\n');
int main(){
s s S s s E
s S S S s E
S S S S S E
s S S S s E
s s S s s E
for(;0;) ;
return 0;
}
No.7
- 回答日時:
どうすればいいか、自分で考えたコードはかけらも無いんでしょうか?
そういったものを提示して、助言を求めれば前向きな回答も付くのですが。
さて、直前の方達に便乗して私も…
インデントの調整に全角スペース使用しています。
#include<stdio.h>
int main(void)
{
int yline, pattern, mask;
for(yline = 0; yline < 5;yline++) {
pattern = 0;
switch(yline) {
case 2:
pattern |= 0x20;
case 1:
case 3:
pattern |= 0x40;
case 0:
case 4:
pattern |= 0x80;
}
for(mask = 0x80;mask;mask >>= 1) {
if(pattern & mask) {
putchar('*');
} else {
putchar(' ');
}
}
putchar('\n');
}
return 0;
}
#include<stdio.h>
int main(void)
{
int yline, pattern, mask;
for(yline = 0; yline < 5;yline++) {
pattern = 0;
switch(yline) {
case 2:
pattern |= 0x88;
case 1:
case 3:
pattern |= 0x50;
case 0:
case 4:
pattern |= 0x20;
}
for(mask = 0x80;mask;mask >>= 1) {
if(pattern & mask) {
putchar('*');
} else {
putchar(' ');
}
}
putchar('\n');
}
return 0;
}
No.6
- 回答日時:
#5に続いて実現はしてるけど問題の意図には沿わない手法。
#include<stdio.h>
int main(void)
{
const char *pattern=" *\n ***\n*****\n ***\n *\n";
int i;
for(i = 0; pattern[i] != '\0' ; i++)
{
putchar(pattern[i]);
}
}
No.4
- 回答日時:
方針1
for(i = 0; i < 10; i++) putchar(' ');
for(i = 0; i < 10; i++) putchar('*');
putchar('\n');
for(i = 0; i < 10; i++) putchar(' ');
for(i = 0; i < 10; i++) putchar('*');
putchar('\n');
for(i = 0; i < 10; i++) putchar(' ');
for(i = 0; i < 10; i++) putchar('*');
putchar('\n');
for(i = 0; i < 10; i++) putchar(' ');
for(i = 0; i < 10; i++) putchar('*');
putchar('\n');
for(i = 0; i < 10; i++) putchar(' ');
for(i = 0; i < 10; i++) putchar('*');
putchar('\n');
が動かせるように考える。
方針2
表示された図形を見て、いじれそうな数字をいじって、どう変化するか眺めてみる。
方針3
その組み合わせで、一応図形はかける。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- 数学 線形代数の対称行列についての問題がわからないです。 2 2023/01/08 14:59
- C言語・C++・C# 至急教えてください! プログラミングの問題です! お願いします! 出力2と全く同じ出力をするように、 2 2022/06/22 23:10
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- 数学 数学の集合の問題です。わからないので教えて頂けませんか。 問題は2つです。 1,各集合を, 空集合, 3 2023/06/19 22:17
- 高校 数学Aの問題で、円に内接するN角形(N>4)の対角線の総数は ア 本である。また、Fの頂点三つからで 1 2023/04/13 17:47
- 化学 (2)の問題の答えを具体的に教えて欲しいです どうして高さが同じだと大気圧と等しくなるのですか? ア 3 2023/06/09 08:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
10個出力で改行したいのですが...
-
strcmp
-
CTRL+Dでループを抜けるには
-
4の倍数を論理演算で表す。。
-
【C言語教えてください】sin波...
-
scanfに文字が入力されたときに...
-
ガウスの消去法、後退代入について
-
C言語プログラミング
-
defineで定数が置き換えられな...
-
printf で二進表示を行いたい。
-
c言語でAからZまでを表示する...
-
分数を表示するプログラム(長...
-
switch分のケースを範囲数?に...
-
カレンダーのプログラムについて
-
C言語初心者です。次の問題で質...
-
C言語です
-
じゃんけんゲームの応用
-
BMI値から体型を判定するプログ...
-
(C言語)めちゃくちゃな値にな...
-
なぜgccはstdio.hをインクルー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語について
-
printf で二進表示を行いたい。
-
cshの文字列操作(0埋め)
-
10個出力で改行したいのですが...
-
コンパイルエラーについて
-
テキストカーソル位置の取得
-
strcmp
-
unsigned int型について
-
c言語でAからZまでを表示する...
-
printf( " %2d", p * q );
-
コマンドラインに出力した文字...
-
printfの出力内の文字をdefine...
-
ホームページをC言語で作りたい...
-
コマンドプロンプトがすぐ消える
-
小数点切捨て表示
-
【C言語教えてください】sin波...
-
switch分のケースを範囲数?に...
-
二つの整数値の大小比較
-
4の倍数を論理演算で表す。。
-
defineで定数が置き換えられな...
おすすめ情報