プロが教えるわが家の防犯対策術!

至急お願いします。プログラミングの問題です。
最初に正の整数nの入力を受け付け、次に分数の分子と分母を意味する整数のn組の入力を受け付けて、全部の分数の和の「式と結果」を出力するプログラムex14-3.cを完成させよ。少なくとも入出力例3と全く同じ入出力を再現すること。入力値は正の整数のみを考えれば良い。表示される分数は約分されなくて良い。分母が1の時でも分数表現のままで良い。ただしex14-3.cの作成にあたっては以下の条件を満たすこと。
・main関数の中は、追記しかできず(削除できない)追記箇所は//の左側のみとする。printf文は追記できない。
・main関数の外にも追記してよく、こちらはprintf文も追記できるが、グローバル変数、実数、は用いらないこと。

入出力例3
n:
3(ここは入力例)
x1:
1(ここは入力例)
y2:
2(ここは入力例)
x2:
3(ここは入力例)
y2:
4(ここは入力例)
x3:
5(ここは入力例)
y3:
6(ここは入力例)
1/2+3/4+5/6=100/48

ex14-3.c

#include <stdio.h>
int main(void)
{
int i,n;
//

printf(“n:\n”);
scanf(“%d”,&n);
//

for(i=0;i<n;i++)
{
printf(“x%d:\n”,i+1);
//
printf(“y%d:\n”,i+1);
//
}

sum(n,z);

//
return 0;
}

A 回答 (3件)

「printf文」ってなんですか?

    • good
    • 0
    • good
    • 0

2次元配列嫌い(理解できてない)のと、n の上限が指定されていないので、仕方なく。


プログラムが終わる時の free() はしない派。

#include <stdio.h>
#include <stdlib.h>

struct bunsu
{
int bunshi;
int bunbo;
};


struct bunsu add(struct bunsu a, struct bunsu b)
{
struct bunsu result;
result.bunbo = a.bunbo * b.bunbo;
result.bunshi = a.bunshi * b.bunbo + a.bunbo * b.bunshi;
return result;
}

void sum(int n, struct bunsu *z)
{
struct bunsu wk = {0, 1};

for (int i = 0; i < n; i++)
{
printf("%d/%d", z[i].bunshi, z[i].bunbo);
if (i != n - 1) printf("+");
wk = add(wk, z[i]);
}

printf("=%d/%d\n", wk.bunshi, wk.bunbo);
}


int main(void)
{
int i,n;
struct bunsu *z;

//
printf("n:\n");
scanf("%d",&n);
z = malloc(sizeof(struct bunsu) * n);

for(i=0;i<n;i++)
{
printf("x%d:\n",i+1);
scanf("%d", &z[i].bunshi);

printf("y%d:\n",i+1);
scanf("%d", &z[i].bunbo);

}
sum(n,z);
//
return 0;
}
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング