71620


タイトルにもある通り、最大値の要素を1.2倍にしたいのですが、どうすればいいのかがわかりません。  
要素 `{87,20,45,38,99,120,28}` の最大値は 120 なので、期待している実行結果は

[code]

    $ ./a.out
    激励前: 87 20 45 38 99 120 28 
    激励後: 87 20 45 38 99 144 28 
    
[/code]

なのですが、実際に実行を行うと

[code]

    $ ./a.out
    激励前: 87 20 45 38 99 120 28 
    激励後: 87 20 45 38 99 120 28 
    
[/code]

となってしまいます。

私は以下のようにプログラムを実装したのですが、void関数の定義の仕方がわからなかったので聞いている次第です。

void関数をどのように修正すれば、期待している実行結果が出力されるのでしょうか。  
回答よろしくお願いします。

[code]

    #include <stdio.h>
    
    /* 要素数sizeの整数配列aに順に入力する */
    void printIntArray(int a[], int size)
    {
        int i;
        for (i = 0; i < size; i = i+1) {
            printf("%d ", a[i]);
        }
        printf("\n");
    }
    
    void bonus(int a[], int size, double x)
    {
        int i;
        double max,max2;
        x=1.2;
        max=a[0];
        for(i=1;i<size;i=i+1) {
            if (a[i]>max) {
                max=a[i];
            }
        }max2=x*max;
    }
    
    /* 要素数sizeの整数配列aの最大値を x 倍する */
    
    int main(void)
    {
        int salaries[] = { 87, 20, 45, 38, 99, 120, 28 };
        int size; 
    
        size = 7;
        printf("激励前: ");
        printIntArray(salaries, size);
    
        bonus(salaries,size,1.2);
    
        printf("激励後: ");
        printIntArray(salaries, size);
    
        return 0;
    }
    
[/code]


CC BY-SA 4.0
2020-10-30T02:43:15.127
71609
2020-10-30T09:47:13.603
2020-10-30T03:02:50.510
3060
41837
question
c
最大値の要素を、1.2倍にしたいのです

[code]

    void bonus(int a[], int size, double x)
    {
        int i;
        double max,max2;
        x=1.2;
        max=a[0];
        for(i=1;i<size;i=i+1) {
            if (a[i]>max) {
                max=a[i];
            }
        }max2=x*max;
    }
    
[/code]

a[i] を何も更新していないため配列 a の内容は変化しませんね。  
配列 a の要素の最大値の index を使いましょう。

[code]

    void bonus(int a[], int size, double x)
    {
        int k = 0;      // 最大値用の index
        for (int i = 1; i < size; i++) {
            if (a[i] > a[k]) {
                k = i;  // 大きい値の index で k を更新
            }
        }
        a[k] = (int)(a[k] * x);
    }
    
[/code]


CC BY-SA 4.0
2020-10-30T09:47:13.603
71620
2020-10-30T09:47:13.603
41756
71609
answer