Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <ctype.h>
- int getline(char s[], int lim);
- int jo_e(char s[]);
- int main() {
- char be[4];
- int x = 0, y = 0, sz = 0, m = 0;
- while (printf("Kerem az X koordinatat --> "), x = getline(be, 3) != 0) {
- if (jo_e(be)) {
- x = jo_e(be);
- if (x > 0 && x < 19) {
- break;
- }
- }
- }
- if (x) {
- while (printf("Kerem az Y koordinatat --> "), getline(be, 5) != 0) {
- if (jo_e(be)) {
- y = jo_e(be);
- if (y > 0 && y < 19) {
- break;
- }
- }
- }
- while (printf("Kerem a magassagot --> "), getline(be, 5) != 0) {
- if (jo_e(be)) {
- m = jo_e(be);
- if (m >= 1 && y + m < 20) {
- break;
- }
- }
- }
- while (printf("Kerem a szelesseget --> "), getline(be, 5) != 0) {
- if (jo_e(be)) {
- sz = jo_e(be);
- if (sz >= 1 && x + sz < 20) {
- break;
- }
- }
- }
- int i, j;
- printf("\n*"); /* *01234567890123456789* sor kiírása*/
- for (i = 0; i < 20; i++) {
- if (i < 10) printf("%d", i);
- else printf("%d", i - 10);
- }
- printf("*\n");
- for (i = 0; i < 20; i++) {
- if ((i >= y) && (i <= y + m) && i < 10) {
- if (i == y) {
- printf("%d%*s", i, x, ""); /*a megadott x koordinátára ugrás*/
- for (j = 0; j < sz; j++) printf("A"); /*szélességnek megfelelő A betű kiírása*/
- printf("%*s%d\n", 19 - sz - x + 1, "", i); /*a 19. karakterre ugrás, hogy a sor végén a sorszámot ki lehessen írni*/
- }
- if (i == y + m && m > 1) {
- printf("%d%*s", i, x, ""); /*a téglalap aljának kiírása hasonlóan úgy, mint a teteje lett kiíratva*/
- for (j = 0; j < sz; j++) printf("A");
- printf("%*s%d\n", 19 - sz - x + 1, "", i);
- }
- /*köztes sorok, pl: A A kiírása*/
- if (i > y && i < y + m - 1 && m > 1) printf("%d%*s%c%*s%c%*s%d\n", i, x, "", 'A', sz - 2, "", 'A', 19 - sz - x + 1, "", i);
- }
- /*ha a koordináták átlépték a 10-es értéket, akkor az i értékéből kiíráskor mindig ki kell vonni, hogy ne 10-től írjon ki, hanem ismét 0-től 9-ig*/
- else if ((i >= y) && (i <= y + m) && i >= 10) {
- if (i == y) {
- printf("%d%*s", i - 10, x, "");
- for (j = 0; j < sz; j++) printf("A");
- printf("%*s%d\n", 19 - sz - x + 1, "", i - 10);
- }
- if (i == y + m && m > 1) {
- printf("%d%*s", i - 10, x, "");
- for (j = 0; j < sz; j++) printf("A");
- printf("%*s%d\n", 19 - sz - x + 1, "", i - 10);
- }
- if (i > y&&i < y + m - 1) printf("%d%*s%c%*s%c%*s%d\n", i - 10, x, "", 'A', sz - 2, "", 'A', 19 - sz - x + 1, "", i - 10);
- }
- else if (i < 10) {
- printf("%d%*s%d\n", i, 20, "", i);
- }
- else {
- printf("%d%*s%d\n", i - 10, 20, "", i - 10);
- }
- }
- printf("*"); /* *01234567890123456789* sor kiírása*/
- for (i = 0; i < 20; i++) {
- if (i < 10) printf("%d", i);
- else printf("%d", i - 10);
- }
- printf("*\n");
- }
- return 0;
- }
- int jo_e(char s[]) {
- int i;
- for (i = 0; s[i]; i++)
- if (!isdigit(s[i])) return 0;
- return atoi(s);
- }
- int getline(char s[], int lim) {
- int i, c;
- for (i = 0; i<lim && (c = getchar()) != EOF && c != '\n'; ++i) s[i] = c;
- s[i] = '\0';
- while (c != EOF && c != '\n') c = getchar();
- return i;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement