Преобразовать матрицу в текстовую строку - 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 для этой матрицы, создает строку, считывая элементы матрицы в эту строку, и выводит эту строку.