Ввести массив целых чисел количество которых неизвестно - C (СИ)
Формулировка задачи:
#include "stdafx.h" #include <iostream> #include <stdio.h> #include <conio.h> #include <malloc.h> #include <stdlib.h> #include <string.h> int _tmain(void) { int *p = NULL; int i=0; int SrArph, X, m, z=0; printf("Vvedite ogranichenie "); scanf_s("%d",&X); while ( p[i]!=0 ) { p = (int*)realloc(p, sizeof(p) + sizeof(int)); printf("\nVvedite chislo "); scanf_s("%d",&m); p[i]=m; z=i; SrArph=( p[i]/(i+1) ); if(SrArph==X) { break; } i++; } for(int i=0; i<z; i++) { printf("%d",p[i]); } free(p); system("pause"); return 0; }
Решение задачи: «Ввести массив целых чисел количество которых неизвестно»
textual
Листинг программы
#include <iostream> #include <stdio.h> #include <conio.h> #include <malloc.h> #include <stdlib.h> #include <string.h> int main(void) { int *p=NULL; int i=0,j; int SrArph, Summa=0, X, m, z=0; printf("Vvedite ogranichenie "); scanf_s("%d",&X); do { Summa = 0; p = (int*)realloc(p, sizeof(p) + sizeof(int)); printf("\nVvedite chislo "); scanf_s("%d",&m); p[i]=m; z=i; for(j=0;j<=i;j++) { Summa += p[j]; SrArph = Summa / (i+1); } if(SrArph==X) { break; } i++; } while ( p[i]!=0 ); printf("Vvedonnoe:\n"); for(int i=0; i<=z; i++) { printf("%d\n",p[i]); } //free(p); system("pause"); return 0; }
Объяснение кода листинга программы
В этом коде реализована простая версия программы для поиска суммы элементов массива, вводимых пользователем, которые кратны определенному числу.
- Первые 4 строки подключают необходимые библиотеки.
- Следующие 7 строк инициализируют переменные:
p
- указатель на первый элемент массива (по умолчанию равенNULL
- указателю наничто
).i
- счетчик количества введенных чисел (начальное значение равно 0).SrArph
- сумма элементов массива (по умолчанию равна 0).Summa
- сумма элементов массива (по умолчанию равна 0).X
- число, на которое должны быть кратны элементы массива (значение вводится пользователем).m
- текущее вводимое число.z
- количество введенных чисел (начальное значение равно 0).
- Следующая строка выводит сообщение с призывом к вводу ограничения.
- Строка 27 входит в цикл
do
, который продолжается до тех пор, пока не будет введено число, делящееся наX
.- Внутри цикла:
- Переменная
Summa
инициализируется как сумма элементов массива. - Указатель
p
динамически перераспределяется для выделения памяти под новый элемент массива. - Пользователю предлагается ввести число.
- Введенное число сохраняется в массиве и к его сумме добавляется значение введенного числа.
- Переменная
z
обновляется значениемi
, чтобы сохранить количество введенных чисел. - Для каждого элемента массива (кроме последнего) вычисляется сумма элементов и проверяется, делится ли она на
(i+1)
. Если да, то число делится наX
. - Если сумма элементов делится на
X
, то цикл прерывается. - Значение
i
увеличивается на 1.
- Переменная
- Внутри цикла:
- Строки 38-41 выводят на экран введенные числа.
- Строка 42 освобождает память, выделенную под массив.
- Строка 43 ожидает нажатия клавиши пользователем.
- Строка 44 возвращает 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д