Преобразовать матрицу в текстовую строку - C (СИ)
Формулировка задачи:
Ввести символьную матрицу. Инвертировать её относительно середины строки. Преобразовать матрицу в стринг. Найти длину стринга.
Не знаю как преобразовать в стринг
Матрица инвертируется, выводится, а вот как правильно преобразовать в стринг не знаю, помогите пожалуйста
Вот мой код:
#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> void mass (char ** a, int k, int l) { char ch; int i, j; ch = getchar(); for (i=0; i < k; i++) { for (j=0; j < l; j++) { printf ("a[%d][%d]=",i,j); a[i][j] = getchar(); fflush(stdin); } } } void output (char ** a, int k, int l) { int i, j; for (i=0; i<k; i++) { for (j=0; j < l; j++) printf("%c ",a[i][j]); printf("\n"); } } void swap (char ** a, int k, int l) { char b; int i, j; for(i = 0;i < k; i++) { for(j=0;j < (l/2); j++) { b = a[i][j]; a[i][j] = a[i][l-j-1]; a[i][l-1-j] = b; } printf("\n"); } } int main() { int i, j, n; char *s, **a = new char*[n]; char c; printf("input n="); scanf("%d",&n); for (i=0; i<n; i++) a[i] = new char[n]; mass (a, n, n); output (a, n, n); swap (a, n, n); output (a, n, n); for (i=0; i<n; i++) for (j=0; j<n; j++) *(s+(i*n+j)) = *(*(a+i)+j); *(s+n*n) = '\0'; printf("s = %s",s); printf("\n"); printf("%d",strlen(s)); getch(); }
Решение задачи: «Преобразовать матрицу в текстовую строку»
textual
Листинг программы
#include <stdio.h> //#include <conio.h> #include <stdlib.h> #include <string.h> void mass (char *a, int n) { char ch; int i, j; ch = getchar(); for (i=0; i < n; i++) for (j=0; j < n; j++) { printf ("a[%d][%d]=",i,j); while((ch=getchar())=='\n') ; *(a+i*n+j) = ch; //fflush(stdin); } } void output (char *a, int n) { int i, j; for (i=0; i<n; i++) { for (j=0; j<n; j++) printf("%c ", *(a+i*n+j)); printf("\n"); } } void swap (char *a, int n) { char b; int i, j; for(i = 0; i<n; i++) { for(j=0; j<(n/2); j++) { b = *(a+i*n+j); *(a+i*n+j) = *(a+i*n+n-j-1); *(a+i*n+n-j-1) = b; } printf("\n"); } } int main() { int i, j, k, n; char c; printf("input n="); scanf("%d",&n); char a[n][n]; mass (&a[0][0], n); output (&a[0][0], n); swap (&a[0][0], n); output (&a[0][0], n); char string[n*n+1]; for (i=0, k=0; i<n; ++i) for (j=0; j<n; ++j, ++k) string[k] = a[i][j]; string[++k]=0; puts(string); return 0; }
Объяснение кода листинга программы
- mass: Эта функция считывает элементы матрицы, используя стандартный ввод, и сохраняет их в матрице.
- output: Эта функция выводит элементы матрицы на стандартный вывод.
- swap: Эта функция меняет местами элементы матрицы, начиная с середины строки.
- main: Эта функция считывает размерность матрицы, создает матрицу, вызывает функции mass, output и swap для этой матрицы, создает строку, считывая элементы матрицы в эту строку, и выводит эту строку.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д