質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

4819閲覧

Expected ';' after top level declaratorというエラーを解決したい

YU_p

総合スコア3

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/12/13 11:52

前提・実現したいこと

2021年のある月日を入力して、1月1日から何日後かを計算するプログラムをC++で作りたいです。Xcode13.1を使用しています。

色々なテキストを読んで試行錯誤してみたのですが、どうしても上手くいかないので教えて頂きたいです。
宜しくお願い致します。

発生している問題・エラーメッセージ

関数DofMsを定義しようとすると、Expected ';' after top level declaratorというエラーが出て来てしまいます。
(DofM関数ではこのようなエラーは出ませんが、DofMs関数を定義しようとするときのみこのエラーが出てきます。)

該当のソースコード

html

1#include <iostream> 2 3using namespace std; 4 5int m; 6int d; 7 8int DofM(int m){ 9 int days = 0; 10 if (m == 4 || m == 6 || m == 9 || m == 11) 11 days = 30; 12 else if (m == 2) 13 days = 29; 14 else 15 days = 31; 16 17 return days; 18 } 19 20int DofMs((m - 1)){ //ここにエラーが出ます。 21 int DofM(m); 22 for (int (m - 1) = 0; (m - 1) <= 11; (m - 1)++){ 23 int sum = 0; 24 sum += DofM(m - 1); 25 26 return sum; 27 } 28 29 30int main (){ 31 cout << "1月1日からの日数を計算します。\n"; 32 cout << "月を入力して下さい。\n"; 33 cin >> m; 34 cout << "日を入力して下さい。\n"; 35 cin >> d; 36 37 int result = 0; 38 result = DofMs; 39 cout << "1月1日からの日数は、" << result + d << "です。\n" << endl; 40 41 return 0; 42 43 } 44```### 試したこと 45 46宣言と定義に分けてみましたが、同じエラーが出てきてさらにRedefinitionというエラーも出てきてしまいました。 47 48### 補足情報(FW/ツールのバージョンなど) 49 50Xcodeのバージョンは13.1 です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takasima20

2021/12/13 11:56

C++ って引数の定義に式を書けるんスか?
otn

2021/12/13 12:19

> int DofMs((m - 1)){ これは具体的にどういう意図なのでしょう?関数定義のつもりですか?あるいはそれ以外?
YU_p

2021/12/13 12:37 編集

int DofMs((m - 1)){ は関数定義のつもりで書きました。1月1日からm月n日までの日数を求めるために、(m-1)月分の日数を求める関数を作りたいです。
otn

2021/12/13 12:47

関数名の後の括弧の中には引数宣言を書きます。
YU_p

2021/12/13 13:11

>関数名の後の括弧の中には引数宣言を書きます。 関数名の後の括弧の中を、int xのような形にすれば良いということでしょうか。
otn

2021/12/13 14:31 編集

まあそういうことですが、そのレベルも人に聞かないと進めないようであれば、もう一度、言語の復習してから取り組んだ方が良いですね。
YU_p

2021/12/14 02:38

ありがとうございます。引数や変数や関数についての部分を本で読み直して取り組みたいと思います。
guest

回答1

0

ベストアンサー

引数はさておき

c++

1int DofMs((m - 1)){

波括弧が足りないようにみえます。

ついでにいうと、for ループの中で return するのは(たぶん)意図とはちがいますよね。

あと、main から呼ぶ時に(括弧も含めて)引数を指定してないスね。

なんか (m - 1) をあちこちにコピペしている印象ですが、いちど考え方を整理してみては?
--- 追記 ---
とりあえず現状のコードに手を入れてエラーが出ないようにしましたが
ロジック的な部分はがんばって考えてください。

c++

1#include <iostream> 2using namespace std; 3 4int m; 5int d; 6 7int DofM(int m) { 8 int days; 9 if (m == 4 || m == 6 || m == 9 || m == 11) 10 days = 30; 11 else if (m == 2) 12 days = 29; 13 else 14 days = 31; 15 16 return days; 17} 18 19int DofMs(int m) { 20 int sum = 0; 21 for (int i=1; i<=m; i++) { 22 sum += DofM(m); 23 } 24 25 return sum; 26} 27 28int main () { 29 cout << "1月1日からの日数を計算します。\n"; 30 cout << "月を入力して下さい。\n"; 31 cin >> m; 32 cout << "日を入力して下さい。\n"; 33 cin >> d; 34 35 int result = DofMs(m); 36 cout << "1月1日からの日数は、" << result + d << "です。\n" << endl; 37 38 return 0; 39}

投稿2021/12/13 12:43

編集2021/12/13 20:49
takasima20

総合スコア7460

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YU_p

2021/12/13 13:18

すみません。引数の形式については調べている最中です。 波括弧が足りないとは括弧の後に波括弧をさらに加えるということでしょうか。 forループ内でreturnしないとなるとvoid DofMsとなりますか? mainから呼ぶ時に引数を指定とはどのように行えば良いのでしょうか。 宜しくお願いします。
YU_p

2021/12/14 02:33

ありがとうございます。ロジック部分を整理し直してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問