ページ 11

C言語のfor文問題

Posted: 2010年7月16日(金) 00:20
by KKK
わからない問題がありまして・・・

下のアスタリスクを表示させる問題なのですが・・・

課題の締め切りはあと僅かで、考えてる暇もないので、

わかる方いたら、C言語のソースコードだけでいいので、教えてくだい、お願いします

ただし、printfで、全てのアスタリスクを表示させるのはNGで、配列も使ってはいけません。

C言語はfor文が苦手です・・・


(1)

   *
   **
   ***
   **
   *

(2)

   *
  ***
  *****
   ***
  *

(3)

   **
  ****
   **

↑コンパイラした後の、表示イメージはこんな感じです。

以上3問です。

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 00:22
by パコネコ
ソースを直接教えるのはここではアウトなんですよね。
考え方と解き方もしくはヒントでよければ…

多分そのうち怒られますよ?「利用規約読んでください」って…

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 00:24
by パコネコ
この形で固定ですか?
たとえば入力してその数値が一辺の長さになったり…

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 00:25
by Poco
> ただし、printfで、全てのアスタリスクを表示させるのはNGで、配列も使ってはいけません。

では、puts使えば良いんじゃないですか?

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 00:26
by パコネコ
…後で先生に怒られる気がする…

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 00:37
by MAY
とりあえず先生に怒られてきましょう
それがいやならまずはソースを書いてみましょう

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 00:39
by シエル
ほとんど同じような質問前になかったっけ?

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 00:39
by パコネコ
返信待ってても無駄な気がしてきたので、
一つ目のヒントでも…
(1)

*
**
***
**
*
これを、表にします。
行:数
1: 1
2: 2
3: 3
4: 2
5: 1
3までは一つずつ大きくなって、それ以降減っていきます。
for文苦手らしいですが、意味の理解はできてますか?
一応それも書いときます。
for(①;②;③){

}
 まず最初に①を行います。
これはfor文に入った時の一回だけです。
おもに数値の初期化みたいなのが入ることが多いです。
a=0
みたいなの

次に②です。
条件式です。
if文みたいなものです。わかりますか?

最後に③です。
一番下の「}」のときに処理します。
たとえば
a=a+1
みたいな式が入ることが多いです。
わからないところはどこですか?

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 00:42
by Poco
大学の場合だと、先生が怒るってことは、まず無いと思いますよ。
単純に単位がもらえなくなるだけです。

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 00:43
by パコネコ
この問題では式の部分に
printf("*");
を入れてあげてください。
これでできるはずです。
一度書いてみてください。それでもわからないところはお教えします。
あとこれの場合for文は重ねて使います。

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 00:48
by パコネコ
そういえば大学の先生は怒ってくれないってよく先生(高校の)が、言ってましたね。
ソースかけたら、できれば張ってくださいね。
3問ぐらいならそんなに時間掛からないと思うので、1時間かからないかと…
(教えてもらいながらでも)

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 00:50
by MAY
(1)の場合だと
for(・・・){
for(・・・)

}
for(・・・){
for(・・・)

}
出来ると思います

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 00:52
by パコネコ
本人見てますかね?
もう寝てますか~?

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 00:53
by MAY
やっぱりこういう課題出るのって大学なんですかね

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 00:54
by KKK
> ソースを直接教えるのはここではアウトなんですよね。
> 考え方と解き方もしくはヒントでよければ…
>
> 多分そのうち怒られますよ?「利用規約読んでください」って…ぎり

今回限りでお願いします、とにかく時間がないので。

この課題が終われば、次からは、夏休みにはいるので、そこからは自力で解けるようにします。

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 00:55
by シエル
まったく分からないのはひどすぎます。
少しは自分で考えてコードを提示しましょう。

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 00:59
by MAY
とりあえず書けたところまででもいいのでソースを見せてください

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 01:00
by パコネコ
/*
課題の締め切りはあと僅かで、考えてる暇もないので、
わかる方いたら、C言語のソースコードだけでいいので、教えてくだい、お願いします
*/
とりあえずこの文章の悪いところを書いときますね。
締め切りまであと僅か?難しくてわからないのはわかりますが、時間が足りなくなるほどの問題じゃないです。
解き方さえわかれば、時間はあまりかかりません。

ソースコードだけでも?ソースコードって丸っきり答えじゃないですか!
利用規約読まないと結構反応冷たいですよ。

とりあえず丸投げどころか、答えだけを請求するのはひどいですよ~。

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 01:04
by KKK
すいません、

じゃあ自分なりに書いたコードを書きますね。

include<stdio.h>
         void main (void)
   {
    int i,b;

       for(i=0; i<5; i++)
      {
      if(i<3)
 {
for(b=0; b<=i; b++)
{
printf("*");
}
   }
  else
   {
for(i=3; i0; i--)

{
printf("*");
}
}
printf("\n");
}


}

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 01:05
by パコネコ
やる気があるなら付き合いますけど…他にもやらないといけない宿題でも溜まっているんですか?
とにかく実際に動かなくてもいいので自分でできるところまでソースのせてください。
足りない部分を埋めながらでも教えますから…2時までには終わりますよ…順調にいけばですけど
================
タイミングが…失礼
画像

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 01:14
by パコネコ
#include<stdio.h>
void main (void)
{
int i,b;
for(i=0; i<5; i++){
if(i<3)for(b=0; b<=i; b++)printf("*");
else for(b=i; 0<b; b--)printf("*");
printf("\n");
}
}
とりあえず見ずらかったので書き換えました。
#つけ忘れてますよ…2つ目のループではiではなくbでループしましょう。
少し待ってくださいね、どう直せばよくなるか、見てみます。

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 01:16
by KKK
ありがとうございます、ホントに。

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 01:17
by MAY
外側のforのカウント用の変数にiを使っているのに内側のforのカウント用の変数にもiを使っています

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 01:22
by パコネコ
とりあえずできるだけ近い形で修復しました。
#include<stdio.h>
void main (void)
{
int i,b;
for(i=1; i<=5; i++){
if(i<3)for(b=0; b<i; b++)printf("*");
else for(b=6-i; 0<b; b--)printf("*");
printf("\n");
}
}
最初のfor文のとき、0からやっていたので中のループからすれば1回行いません
6-iは前に書いたグラフから式を出しました。

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 01:27
by パコネコ
どこで何を行っているのかさえわかっていただければいいと思います。
元のソースを見てみるとiの値を触るなどのミスもありますが、結構おしいところまでできていました。
時間ないらしいのでソース書きましたが…。
次の問題も完成したら(未完成でも可)張ってくださいね。

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 01:31
by MAY
else for(b=5-i;b>0;b--)
だと思うんですけど

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 01:32
by KKK
> どこで何を行っているのかさえわかっていただければいいと思います。
> 元のソースを見てみるとiの値を触るなどのミスもありますが、結構おしいところまでできていました。
> 時間ないらしいのでソース書きましたが…。
> 次の問題も完成したら(未完成でも可)張ってくださいね。

どーも、付き合ってくれてありがとうございます。

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 01:33
by パコネコ
それだとi=5のとき足りなくなりません?

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 01:35
by パコネコ
/*
else for(b=5-i;b>0;b--)
だと思うんですけど
*/
これだと他のところもいじればいいけど、ここだけなら駄目だと思う

================
たとえば
for(i=0; i<=5; i++){
if(i<3)for(b=0; b<=i; b++)printf("*");
else for(b=5-i; 0<b; b--)printf("*");
printf("\n");
}
こんなんですよね。
画像

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 01:35
by MAY
else for(b=0;b<5-i;b++)
でも出来ると思います

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 01:37
by パコネコ
もともとb--って書いてたのでそっちで書きました。

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 01:38
by MAY
すいません携帯から何で間違ってるといけないんで後は任せますね

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 01:39
by Poco
> やっぱりこういう課題出るのって大学なんですかね

というか、この時期に課題が出るのが大学なんです。
#そして、不真面目な学生がネットで課題を丸投げするのが、この時期の風物詩の一つです。

まあ、(2)(3)もパコネコさんが提示したソースをベースにすれば大丈夫でしょうね。
アスタリスクの出力回数を変更するだけだし。

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 01:40
by パコネコ
グラフいります?

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 01:48
by パコネコ
付き合いたいですが親がうるさくて(明日も学校で)…仕方ないので寝ます。
最後までつきあえなくてごめんなさい。
また明日きます。

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 01:53
by MAY
ちょっとヒント(2)
今回は*だけではなく空白(_)も描画しなくてはなりません
__*
_***
*****
_***
__*

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 01:59
by MAY
ちなみに課題の提出日はいつですか?

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 02:01
by パコネコ
それ私も気になっていました

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 02:05
by パコネコ
ちなみに今はpspからです。
長い文はしんどいから書かないけど・・・

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 02:06
by MAY
携帯よりはましですよ

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 02:17
by パコネコ
更新ボタン押した後長いんですよね
書いてる間は、前の文見えませんし

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 02:29
by MAY
書いている間前の文が見れないのは同じです

それにしても遅いですね大丈夫かな

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 02:34
by MAY
もしかしてもう解決してるとか?
携帯からでは見れないので

それか明日までじゃないのか

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 09:59
by KKK
> もしかしてもう解決してるとか?
> 携帯からでは見れないので
>
> それか明日までじゃないのか
>
>

今日までです

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 10:48
by さかまき
最小2乗法による離散データの近似結果を用い、1~5における
スペースの数、星の数を数式化して解く方法です。
printfと配列をつかわずに(1)と(2)を解いてみました。

ちなみに(3)の星の数の方程式は
-2 * x*x + 8x -4 (x=1,2,3) です。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int    funcSpace(int x)
{
double y=0.0;

    y += -(1.0 / 6.0)  * pow(x,4);
    y += 2.0 * pow(x,3) ;
    y += -(235.0 / 30.0) * pow(x,2) ;
    y += 11.0 * x ;
    y += -3.0  ;
    return (floor(y + 0.5));
}

int    funcAsterisk(int x)
{
double y=0.0;

    y += (1.0 / 3.0)  * pow(x,4);
    y += -4.0 * pow(x,3) ;
    y += (141 / 9.0) * pow(x,2) ;
    y += -22.0 * x ;
    y += 11.0  ;
    return (floor(y + 0.5));
}


void    drawSpace(int j)
{
    j=funcSpace(j);
    while(j>0)
    {
        putchar (' ');
        j--;
    }
}


void    drawAsterisk(int j)
{
    j=funcAsterisk(j);
    while(j>0)
    {
        putchar ('*');
        j--;
    }
}

main()
{
int    i;
    // (1)
    puts("(1)");
    for(i=1;i<6;i++)
    {
        drawAsterisk(i);
        puts("");
    }

    // (2)
    puts("(2)");
    for(i=1;i<6;i++)
    {
        drawSpace(i);
        drawAsterisk(i);
        puts("");
    }
}

Re:C言語のfor文問題

Posted: 2010年7月16日(金) 20:09
by パコネコ
今日までってことはもちっと早く知りたかった…
今日ってことはもう手遅れか…