main関数、助けて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ことこ

main関数、助けて

#1

投稿記事 by ことこ » 11年前

#include<stdio.h>
int main (void)
int a[3] int b[3];
int i,j;
i=0.0;
j=0.0;
for(i=0;i<3;i++){
for(j=0;j<3;j++)
scanf("%d,&a[3]")
scanf("%d,&b[3]")
}

void calc_naiseki_gaiseki(int a, int b, naiski gaiseki)
naiseki=a[1]b[1]*+a[2]b[2]+a[3]b[3]
gaiseki=
c[0]=a[1]*b[2]-a[2]*b[1];
c[1]=a[2]*b[0]-a[0]*b[2];
c[2]=a[0]*b[1]-a[1]*b[0];
retura
#include<stdio.h>
int main (void)
int a[5]
int i;
printf("数字を5つ入力してください\n");
for(i=0;i<5;i++){
scanf("%d",&a[]);
}
printf("最大値%d\n",max);
printf("最小値%d\n",min);

return0

void calc_maxindex(max,min)
if(max<=a[]){
max=a[];
}

if(min>=a[]){
min=a[];
}
だれか教えてください
すべてmain関数以外で計算しないといけません
したは、最大と最少を求めるやつです
お願いします

アバター
h2so5
副管理人
記事: 2212
登録日時: 13年前
住所: 東京
連絡を取る:

Re: main関数、助けて

#2

投稿記事 by h2so5 » 11年前

質問内容が意味不明すぎるので誰も答えられないと思います。
非表示エリア
この非表示エリアを表示するには、登録し、ログインする必要があります。
最後に編集したユーザー h2so5 on 2012年12月01日(土) 00:20 [ 編集 1 回目 ]

nil
記事: 428
登録日時: 12年前

Re: main関数、助けて

#3

投稿記事 by nil » 11年前

1.フォーラムルールをお読みください
2.コードタグを使用してください
3.何をするプログラムかを書いてください
4.何がわからないのかを書いてください

たかぎ
記事: 328
登録日時: 13年前
住所: 大阪
連絡を取る:

Re: main関数、助けて

#4

投稿記事 by たかぎ » 11年前

ことこ さんが書きました:すべてmain関数以外で計算しないといけません
結構難しい要求ですね。
こういうことでしょうか?

コード:

#include <iostream>
#include <array>
#include <algorithm>

int program = 
[]()
{
  std::array<int, 5> data;
  std::cout << "数字を5つ入力してください" << std::endl;
  for (int& e : data) std::cin >> e;
  std::cout << "最大値" << *std::max_element(data.cbegin(), data.cend()) << std::endl;
  std::cout << "最小値" << *std::min_element(data.cbegin(), data.cend()) << std::endl;
  return 0;
}();

int main()
{
}


かずま

Re: main関数、助けて

#5

投稿記事 by かずま » 11年前

プログラムは 2つあるんですね。
たいていのプログラムは、全体をクラスの中に入れると、
main は空にできそうです。

コード:

#include <iostream>

struct v {
    double a[3], b[3], c[3], d;
    v() {
        std::cout << "a と b の要素を 3つずつ入力してください\n";
        std::cin >> a[0] >> a[1] >> a[2] >> b[0] >> b[1] >> b[2];
        d = calc(a, b, c);
        std::cout << "内積 " << d << "\n外積 ("
            << c[0] << ", " << c[1] << ", " << c[2] << ")\n";
    }
    double calc(double *a, double *b, double *c) {
        c[0] = a[1]*b[2] - a[2]*b[1];
        c[1] = a[2]*b[0] - a[0]*b[2];
        c[2] = a[0]*b[1] - a[1]*b[0];
        return a[0]*b[0] + a[1]*b[1] + a[2]*b[2];
    }
} v;

int main() { }

コード:

#include <iostream>
 
struct c {
    int a, b, d;
    c(int n) {
        std::cout << "数字を " << n << "個入力してください\n";
        std::cin >> a, b = a, f(n-1);
        std::cout << "最大値 " << b << "\n最小値 " << a << "\n";
    }
    void f(int i) {
        if (i) std::cin >> d, d < a ? (a = d) : d > b && (b = d), f(i-1);
    }
} c(5);
 
int main() { }

アバター
Dixq (管理人)
管理人
記事: 1661
登録日時: 13年前
住所: 北海道札幌市
連絡を取る:

Re: main関数、助けて

#6

投稿記事 by Dixq (管理人) » 11年前

ことこさん

まず、質問する時に「どんなプログラムなのか」「どこが分からなくて困っているのか」を書いて下さい。
詳しくはフォーラムルールに書いてあります。
http://dixq.net/board/board.html

見たところ、大きく分けて2つのプログラムに見えますが、この内積・外積を求めるプログラムと、最大値最小値を求めるプログラムは一つにしないといけないのでしょうか?
そして、すべてmain関数以外で計算しないといけないというのはどういうことでしょうか。
おそらく文章そのままの意味は期待されていないはずだと思います。
必要な物を関数化して、それをmain関数は呼び出すだけにするのでしょうか?

ことこ

Re: main関数、助けて

#7

投稿記事 by ことこ » 11年前

そうです説明不足ですいません
プログラムは、2あります
main関数で数字を入力してもらい、メインで表示、それ以外の関数で計算するかんじです
ポインターを使わないといけないらいいのですがようくわかりません

nil
記事: 428
登録日時: 12年前

Re: main関数、助けて

#8

投稿記事 by nil » 11年前

ポインタの使い方がわからないとのことなので、
その他のことについては理解できているということですか?

手順としてはmain関数で
1.ユーザーから入力される数字を格納する変数*2
2.計算結果を格納する変数*2
を定義。
scanfを使い数字を1.に格納。
適切な関数に引数として1.と2.のポインタを渡す。
関数にて計算を行い結果を2.に代入。

以上の処理を実装すればいいと思われます。

アバター
Dixq (管理人)
管理人
記事: 1661
登録日時: 13年前
住所: 北海道札幌市
連絡を取る:

Re: main関数、助けて

#9

投稿記事 by Dixq (管理人) » 11年前

ではまずポインタを使った簡単なプログラムから作ってみましょう。
少しずつ課題に近づけてやれば解けると思います。

下に問題1の解答例を書いておきますが、まずは見ないでやってみて下さい。
解釈はいろいろあると思います。

問題1.
二つのint型の数値を加算してその結果を得る関数をポインタを使って作りなさい。
また、その結果をmain関数内で表示しなさい。

コード:

#include <stdio.h>

void add(int a1, int a2, int *result){
	*result = a1 + a2;
}

int main(){
	int result=0;
	add(1,2,&result);
	printf("%d",result);
}
問題2.
問題1を改良し、5個の配列要素を持ったdouble型配列を受け取り、受け取った要素をすべて加算して結果を得る関数を作りなさい。
(配列要素に入れる数値はscanfで格納すること)

問題3.
全てmain関数に書いてよく、入力も求めなくていいので、内積を計算するプログラムを作りなさい。
(以下参考リンク)
http://www.google.co.jp/search?q=%E5%86 ... e&ie=UTF-8

これが解ければ自力で課題が一つ解決できませんか?

ことこ

Re: main関数、助けて

#10

投稿記事 by ことこ » 11年前

ポインタ関連は、わかったのですが5つの数から大きいものと小さいものを選ぶアルゴリズムがあわかりません
2つならx>yという形にすればいいと思うのですが5つの場合どうすればいいのでしょうか?

アバター
Dixq (管理人)
管理人
記事: 1661
登録日時: 13年前
住所: 北海道札幌市
連絡を取る:

Re: main関数、助けて

#11

投稿記事 by Dixq (管理人) » 11年前

それは「ソート」で解決します。
こちらを参考に
http://www1.cts.ne.jp/~clab/Contents/Sortindex.html
まずは一番簡単なバブルソートで実装してみてはいかがでしょう。
ソートの方法はたくさんあるので、この際色んなアルゴリズムで実装してみて下さい。

かずま

Re: main関数、助けて

#12

投稿記事 by かずま » 11年前

ことこ さんが書きました:ポインタ関連はわかったのですが、5つの数から大きいものと小さいものを選ぶアルゴリズムがわかりません。
2つならx>yという形にすればいいと思うのですが、5つの場合どうすればいいのでしょうか?
まずは、大きいものだけを選ぶアルゴリズムを考えてみましょう。

コード:

    max = a[0];
    if (a[1] > max) max = a[1];
    if (a[2] > max) max = a[2];
    if (a[3] > max) max = a[3];
    if (a[4] > max) max = a[4];
同じことの繰り返しは、for文に置き換えるとよいでしょう。

コード:

    max = a[0];
    for (i = 1; i < 5; i++)
        if (a[i] > max) max = a[i];
これで、小さいものの選び方もわかるでしょう。
2つの forループを 1つにまとめてもよいでしょう。

オカピーα
記事: 120
登録日時: 12年前

Re: main関数、助けて

#13

投稿記事 by オカピーα » 11年前

とりあえずmain関数を「{}」で囲っていないことが
コンパイルエラーの原因じゃないですかねw
C,C++,C#,これらを極めることを「3C政策」と言う

閉鎖

“C言語何でも質問掲示板” へ戻る