Заменить все отрицательные элементы массива на значение, введенное пользователем - 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. Если память не удалось выделить, программа выводит сообщение об ошибке и завершает работу. - Ввод элементов массива. Программа запрашивает у пользователя ввод всех элементов массива. Для каждого элемента выполняется проверка корректности ввода. Если пользователь ввёл некорректное значение, программа выводит сообщение об ошибке и просит ввести значение заново. Если же пользователь ввёл корректное значение, оно сохраняется в соответствующем элементе массива.
- Замена отрицательных элементов массива. После ввода всех элементов массива программа проверяет каждый элемент на отрицательность. Если элемент отрицательный, программа запрашивает у пользователя новое значение и сохраняет его в соответствующем элементе массива.
- Вывод результата. После завершения ввода и замены отрицательных элементов программа выводит массив на экран. Таким образом, данный код выполняет задачу по замене отрицательных элементов массива на значения, введенные пользователем.