Advertisement
Guest User

Untitled

a guest
Sep 18th, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.06 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. int arr[20],amount,proverka=0;
  4.  
  5. int index_first_negative( int*);
  6. int index_last_negative( int*);
  7. int multi_between_negative( int*);
  8. int multi_before_and_after_negative( int*);
  9.  
  10. int main(){
  11.     int value,otvet;
  12.     char c='a';
  13.     amount=-1;
  14.     scanf("%d",&value);
  15.     if(value!=0 && value!=1 && value!=2 && value!=3){
  16.         printf("Данные некорректны\n");
  17.         return 0;
  18.     }
  19.     do{
  20.         amount++;
  21.         scanf("%d%c", &arr[amount] , &c);
  22.     }while(c==' ');
  23.     if(value==0){
  24.     otvet = index_first_negative(arr);
  25.     }
  26.     if(value==1){
  27.     otvet = index_last_negative(arr);
  28.     }
  29.     if(value==2){
  30.     otvet = multi_between_negative(arr);
  31.     }
  32.     if(value==3){
  33.     otvet = multi_before_and_after_negative(arr);
  34.     }
  35.     if (otvet==0 && proverka == 1){
  36.     printf("Данные некорректны\n");
  37.     return 0;
  38.     }
  39.     printf("%d\n",otvet);
  40. }
  41.  
  42. int index_first_negative( int* arr){
  43.     for(int j=0;j<amount+1;j++){
  44.     if(arr[j]<0){
  45.         return j;
  46.     }
  47.     }
  48.     proverka = 1;
  49.     return 0;
  50. }
  51. int index_last_negative( int* arr){
  52.     for(int j=amount+1;j>-1;j--){
  53.     if(arr[j]<0){
  54.         return j;
  55.     }
  56.     }
  57.     proverka = 1;
  58.     return 0;
  59. }
  60. int multi_between_negative( int* arr){
  61.     int left=-1,right=-1,mult=1,counter=0;
  62.     for(int j=0;j<amount+1;j++){
  63.     if(arr[j]<0){
  64.         if(counter==0){
  65.             left = j;
  66.             counter=1;
  67.         }
  68.         right = j;
  69.     }
  70.     }
  71.     if(left==-1 && right==-1){
  72.     proverka = 1;
  73.     return 0;
  74.     }
  75.     if(left==right){
  76.     return arr[left];
  77.     }
  78.     for(int j=left;j<right;j++){
  79.     mult*=arr[j];
  80.     }
  81.     return mult;
  82. }
  83. int multi_before_and_after_negative( int* arr){
  84.     int left=-1,right=-1,mult=1,counter=0;
  85.     for(int j=0;j<amount+1;j++){
  86.     if(arr[j]<0){
  87.         if(counter==0){
  88.             left = j;
  89.             counter=1;
  90.         }
  91.         right = j;
  92.     }
  93.     }
  94.     if(left==-1 && right==-1){
  95.     proverka = 1;
  96.     return 0;
  97.     }
  98.     for(int j=0;j<left;j++){
  99.     mult*=arr[j];
  100.     }
  101.     for(int j=right;j<amount+1;j++){
  102.     mult*=arr[j];
  103.     }
  104.     return mult;
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement