21

Re: Оператори вибору switch-case незамінні?

Дякую, форумчане! З вашими підказками у мене вийшло отаке

#include <cs50.h>
#include <stdio.h>
//*Програма має вивести на екран піраміду заданої висоти, вирівняти її по правому краю*//
int main (void)
{
  int s, h, n;//*s-спейс, h-хештег, n-висота піраміди*//
   printf ("Whet is the height of the pyramid? \nGive me an between 1 and 23: ");//*Запитуємо яка висота піраміди*//
   scanf ("%d", &n);//*Вводимо висоту піраміди*//
  
  do 
  {
    if (n <= 0 || n >= 23)//*Перевіряємо, щоб висота була в заданих межах*//
    scanf ("%d", &n);//*Очікуємо введення коректної висоти*//
  }
  while (n <=0 || n >= 23);
  
   for ( s = 2; s < n+2; s ++)
   {
       for ( h = s; h <= n+1; h ++)
       printf (" ");
       
       for (h = 0; h < s; h ++)
       printf ("#");
       
       printf ("\n");
   }
       return 0;
}

Як на мене, то працює. Але, програмка, що мене перевіряла, каже що не все так просто, і видає отакий вирок:
Uploading...
Checking.....................................................................
:) mario.c exists
:) mario.c compiles
:( rejects a height of -1
   \ expected output, not a prompt for input
:( handles a height of 0 correctly
   \ expected an exit code of 0, not a prompt for input
:( handles a height of 1 correctly
   \ expected output, but not " ##\n"
:( handles a height of 2 correctly
   \ expected output, but not "  ##\n ###\n"
:( handles a height of 23 correctly
   \ expected output, not a prompt for input
:( rejects a height of 24
   \ expected output, not a prompt for input
:( rejects a non-numeric height of "foo"
   \ killed by server
:( rejects a non-numeric height of ""
   \ expected output, not a prompt for input
Що вони з мене хочуть?

22

Re: Оператори вибору switch-case незамінні?

CS50 курс хоче що б ви застосовували їх функції з бібліотеки cs50.h
як бачите в С немає string, строки пишуть як char

Подякували: mityaev1

23

Re: Оператори вибору switch-case незамінні?

На C++.

С++ код
// Pyramid

#include <iostream>

using namespace std;

int main()
{
    int i, j;
    int hight;
    char wideEmpty = ' ';
    char wideFullLeft = '/';
    char wideFullRight = '\\';

    cout << "Input pyramid hight: ";
    cin >> hight;

    for (i = 0; i <= hight; i++) //цикл №1
    {
        for (j = 0; j <= hight; j++) //цикл №2, виконується поки не виконається умова j <= hight, тоді знову починається цикл №1. 
                                    //і так продовжується поки в циклі №1 не виконається умова i <= hight
        {
            if (j < (hight - i)) //перевіряємо умову, якщо true - заповнюємо пробілами
            {
                cout << wideEmpty;
            }
            else //інакше заповнюємо піраміду відповідними символами
            {
                cout << wideFullLeft;//заповнюємо ліву частину піраміди
                cout << wideFullRight;//заповнюємо праву частину піраміди
            }
        }
        cout << endl;
    }
    return 0;
}
Результат

Input pyramid hight: 15
               /\
              /\/\
             /\/\/\
            /\/\/\/\
           /\/\/\/\/\
          /\/\/\/\/\/\
         /\/\/\/\/\/\/\
        /\/\/\/\/\/\/\/\
       /\/\/\/\/\/\/\/\/\
      /\/\/\/\/\/\/\/\/\/\
     /\/\/\/\/\/\/\/\/\/\/\
    /\/\/\/\/\/\/\/\/\/\/\/\
   /\/\/\/\/\/\/\/\/\/\/\/\/\
  /\/\/\/\/\/\/\/\/\/\/\/\/\/\
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
Press any key to continue . . .

24

Re: Оператори вибору switch-case незамінні?

mityaev написав:

Що вони з мене хочуть?

Мабуть, хочуть, щоб ви прочитали умову, а не вигадували свої правила.