0 / 0 / 0
Регистрация: 16.12.2018
Сообщений: 3
1

Каждое слово матрицы заменить на число, образованное из кодов букв этого слова

16.12.2018, 20:13. Показов 1983. Ответов 0

Мне нужно создать квадратную матрицу размера MxM, где M является целым числом из диапазона [2,5]. Конкретный размер матрицы задается пользователем. Матрица должна содержать слова из 4х букв английского алфавита, которые могут быть как случайными, так и вводиться пользователем.Полученную матрицу обработать следующим образом. Каждое слово матрицы заменить на число, образованное из кодов букв этого слова. Элементы полученной новой матрицы тре-буется упорядочить по возрастанию. Результаты обработки вывести на экран.

Вот прога есть, но она создает квадратную матрицу размера MxM, где Mявляется целым числом из диапазона [2,5]. Конкретный размер матрицы задается пользователем. Матрица содержит только целые числа из диапазона [1, 100], которые могут быть как случайными, так и вводиться пользователем. На основе созданной матрицы сделать одномерный массив, в котором сначала идут все четные элементы мат-рицы, упорядоченные по возрастанию, а потом идут все нечетные элементы мат-рицы, упорядоченные по убыванию. Результаты обработки матрицы вывести на экран:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
#include <stdio.h>
#include <locale.h>
#include <math.h>
#include <time.h>
#include <stdbool.h>
void sort(int ar[],int n);
void sort(int ar[],int n)
{
    int i,j;
    double t;
    for(i=1;i<n;i++)
    {
        j=i-1; t=ar[i];
        while(j>=0 && ar[j]<t)
        {
            ar[j+1]=ar[j];
            j--;
        }
        ar[j+1]=t;
    }
}
int main()
{
    int q;
    int rez=0;
    setlocale(LC_ALL, "Rus");
    srand(time(NULL));
    int kolvo=0;
    char kolvo_1[255];
    while ((kolvo < 2) || (kolvo >5)){
        printf("Введите размер матрицы в диапозоне от 2 до 5\n");
        scanf("%s", kolvo_1);
        kolvo=atoi(kolvo_1);
    }
     printf("\nВы выбрали размерность матрицы = %d\n", kolvo);
        int mat[kolvo][kolvo];
        char oks[255];
        printf("Выберите режим ввода:\n1.Случайные числа\n2.Пользовательский ввод\n");
         while ((rez !=1) && (rez != 2) || (strlen(oks)) != 1){
        printf("Введите корректный режим работы ");
        scanf("%s", oks);
        rez=atoi(oks);
    }
    printf("\nВы выбрали режим = %d\n\n", rez);
    if (rez == 1){
    for (int i=0; i<kolvo; i++){
        for (int j=0; j<kolvo; j++){
            mat[i][j]=1+(rand()% 100);
        }
    }
    }
    if (rez == 2){
        int q;
        char buf[255];
        int ok;
        for (int i=0; i<4; i++){ printf("Введите строку массива столбиком:\n");
            for (int j=0; j<4; j++){
                        ok=0;
                    while (ok != 1){
                        printf("\nВведите число в диапазоне от [1;100]:\n");
                        fflush(stdin);
                        gets(buf);
                        int check=1;
                        int len=strlen(buf);
                        char check1[1];
 
                        for (int i=0; i<len; i++){
                             check1[0]=buf[i];
                        if ((atoi(check1)) == 0){
                            check=2;
                        }
                        }
                        for (int k=0; k<5; k++){
                            if(buf[k] == ' ') check=0;
                        }
 
                        if (atoi(buf) == 0) q=108;
                        else if (atoi(buf) != 0 ) q=atoi(buf);
                        else if (buf[0] != '0' && strlen(buf)==1 ) q=108;
                        if (((q>-1) && (q<101)) && check == 1){
                            ok=1;
                            printf("\nЧисло %d принято\n", q);
 
                        }
                        else {
                            ok=0;
                            printf("\nВы ввели не корректное число\n");
                            if (check == 0) printf(" (пробелов быть не должно)\n");
                        }
                    }
                    mat[i][j]=q;
                }
            }
    }
    printf("\nВаша матрица:\n");
        for (int i=0; i<kolvo; i++){printf("\n");
            for (int j=0; j<kolvo; j++){
                printf("%4d",mat[i][j]);
            }
        }
    int um;
    um=kolvo*kolvo;
    int a[um];
    int temp = 0;
    for (int i=0; i<kolvo; i++){printf("\n");
            for (int j=0; j<kolvo; j++){
                a[temp]=mat[i][j];
                temp++;
            }
    }
    printf("\nОдномерный массив:\n");
    for (int i=0; i<um; i++){
        printf("%5d", a[i]);
    }
    int chet=0;
    int nechet=0;
 
    for (int i=0; i<um; i++){
        if ( (a[i] % 2) == 0){
         chet++;
        }
        else{
         nechet++;
        }
    }
    printf("\n\nЧетных: %d\n\nНечетных: %d", chet, nechet);
    int achet[chet];
    int anechet[nechet];
    int temp2=0;
    int temp3=0;
    for (int i=0; i<um; i++){
       if ( (a[i] % 2) == 0){
         achet[temp2]=a[i];
         temp2++;
       }
       else{
         anechet[temp3]=a[i];
         temp3++;
       }
    }
    printf("\n\nОдномерный массив из четных элементов:\n");
    for (int i=0; i<chet; i++){
        printf("%4d", achet[i]);
    }
    printf("\n\nОдномерный массив из не четных элементов:\n");
    for (int i=0; i<nechet; i++){
        printf("%4d", anechet[i]);
    }
    sort(anechet,nechet);
    printf("\n\nОдномерный массив из не четных элементов сортированный:\n");
    for (int i=0; i<nechet; i++){
        printf("%4d", anechet[i]);
    }
 
int tmp;
bool noSwap;
int N=chet;
for (int i = N - 1; i >= 0; i--)
{
    noSwap = 1;
    for (int j = 0; j < i; j++)
    {
        if (achet[j] > achet[j + 1])
        {
            tmp = achet[j];
            achet[j] = achet[j + 1];
            achet[j + 1] = tmp;
            noSwap = 0;
        }
    }
    if (noSwap == 1)
        break;
}
printf("\n\nОдномерный массив из четных элементов после сортировки:\n");
    for (int i=0; i<chet; i++){
        printf("%4d", achet[i]);
    }
printf("\n");
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.12.2018, 20:13
Ответы с готовыми решениями:

Вводится слово из n- различных букв (n<10) получить все возможные слова из S букв этого слова (s<=n)
и вывести их в одном из каких нибудь компонентов

Заменить каждое слово предложнения количеством букв 'а' в нем
Дано предложение, слова в нем разделены одним или несколькими пробелами.Замените каждое слово...

Преобразовать каждое слово в строке, удалив из него все вхождения первой буквы этого слова
Дана строка, состоящая из символов латинского алфавита, разделенных пробелами (одним или...

В тексте удалить каждое четное слово, продублировать каждое нечетное слово, заменив все вхождения букв 'д' на букву 'т'
Помогите, совсем не могу разобраться в написании программы: &quot;В тексте удалить каждое четное слово,...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.12.2018, 20:13
Помогаю со студенческими работами здесь

В заданной строке каждое слово заменить количеством букв в этом слове
Задание : в заданной строке каждое слово заменить количеством букв в этом слове ) Помогите , в С не...

Преобразовать каждое слово в строке, удалив из него все последующие вхождения первой буквы этого слова
Дана строка, состоящая из латинских слов, разделенных пробелами. Преобразовать каждое слово в...

Преобразовать каждое слово в строке, удалив из него все предыдущие вхождения последней буквы этого слова
Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими)....

Ввести строку вывести каждое слово из этой строки с кол-ом повторений этого слова учитывая все знаки препинания...
Составить прогу: Ввести строку вывести каждое слово из этой строки с кол-ом повторений этого слова...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru