プログラミング初心者ですが課題をだされ作り方が思い浮かばず困っています。
お手数ですがどなたかお力添えいただけないでしょうか。
課題というのは
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;
}
作り方が思い浮かばず困っています。
Re: 作り方が思い浮かばず困っています。
一応、解答例を書いておきます。
ただし、このまま提出しても、自分で書いていないことが瞬時にわかるはずです。
ただし、このまま提出しても、自分で書いていないことが瞬時にわかるはずです。
#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');
}
}