Переписать код с использованием указателей - C (СИ) (151886)
Формулировка задачи:
Помогите сделать указатели...
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#define SIZE 5
int func( int array[][SIZE], int size) { /*Створюємо функцію для знаходження суми головної діагоналі*/
int sum = 0;
for ( int i = 0; i < SIZE; i++ ) {
if ( i == i ) {
sum += array[i][i];
}
}
return sum;
}
int smasiv(int array[][5]){
for ( int i = 0; i < SIZE; i++ ) { /*Функція для створення елементів в масиві*/
for ( int j = 0; j < SIZE; j++ ) {
array[i][j] = rand()%49;
}
}
}
int zmasiv(int array[][5]){
for ( int i = 0; i < SIZE; i++ ) { /*Фунція для записування масива*/
for ( int j = 0; j < SIZE; j++ ) {
printf("%4d ", array[i][j]);
}
printf("\n");
}
}
int main() {
setlocale(LC_ALL,"ukrainian");
int A[SIZE][SIZE];
int B[SIZE][SIZE];
int sum;
smasiv(A); /*Створюємо елементи масиву */
printf("Масив А:\n");
zmasiv(A); /*Записуємо елементи масиву */
sum = func(A, SIZE); /*Використовуємо функції для знаходження сум діагоналей */
printf("Сума головної дiагоналi таблицi А:%d\n", sum); /*Виводимо суму головної діагоналі масиву А*/
smasiv(B); /*Створюємо елементи масиву */
printf("Масив B:\n");
zmasiv(B); /*Записуємо елементи масиву */
sum = func(B, SIZE); /*Використовуємо функції для знаходження сум діагоналей */
printf("Сума головної дiагоналi таблицi B:%d\n", sum); /*Виводимо суму головної діагоналі масиву B*/
return 0;
}Решение задачи: «Переписать код с использованием указателей»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <locale.h>
int func(int* array, int size) { /*Створюємо функцію для знаходження суми головної діагоналі*/
int sum = 0;
for (int i = 0; i < size; i++) {
sum += *(array + i * size + i);
}
return sum;
}
void smasiv(int* array, int size) {
for (int i = 0; i < size; i++) { /*Функція для створення елементів в масиві*/
for (int j = 0; j < size; j++) {
*(array + size * i + j) = rand() % 49;
}
}
}
void zmasiv(int* array, int size) {
for (int i = 0; i < size; i++) { /*Фунція для записування масива*/
for (int j = 0; j < size; j++) {
printf("%4d ", *(array + size * i + j));
}
printf("\n");
}
}
#define SIZE 5
int main() {
int A[SIZE][SIZE];
int B[SIZE][SIZE];
int sum;
setlocale(LC_ALL, "ukrainian");
srand(time(NULL));
smasiv((int*)A, SIZE); /*Створюємо елементи масиву */
printf("Масив А:\n");
zmasiv((int*)A, SIZE); /*Записуємо елементи масиву */
sum = func((int*)A, SIZE); /*Використовуємо функції для знаходження сум діагоналей */
printf("Сума головної дiагоналi таблицi А:%d\n", sum); /*Виводимо суму головної діагоналі масиву А*/
smasiv((int*)B, SIZE); /*Створюємо елементи масиву */
printf("Масив B:\n");
zmasiv((int*)B, SIZE); /*Записуємо елементи масиву */
sum = func((int*)B, SIZE); /*Використовуємо функції для знаходження сум діагоналей */
printf("Сума головної дiагоналi таблицi B:%d\n", sum); /*Виводимо суму головної діагоналі масиву B*/
return 0;
}
Объяснение кода листинга программы
- Создаем функцию для нахождения суммы главной диагонали массива.
- Создаем функцию для заполнения элементов массива.
- Создаем функцию для вывода элементов массива.
- Задаем размер массива.
- Устанавливаем локальную систему времени на
украинскую. - Инициализируем генератор случайных чисел текущим временем.
- Используем функцию для заполнения элементов массива A.
- Выводим массив A.
- Вычисляем сумму главной диагонали массива A.
- Выводим сумму главной диагонали массива A.
- Используем функцию для заполнения элементов массива B.
- Выводим массив B.
- Вычисляем сумму главной диагонали массива B.
- Выводим сумму главной диагонали массива B.
- Возвращаем 0 из функции main(), что означает успешный конец работы программы.
- Массив A создается размером 5х5.
- Массив B создается размером 5х5.
- Значение 5 используется как размер массива в определении макроса SIZE.
- В функции main() устанавливается локальная система времени на
украинскую. - Генератор случайных чисел инициализируется текущим временем.