第10回 (7/8) 演習の解答例

Problem 1

#include <stdio.h>

float max_value(float x, float y, float z)
{
    if (x < y) x = y;
    if (x < z) x = z;
    return x;
}

int main()
{
    int i, N;
    scanf("%d", &N);
    for (i=0; i<N; i++){
        float x, y, z;
        scanf("%f %f %f", &x, &y, &z);
        printf("%f\n", max_value(x, y, z));
    }
    return 0;
}

Problem 2

#include <stdio.h>

float average(int n, float v[])
{
    int i;
    float s=0;
    for (i=0; i<n; i++) {
        s += v[i];
    }
    return s/n;
}

int input_values(float v[])
{
    int i, n;
    scanf("%d", &n);
    for (i=0; i<n; i++)
        scanf("%f", &v[i]);
    return n;
}

int main()
{
    int n1, n2, i;
    float a1, a2, v1[1000], v2[1000];
    n1 = input_values(v1);
    a1 = average(n1, v1);
    n2 = input_values(v2);
    a2 = average(n2, v2);
    if (a1<a2)
        printf("<\n");
    else if (a1>a2)
        printf(">\n");
    else
        printf("=\n");
    return 0;
}

Problem 3

#include <stdio.h>

int string_compare(char x[], char y[])
{
    int i=0;
    while (x[i]==y[i] && x[i]!='\0')
    {
        i++;
    }
    return x[i]-y[i];
}

int main()
{
    char p[1000][1024];
    int a[1000], i, j, N;
    
    scanf("%d", &N);
    for (i=0; i<N; i++) {
        scanf("%s", p[i]);
        a[i] = i;
    }

    for (i=N-1; i>=1; i--) {
        for (j=1; j<=i; j++) {
            if (string_compare(p[a[j-1]], p[a[j]])>0) {
                int t=a[j-1]; a[j-1]=a[j]; a[j]=t;
            }
        }
    }

    for (i=0; i<N; i++) {
        printf("%s\n", p[a[i]]);
    }
    return 0;
}

Updated: