Вывести таблицу умножения в рамке - C (СИ)
Формулировка задачи:
Здравствуйте.
Задача: Сделать таблицу умножения в рамке.
Я в принципе сделал, но возникла проблема: когда в таблице появляется двухзначное число, рамка рушится. Подскажите как избежать этого.
P.S. извиняюсь за безобразный код, я только начинаю изучать язык.
#include <stdio.h> #include <conio.h> #include <stdlib.h> main() { int i,j, a; int H,L; char q, w, e, r, t, y, u,o,p, s, d; //H - кол-во строк //L - кол-во столбцов int **mas; //mas[H][L] printf("Hight: "); scanf("%d", &H); printf("Lengh: "); scanf("%d", &L); mas=(int**)malloc(H*sizeof(int*)); for(i=0; i<H; i++) { mas[i]=(int*)malloc(L*sizeof(int)); } ////////////////<ТАБЛИЦА УМНОЖЕНИЯ>///////// for (i=0; i<H; i++) //Первый столбец { mas[i][0]=i+1; } for (j=0; j<L; j++) //Первая строка { mas[0][j]=j+1; } for (i=1; i<H; i++) //Остальные элементы for (j=1; j<L; j++) { mas[i][j]=(mas[0][j])*(mas[i][0]); } ////////////////<ТАБЛИЦА УМНОЖЕНИЯ>///////// ////////////////<РАМКА>///////// q=186; // || w=201; // ,,= e=205; // == r=187; // =,, t=203; // =,,= y=206; // =||= u=204; // ||= o=185; // =|| p=200; // "= s=202; // ="= d=188; // =" ////////////////<РАМКА>///////// ////////////////<ВЫВОД>///////////////////// printf ("%c", w); // ,,= for (a=0; a<(L-1); a++) printf("%c%c%c%c",e,e,e,t); // ,,===,, printf("%c%c%c%c",e,e,e,r); printf("\n"); // ,,===,,===,, for (i=0; i<H-1; i++) { for (j=0; j<L; j++) { printf("%c ", q ); printf("%d ", mas[i][j]); // || n || n } printf("%c\n", q); // || n || n || printf("%c", u); // ||= for (a=0; a<(L-1); a++) { printf("%c%c%c%c", e,e,e,y); // ||===|| } printf("%c%c%c%c\n", e,e,e,o); // ||===||===|| } for (j=0; j<L; j++) { printf("%c ", q ); printf("%d ", mas[i][j]); //Последняя строка таблицы умножения } printf("%c\n", q); printf("%c", p); // "= for (a=0; a<L-1; a++) printf("%c%c%c%c",e,e,e,s); // "===" printf("%c%c%c%c\n",e,e,e,d); // "==="===" ////////////////<ВЫВОД>///////////////////// return(0); }
Всё, сам справился. Можно делать таблицу умножения до 9999.
#include <stdio.h> #include <conio.h> #include <stdlib.h> main() { int i,j, a, b ,N, K; int H,L; char q, w, e, r, t, y, u,o,p, s, d; //H - кол-во строк //L - кол-во столбцов int **mas; //mas[H][L] printf("Hight: "); scanf("%d", &H); printf("Lengh: "); scanf("%d", &L); mas=(int**)malloc(H*sizeof(int*)); for(i=0; i<H; i++) { mas[i]=(int*)malloc(L*sizeof(int)); } ////////////////<ТАБЛИЦА УМНОЖЕНИЯ>///////// for (i=0; i<H; i++) //Первый столбец { mas[i][0]=i+1; } for (j=0; j<L; j++) //Первая строка { mas[0][j]=j+1; } for (i=1; i<H; i++) //Остальные элементы for (j=1; j<L; j++) { mas[i][j]=(mas[0][j])*(mas[i][0]); } ////////////////<ТАБЛИЦА УМНОЖЕНИЯ>///////// if ((mas[H-1][L-1]>0) && (mas[H-1][L-1]<10)) N=3; if (mas[H-1][L-1]>9 && mas[H-1][L-1]<100) N=4; if (mas[H-1][L-1]>99 && mas[H-1][L-1]<1000) N=5; printf("\nSize %d\n", N); ////////////////<РАМКА>///////// q=186; // || w=201; // ,,= e=205; // == r=187; // =,, t=203; // =,,= y=206; // =||= u=204; // ||= o=185; // =|| p=200; // "= s=202; // ="= d=188; // =" ////////////////<РАМКА>///////// ////////////////<ВЫВОД>///////////////////// printf ("%c", w); // ,,= for (a=0; a<(L-1); a++) { for (b=0; b<N; b++) printf("%c",e); // ,,=== printf("%c",t); // ,,===,, } for (b=0; b<N; b++) printf("%c",e); // ,,===,,=== printf("%c\n",r); // ,,===,,===,, for (i=0; i<H-1; i++) { for (j=0; j<L; j++) { printf("%c ", q ); if (mas[i][j]>0 && mas[i][j]<10) K=2; if (mas[i][j]>9 && mas[i][j]<100) K=3; if (mas[i][j]>99 && mas[i][j]<1000) K=4; for (b=0; b<(N-K); b++) printf(" "); printf("%d", mas[i][j]); // || n || n } printf("%c\n", q); // || n || n || printf("%c", u); // ||= for (a=0; a<(L-1); a++) { for (b=0; b<N; b++) printf("%c",e); printf("%c",y); } for (b=0; b<N; b++) printf("%c",e); printf("%c\n",o); } for (j=0; j<L; j++) { printf("%c ", q ); if (mas[i][j]>0 && mas[i][j]<10) K=2; if (mas[i][j]>9 && mas[i][j]<100) K=3; if (mas[i][j]>99 && mas[i][j]<1000) K=4; for (b=0; b<(N-K); b++) printf(" "); printf("%d", mas[i][j]); //Последняя строка таблицы умножения } printf("%c\n", q); printf("%c", p); // "= for (a=0; a<L-1; a++) { for (b=0; b<N; b++) printf("%c",e); printf("%c",s); } for (b=0; b<N; b++) printf("%c",e); printf("%c\n",d); ////////////////<ВЫВОД>///////////////////// return(0); }
Решение задачи: «Вывести таблицу умножения в рамке»
textual
Листинг программы
printf("%4d", x);
Объяснение кода листинга программы
Код, представленный в вопросе, выводит значение переменной x
с помощью функции printf()
. Функция printf()
используется для форматирования и вывода текста на консоль.
В данном случае, %4d
является спецификатором формата, который указывает функции printf()
выводить значение переменной x
в 4-значном формате. Число 4
перед спецификатором формата указывает на минимальное количество символов, которые должны быть выведены. Если значение x
меньше 4-х цифр, то оно будет дополнено пробелами слева до полного 4-значного поля.
Таким образом, в консоль будет выведено значение переменной x
, дополненное пробелами до 4-значного поля, если оно меньше 4-х цифр.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д