Нужно вывести в консоль 5 полых (только контуры) фигур используя язык СИ и библиотеку stdio.h .
Фигуры: Квадрат. и 4 прямоугольных треугольников разной направленности.
Другие языки программирования и технологии
Вывести в консоль полые геометрические фигуры используя язык C и библиотеку stdio.h .
#include <stdio.h>
#define W 16
#define H 16
void display(void);
void clean(void);
void draw_square(int a, int x, int y);
void draw_right_triangle(int a, int b, int x, int y);
void flip_w(void);
void flip_h(void);
int main() {
clean();
draw_square(8, 4, 4);
display();
clean();
draw_right_triangle(8, 8, 4, 4);
display();
flip_w();
display();
flip_h();
display();
flip_w();
display();
clean();
return 0;
}
int buffer[H][W];
void display(){
for(unsigned h = 0; h < H; h++){
for(unsigned w = 0; w < W; w++){
printf("%c", buffer[h][w] ? 'x' : ' ');
}
printf("\n");
}
}
void clean(){
for(unsigned h = 0; h < H; h++){
for(unsigned w = 0; w < W; w++){
buffer[h][w] = 0;
}
}
}
void draw_square(int a, int x, int y){
for(unsigned w = x; w < x + a; w++){
buffer[y][w] = 1;
buffer[y + a - 1][w] = 1;
}
for(unsigned h = y; h < y + a; h++){
buffer[h][x] = 1;
buffer[h][x + a - 1] = 1;
}
}
void draw_right_triangle(int a, int b, int x, int y){
float slope = -1.0 * b / a;
for(unsigned w = 0; w < a; w++){
buffer[y][x + w] = 1;
int s_y = b - 1 + slope * w;
buffer[y + s_y][x + w] = 1;
}
for(unsigned h = y; h < y + b; h++){
buffer[h][x] = 1;
}
}
void flip_w(){
for(unsigned h = 0; h < H; h++){
for(unsigned w = 0; w < W/2; w++){
int tmp = buffer[h][w];
buffer[h][w] = buffer[h][W - 1 - w];
buffer[h][W - 1 - w] = tmp;
}
}
}
void flip_h(){
for(unsigned h = 0; h < H/2; h++){
for(unsigned w = 0; w < W; w++){
int tmp = buffer[h][w];
buffer[h][w] = buffer[H - 1 - h][w];
buffer[H - 1 - h][w] = tmp;
}
}
}
#define W 16
#define H 16
void display(void);
void clean(void);
void draw_square(int a, int x, int y);
void draw_right_triangle(int a, int b, int x, int y);
void flip_w(void);
void flip_h(void);
int main() {
clean();
draw_square(8, 4, 4);
display();
clean();
draw_right_triangle(8, 8, 4, 4);
display();
flip_w();
display();
flip_h();
display();
flip_w();
display();
clean();
return 0;
}
int buffer[H][W];
void display(){
for(unsigned h = 0; h < H; h++){
for(unsigned w = 0; w < W; w++){
printf("%c", buffer[h][w] ? 'x' : ' ');
}
printf("\n");
}
}
void clean(){
for(unsigned h = 0; h < H; h++){
for(unsigned w = 0; w < W; w++){
buffer[h][w] = 0;
}
}
}
void draw_square(int a, int x, int y){
for(unsigned w = x; w < x + a; w++){
buffer[y][w] = 1;
buffer[y + a - 1][w] = 1;
}
for(unsigned h = y; h < y + a; h++){
buffer[h][x] = 1;
buffer[h][x + a - 1] = 1;
}
}
void draw_right_triangle(int a, int b, int x, int y){
float slope = -1.0 * b / a;
for(unsigned w = 0; w < a; w++){
buffer[y][x + w] = 1;
int s_y = b - 1 + slope * w;
buffer[y + s_y][x + w] = 1;
}
for(unsigned h = y; h < y + b; h++){
buffer[h][x] = 1;
}
}
void flip_w(){
for(unsigned h = 0; h < H; h++){
for(unsigned w = 0; w < W/2; w++){
int tmp = buffer[h][w];
buffer[h][w] = buffer[h][W - 1 - w];
buffer[h][W - 1 - w] = tmp;
}
}
}
void flip_h(){
for(unsigned h = 0; h < H/2; h++){
for(unsigned w = 0; w < W; w++){
int tmp = buffer[h][w];
buffer[h][w] = buffer[H - 1 - h][w];
buffer[H - 1 - h][w] = tmp;
}
}
}
Похожие вопросы
- Нет библиотеки Dev-C++ нет библиотеки mach.h компилятор MinGW где скачать стандартные библиотеки, и как установить?
- Вопрос для тех кто знает точный ответ, язык C про функции все подробности вопроса внутри...
- для чего используют языки програмиирования: С++,Java, Object Pascal(Delphi), C,C#, PHP.если можно то по несколько примеро
- Вопрос актуальности языка C++, расхождение источников. Мне нужна достоверная инфа на это счет.
- Равны ли по мощности, гибкости языки C# и C++. Равны ли по мощности, гибкости языки C# и C++ или какой то из них мощнее?
- Я так понимаю, что бы создать графический интерфейс, например игру, недостаточно языка c++ ?
- Вопрос по изучению языка C++?
- язык c++
- Программирование! По языку C#!
- Можно ли начинать изучать язык C++,если до этого никогда не программировал?