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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コンパイルエラーについて
-
printf で二進表示を行いたい。
-
c言語でAからZまでを表示する...
-
テキストカーソル位置の取得
-
4の倍数を論理演算で表す。。
-
cshの文字列操作(0埋め)
-
【C言語教えてください】sin波...
-
10個出力で改行したいのですが...
-
wsprintfの書式制御文字列につ...
-
error C2143: 構文エラー : ';'...
-
printfの出力内の文字をdefine...
-
%P と %X の違い
-
C言語
-
strcmp
-
(C言語)めちゃくちゃな値にな...
-
コマンドラインに出力した文字...
-
スレッドとメッセージキューに...
-
printf( " %2d", p * q );
-
Visual Sutdio 2017 でのC言語...
-
defineで定数が置き換えられな...
おすすめ情報