Как сделать разные виды треугольников в C? - PullRequest
0 голосов
/ 23 января 2019

Вопрос довольно простой, но я должен изучить его, чтобы сдать первый экзамен по программированию в колледже, поэтому любая помощь выше всяких похвал. Пока что я могу сделать только обычный треугольник в виде пирамиды, состоящий из звезд, высота которого зависит от входных данных, что говорит о том, насколько ограничены мои знания.

Мне нужно научиться делать треугольники, состоящие из символов, отличных от звездочек, для циклов, например:

для n = 7

ABCDEFG HIJKLM NOPQR STUV WXY ZA B

или используя шестнадцатеричные числа

0 12 345 6789 ABCDE F01234 56789AB

Любая дополнительная помощь будет высоко оценена, но сам по себе код будет столь же хорош, поскольку мне нужно выяснить, как поставить повторяющийся алфавит или другие символы вместо звезд.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Я не буду писать полную программу для вас, так как это домашнее задание. Похоже, вы нарисовали треугольники вниз, и вам просто нужна помощь в том, как использовать разных персонажей. Что я, вероятно, сделал бы, это создать массив символов:

char symbols[] = "0123456789ABCDEF";

Затем создайте указатель индекса, начиная с 0:

int index = 0;

Затем, когда вы рисуете свой символ, используя symbols[index], вы просто увеличиваете index и проверяете, чтобы он не превышал длину. Если это так, вы сбрасываете index обратно на 0.

0 голосов
/ 23 января 2019

Я бы сначала определил строки символов, которые вы хотите отобразить

const char* LETTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
const char* HEX = "0123456789ABCDEF";

А затем вы можете легко получить доступ к нужному символу, проиндексировав эти строки, по модулю их длины, например:

char c;
const int LETTERS_LEN = strlen(LETTERS);
for (int i = 0; i < N; i++) {
    c = LETTERS[i % LETTERS_LEN];
    // place c in your triangle
}

i % LETTERS_LEN заставляет i периодически принимать значения от 0 до LETTERS_LEN - 1, что является именно тем, что вам нужно (если я правильно понимаю ваш пример).

Альтернативное решение будетиспользовать тот факт, что ASCII-код «A» равен 65, и вы можете просто сделать c = 65 + i % 26, но решение, которое я написал, более универсально - вы можете определить любой набор символов, который захотите.

Примечание: Iнекоторое время я не использовал чистый C, возможно, я неправильно понял часть инициализации.Если вы получаете ошибки компиляции, просто используйте #define LETTERS "ABC..."

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...