Как сделать вот этот код из одномерного массива в двумерный.
Код:
#include <conio.h>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
// Из исходного массива символов, заполненного случайным образом
//символами с кодами в диапазоне от 21 до 254 выделить в отдельные массивы
//буквы латинского алфавита как заглавные так и прописные Проведите сортиpовку
//полученных массивов Для контроля результата сделать распечатку
//массивов в том числе исходного
//
char **create_mass(int rows, int cols)
{
int i;
char **ret = (char **)malloc(rows * sizeof(char *));
for (i = 0; i < rows; i++)
ret[i] = (char *)malloc(cols * sizeof(char ));
return ret;
}
char *create_mass1(int len)
{
char *ret = (char *)malloc(sizeof(char) * len);
return ret;
}
// Ф-ция сортировки
int Sortirovka(int a, char* c)
{
int i,j;
int x;
for(i=0;i<a-1;++i)
{
for(j=i+1;j<a;++j)
{
if (c[i]<c[j])
{
x= c[i];
c[i]=c[j];
c[j]=x;
}
}
}
return 0;
}
// Ф-ция проверки, попадает ли символ c
// в диапазон от first до last
int poisk(char c, char first, char last)
{
char s;
for(s=first;s<=last;++s)
if (s==c)
return 1;
return 0;
}
// вывод одномерного массива
void print (char* M, int S)
{
int i;
for (i = 0; i < S; ++i )
printf("%c ",M[i]);
}
// функция заполнения двумерного массива случайными символами от 21 до 254
void zapolnenie(char **mass, int rows, int cols)
{
int i, j;
int min = 21, max = 254;
for ( i = 0; i < rows; ++i )
for ( j = 0; j < cols; ++j )
mass[i][j] = rand() % (max - min + 1) + min;
}
// функция вывода двумерного массива на экран
void print_d(char **mass, int rows, int cols)
{
int i, j;
for (i = 0; i < rows; i++) {
for (j = 0; j < cols; j++) {
printf("%c ", mass[i][j]);
}
printf("\n");
}
}
void raspredelenie(char**mass, char *Z, char *P, int SIZE,int *a, int *b)
{
int i, j;
*a = 0;
*b = 0;
for( i=0; i<SIZE; ++i)
{
for(j = 0; j<SIZE; ++j)
{
if ( poisk(mass[i][j],'A','Z') )
{
Z[*a]= mass[i][j];
(*a)++;
}
if ( poisk(mass[i][j],'a','z') )
{
P[*b]= mass[i][j];
(*b)++;
}
}
}
}
int main()
{
const int SIZE=10;
// объявление динамического массива
char **masssiv = create_mass(SIZE, SIZE);
//заполнение исходного массива
zapolnenie(masssiv, SIZE, SIZE);
// вывод на экран исходного массива
print_d(masssiv, SIZE, SIZE);
// Поиск в двумерном массиве латинских букв заглавных и прописных
// и распределение их в соответствующие массивы
int len = 100;
char *zag = create_mass1(len);
char *pro = create_mass1(len);
int a, b;
raspredelenie(masssiv, zag, pro, SIZE, &a, &b);
// Вывод массива Заглавных букв на экран
printf("\n Zaglavnye bukvy: ");
print (zag, a);
// Сортировка массива
printf("\n otsostirovannii massiv: ");
Sortirovka(a, zag);
// Вывод результата на экран
print (zag, a);
// Вывод массива прописных букв на экран
printf("\n Propisnye bukvy: ");
print (pro, b);
// Сортировка массива
printf("\n otsortirovannii massiv: ");
Sortirovka(b, pro);
// Вывод результата на экран
print (pro, b);
getch();
}