Noor Shiha Ответов: 3

Что не так с этим кодом на языке Си?


Итак , я создаю программу, которая создает звездный узор, давая вам несколько строк для ввода, например:

1 - введите 2 строки :

*
**

2 - введите 3 строки :

*
**
***

3 - введите 4 строки :
*
**
***
****

Для каждой следующей строки количество звезд увеличивается на единицу я сделал программу, написанную на языке Си, которая делает это, но она потерпела неудачу ("я знаю, что мой код может показаться ужасным, но, пожалуйста, потерпите, я все еще новичок XD)

Что я уже пробовал:

#include <stdio.h>
int main() {
int i = 0;
int b = 1;
int r;
int o = 0;
scanf("%d",&r);
int c = (r + b) - r;
while ( i < c) {
if (c == r) {
return 0;
}
while( o < c ) {
printf("*");
}
printf("/n");
i++;
b++;
c = (r + b) - r;
}
}

3 Ответов

Рейтинг:
1

Christian Graus

Почему вы изучаете язык Си в 2019 году? Где вы собираетесь его использовать?

Я не понимаю, почему вы связали себя узлами со всем этим кодом. Эта работа:

#include <stdio.h>
int main() {
int r;
scanf("%d",&r);

for(int i = 0; i < r; ++i)
{
printf("*");

}

printf("\n");

return 0;
}


Noor Shiha

Мой проф на youtube использует его XD , кстати спасибо за код :D , Я сделал тот код, который вы там видели, потому что я сам пытался создать алгоритм :P

Christian Graus

Но почему вы изучаете Си? Он сложный и почти не используется.

Noor Shiha

Курс , который я вижу, называется "решение проблем через C", так как я хотел отточить свои навыки решения проблем, и курс оказался потрясающим, когда я закончу курс, я увижу курс алгоритмов, который использует Python!

Рейтинг:
0

Patrice T

Научитесь правильно делать отступы в вашем коде, это покажет его структуру, и это поможет чтению и пониманию. Это также помогает выявлять структурные ошибки.

#include <stdio.h>
int main() {
    int i = 0;
    int b = 1;
    int r;
    int o = 0;
    scanf("%d",&r);
    int c = (r + b) - r;
    while ( i < c) {
        if (c == r) {
            return 0;
        }
        while( o < c ) {
            printf("*");
        }
        printf("/n");
        i++;
        b++;
        c = (r + b) - r;
    }
}

Стиль отступа - Википедия[^]

Профессиональные редакторы программистов имеют эту функцию и другие, такие как сопоставление скобок и подсветка синтаксиса.
Блокнот++ Главная Страница[^]
личные[^]

Ваш код ведет себя не так, как вы ожидаете, или вы не понимаете, почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что должен делать ваш код, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]

1.11 — отладка программы (пошаговое выполнение и останова) | выучить C++[^]

Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.


Noor Shiha

Большое спасибо Патрис я смотрю видео о том как использовать отладчик в кодовых блоках :) Кстати, это удивительное сообщество!!!

Patrice T

Спасибо

Рейтинг:
0

k5054

Цитата:
while( o < c ) {
    printf("*");
}
Бесконечное количество звезд ...


Noor Shiha

Ну тупой я xD

Noor Shiha

Вот почему я никогда не должен читать свой код, когда мне хочется спать :P

k5054

Пожалуйста.
Возможно, вам стоит подружиться со своим отладчиком, незаменимым инструментом для любого программиста. Кроме того, тщательно подумайте о своем имени переменной - использование однобуквенных переменных имеет свое место, но обычно вы хотите использовать что-то, что передает информацию о предполагаемом использовании переменной. Если вам нужно пересмотреть свой код через несколько месяцев, вы можете почесать голову, задаваясь вопросом, что переменная " О " должна делать для вас.

Noor Shiha

Извините, что интернет медленный, вот почему я опоздал на ответ спасибо Вам большое за ваш ответ :D Я вижу видео о том, как использовать отладчик в блоках кода :P