Заменить все отрицательные элементы массива на значение, введенное пользователем - 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;
}

Объяснение кода листинга программы

В этом коде выполняются следующие действия:

  1. Ввод количества элементов массива и проверка корректности ввода. Вначале программа запрашивает у пользователя количество элементов массива и сохраняет его в переменной N. Затем с помощью цикла while происходит проверка корректности ввода. Если пользователь ввёл некорректное значение (например, отрицательное число или букву вместо цифры), программа выводит сообщение об ошибке и просит ввести значение заново. Если же пользователь ввёл корректное значение, программа переходит к следующему этапу.
  2. Выделение памяти под массив. С помощью функции malloc выделяется память под массив. Размер массива определяется переменной N. Если память не удалось выделить, программа выводит сообщение об ошибке и завершает работу.
  3. Ввод элементов массива. Программа запрашивает у пользователя ввод всех элементов массива. Для каждого элемента выполняется проверка корректности ввода. Если пользователь ввёл некорректное значение, программа выводит сообщение об ошибке и просит ввести значение заново. Если же пользователь ввёл корректное значение, оно сохраняется в соответствующем элементе массива.
  4. Замена отрицательных элементов массива. После ввода всех элементов массива программа проверяет каждый элемент на отрицательность. Если элемент отрицательный, программа запрашивает у пользователя новое значение и сохраняет его в соответствующем элементе массива.
  5. Вывод результата. После завершения ввода и замены отрицательных элементов программа выводит массив на экран. Таким образом, данный код выполняет задачу по замене отрицательных элементов массива на значения, введенные пользователем.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.9 из 5
Похожие ответы