Заменить все отрицательные элементы массива на значение, введенное пользователем - C (СИ)
Формулировка задачи:
Такое задание: Задан вещественный массив размера N. Заменить все отрицательные элементы массива размера N на значение, введенное пользователем. Вот код:
#include <stdio.h> int main(int argc, char *argv[]) { int N,i; printf("Vvedite kolichestvo elementov: "); scanf("%d",&N); if(N<3) {printf("Slishkom malo elementov!\n"); return 0;} printf("Vvedite elementy massiva: "); int arr[N]; for(int i=0;i<N;i++) scanf("%d",&arr[i]); if (arr[i]<0) printf ("Vvedite luboe znachenie vmesto otricatelnogo: "); if (arr[i]<0) scanf("%d", &arr[i]); printf("Rezultat: "); for(int i=0;i<N;i++) printf("%d ",arr[i]); printf("\n"); return 0; }
Решение задачи: «Заменить все отрицательные элементы массива на значение, введенное пользователем»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int main() { int N, i; double *arr; printf("Vvedite kolichestvo elementov:\n "); while(1){ if(scanf("%d",&N) && N > 2) break; else puts("Error input!Try again."); getchar(); } arr = malloc(N * sizeof*arr); if(!arr){ puts("Memory allocation error"); exit(1); } while(1){ printf("Vvedite elementy massiva: \n"); for(i = 0;i < N; i++) if(1 != scanf("%lf", (arr + i))){ puts("Error input!Try again."); getchar(); break; } if(i == N) break; } for(i = 0; i < N; i++) printf("%g ", *(arr + i)); printf("\n"); for(i = 0;i < N; i++){ if (*(arr + i) < 0){ printf ("Vvedite luboe znachenie vmesto otricatelnogo: \n"); while(1 != scanf("%lf", (arr + i))){ puts("Error input!Try again."); getchar(); } } } printf("Rezultat:\n "); for(i = 0; i < N; i++) printf("%g ", *(arr + i)); printf("\n"); free(arr); return 0; }
Объяснение кода листинга программы
В этом коде выполняются следующие действия:
- Ввод количества элементов массива и проверка корректности ввода.
Вначале программа запрашивает у пользователя количество элементов массива и сохраняет его в переменной
N
. Затем с помощью циклаwhile
происходит проверка корректности ввода. Если пользователь ввёл некорректное значение (например, отрицательное число или букву вместо цифры), программа выводит сообщение об ошибке и просит ввести значение заново. Если же пользователь ввёл корректное значение, программа переходит к следующему этапу. - Выделение памяти под массив.
С помощью функции
malloc
выделяется память под массив. Размер массива определяется переменнойN
. Если память не удалось выделить, программа выводит сообщение об ошибке и завершает работу. - Ввод элементов массива. Программа запрашивает у пользователя ввод всех элементов массива. Для каждого элемента выполняется проверка корректности ввода. Если пользователь ввёл некорректное значение, программа выводит сообщение об ошибке и просит ввести значение заново. Если же пользователь ввёл корректное значение, оно сохраняется в соответствующем элементе массива.
- Замена отрицательных элементов массива. После ввода всех элементов массива программа проверяет каждый элемент на отрицательность. Если элемент отрицательный, программа запрашивает у пользователя новое значение и сохраняет его в соответствующем элементе массива.
- Вывод результата. После завершения ввода и замены отрицательных элементов программа выводит массив на экран. Таким образом, данный код выполняет задачу по замене отрицательных элементов массива на значения, введенные пользователем.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д