Advertisement
maxim_shlyahtin

lab_1

Sep 12th, 2022 (edited)
967
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.12 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX_SIZE 101
  4.  
  5.  
  6. int index_first_negative(int arr[], int array_size){
  7.     int index = 0;
  8.     for(int i = 0; i < array_size; i++){
  9.         if(arr[i] < 0){
  10.             index = i;
  11.             break;
  12.         }
  13.     }
  14.     return index;
  15. }
  16.  
  17.  
  18. int index_last_negative(int arr[], int array_size){
  19.     int index = 0;
  20.     for(int i = array_size - 1; i > -1; i--){
  21.         if(arr[i] < 0){
  22.             index = i;
  23.             break;
  24.         }
  25.     }
  26.     return index;
  27. }
  28.  
  29.  
  30. int sum_between_negative(int arr[], int array_size){
  31.     int sum = 0;
  32.     int first_negative_index = index_first_negative(arr, array_size);
  33.     int last_negative_index = index_last_negative(arr, array_size);
  34.     for(int i = first_negative_index; i < last_negative_index; i++)
  35.         sum += abs(arr[i]); //подсчет суммы
  36.     return sum;
  37. }
  38.  
  39.  
  40. int sum_before_and_after_negative(int arr[], int array_size){
  41.     int sum = 0;
  42.     int first_negative_index = index_first_negative(arr, array_size);
  43.     int last_negative_index = index_last_negative(arr, array_size);
  44.     for(int i = 0; i < first_negative_index; i++)
  45.         sum += abs(arr[i]);
  46.     for(int i = last_negative_index; i < array_size; i++)
  47.         sum += abs(arr[i]);
  48.     return sum;
  49. }
  50.  
  51. int main(){
  52.     char c;
  53.     int task, actual_arr_size = 0, arr[MAX_SIZE];
  54.     scanf("%d", &task);
  55.     for(int i = 0; i <= MAX_SIZE; i++){
  56.         scanf("%d%c", &arr[i], &c);
  57.         if(i == MAX_SIZE || c == '\n'){
  58.             actual_arr_size = i + 1;
  59.             break;
  60.         }
  61.     }
  62.     switch(task){
  63.         case(0):
  64.             printf("%d\n", index_first_negative(arr, actual_arr_size));
  65.             break;
  66.         case(1):
  67.             printf("%d\n", index_last_negative(arr, actual_arr_size));
  68.             break;
  69.         case(2):
  70.             printf("%d\n", sum_between_negative(arr, actual_arr_size));
  71.             break;
  72.         case(3):
  73.             printf("%d\n", sum_before_and_after_negative(arr, actual_arr_size));
  74.             break;
  75.         default:
  76.             puts("Данные некорректны");
  77.  
  78.     }
  79.     return 0;
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement