すべてのヘッダー ファイルを適切に「リンク」した後、コードを正しくコンパイルできるようになりました。mariov1.c (以下に示すコード) を実行したとき、20 のテスト入力を使用しました。その結果、3 つのハッシュマークが出力され、コマンド行が次のように表示されました。
###[xvp@localhost ~]$
現在、ハッシュマークの数が usrHeight になるまで、ハッシュマークを追加し、各行にスペースを減算する 21 個のスペースと 2 つのハッシュマークの出力が想定されていました (基本的に、実際にはハッシュの数によって決定されるように設定されていませんが、それでも機能しますこのように見えるはずです。
How High?
10
constructing...
##
###
####
#####
######
#######
########
#########
##########
###########
これにより、正しい位置合わせが維持されます。
mariov1.c ソース
#include <cs50.h>
#include <stdio.h>
int main(void)
{
int usrHeight = 0;
int levelCounter = 0;
int paddIt = usrHeight - 1;
int hashCounter = 2;
do
{
printf("How high?\n");
int usrHeight = GetInt();
}
while ( usrHeight > 23 || usrHeight < 0);
if ( usrHeight >= 0 && usrHeight <= 23);
{
printf("constructing...\n");
}
for (levelCounter = 0; levelCounter <= usrHeight; levelCounter++)
{
printf("%.*s\n", paddIt, "");
for (int i = 0; i <= hashCounter; i++)
putchar('#');
paddIt = paddIt - 1;
hashCounter = hashCounter + 1;
}
}
この大失敗の後、途中で for ループを使用して別の do while ループを使用して 2 回目の試行を行いました (間違いなく間違いでした) が、端末が継続的にハッシュでいっぱいになったので、どこに行けばよいかわかりません。点。
ここに mariov2.c ソースがあります
#include <cs50.h>
#include <stdio.h>
int main(void)
{
int usrHeight = 0;
int levelCounter = 0;
int paddIt = usrHeight - 1;
int hashCounter = 2;
do
{
printf("How high?\n");
int usrHeight = GetInt();
}
while ( usrHeight > 23 || usrHeight < 0);
if ( usrHeight >= 0 && usrHeight <= 23);
{
printf("constructing...\n");
}
//doing a test to see if this do while loop will handle this appropriatelly
do
{
printf("%.*s\n", paddIt, "");
for (int i = 0; i <= hashCounter; i++)
{
putchar('#');
paddIt = paddIt - 1;
hashCounter = hashCounter + 1;
levelCounter = levelCounter + 1;
}
}
while ( levelCounter <= usrHeight );
//commented area part of original code
//for (levelCounter = 0; levelCounter <= usrHeight; levelCounter++)
//{
// printf("%.*s", paddIt, "");
// for (int i = 0; i <= hashCounter; i++)
// putchar('#');
// paddIt = paddIt - 1;
// hashCounter = hashCounter + 1;
//}
}