作り方が思い浮かばず困っています。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
SINA

作り方が思い浮かばず困っています。

#1

投稿記事 by SINA » 14年前

プログラミング初心者ですが課題をだされ作り方が思い浮かばず困っています。
お手数ですがどなたかお力添えいただけないでしょうか。
課題というのは
nを入力してください: 5
----+
---++
--+++
-++++
+++++
という感じで入力したnに応じてn段の文字数を表示するというものです。
私も途中まで自分でやってみたのですがなかなか上手く行きません。どうかお願いします。
<途中までのソース>
/*kadai.c*/
#include<stdio.h>
int main()
{
int a,b,c,n;

printf("nを入力してください");
scanf("%d",&n);
for(c=1;c<=n;c++)
{
for(b=0;b<n;b++)
{
printf("*+");
for(a=n;a>1;a--)
{
printf("-");
}
printf("¥n");/*¥は半角ですがこちらで表示できなかったので全角で打ちました。*/
if(a+b!=n)
break;
}
}
return 0;
}

non
記事: 1097
登録日時: 15年前

Re: 作り方が思い浮かばず困っています。

#2

投稿記事 by non » 14年前

過去のスレッドに同じような、(これよりは簡単な)質問があります。
まずは、このレベルを理解してください。
http://dixq.net/forum/viewtopic.php?f=3&t=9448
non

SINA

Re: 作り方が思い浮かばず困っています。

#3

投稿記事 by SINA » 14年前

参考にさせていただきます。有難うございました。

たかぎ
記事: 328
登録日時: 15年前
住所: 大阪
連絡を取る:

Re: 作り方が思い浮かばず困っています。

#4

投稿記事 by たかぎ » 14年前

一応、解答例を書いておきます。
ただし、このまま提出しても、自分で書いていないことが瞬時にわかるはずです。

コード:

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

long input_n(void)
{
retry:
    fputs("nを入力してください: ", stdout); fflush(stdout);

    char s[100+1], c;
    if (scanf(" %100[0123456789]%c", s, &c) < 2 || c != '\n')
    {
        scanf("%*[^\n]%*c");
        goto retry;
    }

    errno = 0;
    char *endptr;
    long n = strtol(s, &endptr, 10);
    if (errno != 0 || *endptr != '\0')
        goto retry;

    return n;
}

int main(void)
{
    long n = input_n();

    for (long i = 1; i <= n; i++)
    {
        for (long j = 1; j <= n; j++)
            putchar(j <= n - i ? '-' : '+');
        putchar('\n');
    }
}

閉鎖

“C言語何でも質問掲示板” へ戻る