Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

Cプログラムで複数の配列範囲インクリメント操作を行った後、変更された配列を出力します。


m個の整数とnが配列に追加される値である配列arr[m]が与えられ、r個のクエリが開始と終了で与えられます。クエリごとに、配列の制限の開始から終了まで値nを追加する必要があります。

Input:
arr[] = {1, 2, 3, 4, 5}
query[] = { { 0, 3 }, { 1, 2 } }
n = 2
Output:
If we run above program then it will generate following output:
Query1: { 3, 4, 5, 6, 5 }
Query2: { 3, 6, 7, 6, 5 }

このプログラムは、-

という簡単なアプローチで解決できます。
  • すべてのクエリを繰り返し、クエリの開始点からクエリに格納されている終了点まで配列をトラバースします。
  • nの値を追加し、配列を出力します。

アルゴリズム

START
STEP 1 : DECLARE A STRUCT range for start AND end LIMITS
STEP 2 : IN FUNCTION add_tomatrix(int arr[], struct range r[], int n, int size, int m)
   int i, j, k;
   LOOP FOR i = 0 AND i < m AND i++
      LOOP FOR j = r[i].start AND j<= r[i].end AND j++
         arr[j] = arr[j] + n
      END FOR
      LOOP FOR k = 0 AND k < size AND k++
         PRINT arr[k]
      END FOR
   END FOR
STOP

#include <stdio.h>
struct range{
   int start, end; //struct to give the range for the array elements
};
int add_tomatrix(int arr[], struct range r[], int n, int size, int m){
   int i, j, k;
   for ( i = 0; i < m; i++) //for all the elements in a struct we defined{
      for(j = r[i].start; j<= r[i].end; j++) //from where till where we want our results to be updated{
         arr[j] += n; //add the value of the particular range
      }
      printf("Query %d:", i+1);
      for ( k = 0; k < size; k++){
         printf(" %d",arr[k]); // print the whole array after every query
      }
      printf("\n");
   }
}
int main(int argc, char const *argv[]){
   int arr[] ={3, 4, 8, 1, 10};
   struct range r[] = {{0,2}, {1, 3}, {3, 4}};
   int n = 2;
   int size = sizeof(arr)/sizeof(arr[0]);
   int m = sizeof(r)/sizeof(r[0]);
   add_tomatrix(arr, r, n, size, m);
   return 0;
}

出力

上記のプログラムを実行すると、次の出力が生成されます-

Query 1: 5 6 10 1 10
Query 2: 5 8 12 3 10
Query 3: 5 8 12 5 12

  1. 配列の左回転をCプログラムのO(n)時間とO(1)空間で出力します。

    いくつかのサイズnと複数の整数値の配列が与えられているので、与えられたインデックスkから配列を回転させる必要があります。 -のようなインデックスkから配列を回転させたい 例 Input: arr[] = {1, 2, 3, 4, 5}    K1 = 1    K2 = 3    K3 = 6 Output:    2 3 4 5 1    4 5 1 2 3    2 3 4 5 1 アルゴリズム START Step 1 -> Declare functio

  2. Cプログラムで、配列内の最後に出現する要素を相対的な順序で出力します。

    要素を含む配列a[]が与えられ、タスクは、リスト内の指定された要素の最後の出現を出力することです。ここでは、重複する要素を削除するだけでなく、配列内の要素が最後に発生したときの順序を維持する必要があります。 6つの要素の配列があり、いくつかの重複する値、つまり{1,3、2、3、1、2}も含まれているため、結果は312の形式になります。 例 Input: a[]={4,2,2,4,1,5,1} Output : 2 4 5 1 アルゴリズム START Step 1-> Declare function void printelements(int a[], int n) &nbs