• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語のfor文問題で・・・)

C言語のfor文問題でセンセーショナルなタイトルを生成してください

このQ&Aのポイント
  • C言語のfor文問題で三角旗型のアスタリスクを表示させる方法を教えてください。
  • C言語のfor文問題でダイヤ型のアスタリスクを表示させる方法を教えてください。
  • C言語のfor文問題で六角形型のアスタリスクを表示させる方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.2

「ソースコードだけ」っていうじゃなーい、でもそれ「代わりに回答してくれ」って意味ですから、残念。 #我ながら古い。 という訳で方針だけ説明しますが、要は「*の位置決めをどうするか」という話ですね。 ANSIエスケープシーケンスなんて手もなくはないですが、まぁ普通に空白で左から埋めていけばいいでしょう。 「関数」を封じられると#1でも言われているように打つ手なしですが、まぁ本意は「関数を作るな、main()内で完結しろ」って意味でしょうから普通にfor()とputchar()でケースに応じて空白か*を出力するだけです。 一行終わったら改行を出力して次の行、の繰り返し。 配列がNGなのは先に文字列パターンを作って出力するだけ、という手を封じるのが目的でしょうか。 ベタにやってもいいですが、増減値にパターンがあるので各行の空白の数、*の数は計算でも出せなくはありません。

その他の回答 (7)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答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; }

dokbc
質問者

お礼

どうもありがとうございます。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答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; }

dokbc
質問者

お礼

非常に参考になりました、ありがとうございます。

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答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]); } }

dokbc
質問者

お礼

とんでもないです、かなり参考になりました。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.5

あえて問題の答えにはならない方法を書いてみる: #include <stdio.h> #include <stdlib.h> int main() { printf("*\n**\n***\n**\n"); puts("*"); return EXIT_SUCCESS; }

dokbc
質問者

お礼

ありがとうございます。これを元に、プログラムを組んでみます。

回答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 その組み合わせで、一応図形はかける。

dokbc
質問者

お礼

とても為になるヒントありがとうございます。

  • hidebun
  • ベストアンサー率50% (92/181)
回答No.3

そうかそうか…。 外部のテキストファイルに書いておいて、 それを読みだして表示するのはアリ?

dokbc
質問者

補足

おねがいします、C言語のソースコードだけ書いてください。 この問題が終わると、夏休みに入るので、そこからは自分で解けるようにします。 期限は刻々と迫っていて、 とにかく今は考えてる時間がないので・・・ どうか今回だけは、本当にお願いします。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

あなたは「ここに載ったソースコード」を課題への回答として出せなくなるのですが, それでいいんですか? ま, いずれにしても私には「main関数以外の関数は使わない」で出力する方法が思いつきませんが. すべての標準関数を封じられたら手も足も出ない.

dokbc
質問者

補足

失礼しました、それだったら、何も出来ませんよね。 どんな標準関数を使っても、いいので、ソースコードを書いてください。 とにかく時間がないので、すいません。

関連するQ&A