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

Переписать код с использования тройного указателя на двойной

04.07.2018, 15:41. Показов 345. Ответов 0
Метки нет (Все метки)

Помогите перейти с тройного указателя на двойной
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
 
void input(int** array1, int*** array2,int *k,int *l,int *c) {
 
    do{
    printf("Rows: ");
    scanf("%d",k);
    printf("Columns: ");
    scanf("%d",l);
    }while(*k>15 || *l>25);
    printf("Number: ");
    scanf("%d",c);
    *array1 = (int*) malloc(*k * sizeof(int));
    *array2 = (int**) malloc(*k * sizeof(int*));
    srand(time(NULL));
    for (int i = 0; i<*k; i++) {
        (*array2)[i] = (int*) malloc(*l * sizeof(int));
        for (int j = 0; j<*l; j++) {
            (*array2)[i][j] = rand() %50;
        }
    }
}
 
void inputT(int** array1, int*** array2,int *k,int *l,int *c) {
 
    int n;
    FILE *S1;
    S1 = fopen("S1.txt", "r");
    while ((fscanf(S1, "%d%d%d",k,l,c)!=EOF))
    {   
        if(!S1)break;
        n+=1;
    }
    if (*k>=15 || *l>=25) {
        printf("You entered more than 15 rows and 25 columns\n");
        exit(1);
    }
    fclose(S1);
    *array1 = (int*) malloc(*k * sizeof(int));
    *array2 = (int**) malloc(*k * sizeof(int*));
    srand(time(NULL));
    for (int i = 0; i<*k; i++) {
        (*array2)[i] = (int*) malloc(*l * sizeof(int));
        for (int j = 0; j<*l; j++) {
            (*array2)[i][j] = rand() %50;
        }
    }
}
 
void massiv(int** array1, int*** array2,int k,int l,int c){
 
    int i,j;
 
    // находим первые числа, больше с и записываем их в массив b[]:
    for (i=0; i<k; i++)
    {
        for (j=0; j<l && (*array2)[i][j]>=c; j--)
              // пустой цикл до первого элемента больше с
        if (j<l) (*array1)[i] = (*array2)[i][j];
        else (*array1)[i] = 0;
    }
}
 
void outputT(int** array1, int*** array2,int k,int l) {
    
    FILE *S1,*S2;
    S1 = fopen("S1.txt", "r");
    S2 = fopen("S2.txt", "w");
    int i,j; 
    fprintf(S2,"\narray a[k,l]:\n");
    for (i=0; i<k; i++)
    {
        for (j=0; j<l; j++)
            fprintf(S2,"%3d", (*array2)[i][j]);
        fprintf(S2,"\n");
    }
 
    // выведем на экран получившийся массив b[]:
   fprintf(S2,"\narray b:\n");
    for (i=0; i<k; i++)
        fprintf(S2,"%3d", (*array1)[i]);
   fprintf(S2,"\n");
   fclose(S2);
}
 
void output(int** array1, int*** array2,int k,int l) {
    
    int i,j; 
    printf("\narray a[k,l]:\n");
    for (i=0; i<k; i++)
    {
        for (j=0; j<l; j++)
            printf("%3d", (*array2)[i][j]);
        printf("\n");
    }
 
    // выведем на экран получившийся массив b[]:
   printf("\narray b:\n");
    for (i=0; i<k; i++)
        printf("%3d", (*array1)[i]);
   printf("\n");
}
 
 
int main(void) {
    int key;
    int k,l,c;
    int* array1;
    int** array2;
    FILE *S1,*S2;
    printf("This program rewrites from the elements A(K,L), K<15, L<25 found in each row of\n ");
    printf("the elements, large C, in the array B. If there is no such element in the line\n ");
    printf("write zero.\n ");
    printf("Do you wnat enter date from FILE (1) or CONSOLE (2) ");
    scanf("%d", &key);
    if (key == 1) {
        printf("You take input from FILE\n");
    S1 = fopen("S1.txt","r");
    if(S1 == NULL)
    {
        printf("Cannot open file input\n");
        return 0;
    }
    S2 = fopen("S2.txt","r");
    if(S2 == NULL)
    {
        printf("Cannot open file output\n");
        return 0;
    }
    fclose(S2);
        inputT(&array1, &array2,&k,&l,&c);
        massiv(&array1, &array2,k,l,c);
        output(&array1, &array2,k,l);
        outputT(&array1, &array2,k,l);
    }
    if (key == 2) {
        printf("You take input from CONSOLE\n");
        input(&array1, &array2,&k,&l,&c);
        massiv(&array1, &array2,k,l,c);
        output(&array1, &array2,k,l);
        outputT(&array1, &array2,k,l);
        }
    free(array1);
    free(array2);
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.07.2018, 15:41
Ответы с готовыми решениями:

Разбить прямоугольный массив на 2 по четности строк с использованием тройного указателя
Описание задачи: На базе заданной прямоугольной матрицы сделать 2, одна из которых содержит...

Переписать код без использования цикла
Sub ex3() Dim sNum As String, i As Integer, j As Integer, otvet As Boolean sNum =...

Переписать код без использования async
Есть метод, нужно переписать его под обычный, чтобы программа подождала выполнения Идей 0..... ...

Переписать код без использования GOTO
Ребята, помогите пожалуйста переписать текст программы, чтоб в ней не использовать GOTO!!! ...

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

Как переписать код без использования set?
template &lt;class T&gt; // шабло обработки данных array&lt;char&gt; array&lt;T&gt;::proceed() { ...

Переписать код без использования анонимной функции
N = 100; % steps L = 100; % length curr = zeros(1, L); curr(round(L/2)) = 1; next = zeros(1,...

Переписать код без использования LINQ to XML
Подскажите пожалуйста аналогичную запись только используя стандартные средства языка C# var dates...

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


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

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

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