• 締切済み

Objective-Cに関する質問です

クイズアプリを制作しているのですが、『正しい答え』と『選択肢』の照合が上手くいきません。 下記のプログラムだと、どの選択肢を選択してもすべて正解になってしまいます。 【hファイルの内容(問題&選択肢に関するプログラム)】 #define NUMBER_OF_QUESTION 11 __strong NSString* imageFile[NUMBER_OF_QUESTION] = { @"あ.jpg", // 1 @"い.jpg", // 2 @"う.jpg", // 3 @"え.jpg", // 4 @"お.jpg", // 5 }; __strong NSString* answer[NUMBER_OF_QUESTION][4] = { {@"あ",@"し",@"へ",@"は"}, // 1 {@"く",@"い",@"ち",@"は"}, // 2 {@"や",@"む",@"う",@"り"}, // 3 {@"え",@"ね",@"く",@"つ"}, // 4 {@"と",@"ひ",@"ん",@"お"}, // 5 }; const int correct[NUMBER_OF_QUESTION] = { 0,1,1,1, // 1   ←ここがよくわからない〔現状:実行すると、どの選択肢を      1,0,1,1,                 選択しても正解になってしまう。〕 };                       ————————————————————————————————————— 【mファイルの内容(ボタンに関するプログラム)】 - (IBAction)button1:(id)sender //ボタン1を押したとき { if (correct[appdelegate.mondai] == 0) { [self performSegueWithIdentifier:@"seni1" sender:self]; appdelegate = [[UIApplication sharedApplication] delegate]; appdelegate.kai = appdelegate.kai+1; } else { _haikei.backgroundColor = [UIColor redColor]; appdelegate = [[UIApplication sharedApplication] delegate]; appdelegate.matigai = appdelegate.matigai+1; }     ※あと3つ同じような文が下に続きます。 ————————————————————————————————————— xCodeで書いたクイズアプリの〔問題・選択肢・選択用のボタン〕について記述したプログラムの一部分なのですが、 各問題の正しい『答え』と『選択肢中の正しいもの』を照合(正答が「あ」であれば、 選択肢中の「あ」を選択した時に正解になるように)させたいです。 そうするためには、どのようなプログラム文を追加(又は修正)したらよいですか。 ※選択肢は各問題に4つずつあります。 よろしくお願いします。

みんなの回答

  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.1

Objective-C 知らないのでコードを正確に把握できませんが 普通にCとして考えた場合確認事項として2点 ・appdelegate.monda の値はきちんと0~3の値になっているのか  (配列が1から始まるなら 1~4の値になっているのか) ・単純にif文4個書いただけだと 仮に1個目で正解としたときに  2個目のif分で不正解と書き換えられることがあります(その反対もある)  正解判定した段階で関数から抜けるとか else文内に  残りのif文書くなどの方法を取ってください

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • [再]objective-c 描画処理について

    前回質問させて頂きましたが、まだ抜け出せていないので教えて下さい。 ↓↓↓ -------------------------------------------------------------------------------------------------------------- 初心者ですが、iPhoneアプリを作成しています。 画像を並べてスクロールできるように配列で描画処理を行ないたいのですが、うまくいきません。 今のところのコードはこんな感じです↓ - (void)viewDidLoad { [super viewDidLoad]; NSMutableArray* imageList = [NSMutableArray array]; for (int i=1; i < 20; i++) { UIImage* image = [UIImage imageNamed: [NSString stringWithFormat:@"%d.jpg", i+1]]; [imageList addObject:image]; } MyImageView* imageView = [[MyImageView alloc] initWithImage:imageList]; scrollView.contentSize = imageView.bounds.size; [scrollView addSubview:imageView]; [imageView release]; } どなたか分かる方、教えて頂けますよう宜しくお願いします。 -------------------------------------------------------------------------------------------------------------- ↓ NSArray *initWithImage;と引数で渡しましたが、 「MyImageView* imageView = [[MyImageView alloc] initWithImage:imageList];」 の部分で、「Incompatible pointer sending 'NSMutableArray *' to parameter of type 'UIImage *'」とエラー表示され、実行すると、 「Tread1 : Program received signal: "SIGABRT"」で落ちてしまいます。

  • iPhoneのアプリ開発についてお伺い致します。

    Xcodeの実装をお伺いしたいのですが,あるアプリ開発の本を参考にして、クイズアプリをつくりました。クイズの問題、選択肢のデータファイルはテキストファイルでResourceに作成します。問題文をテキストビューに、選択肢をボタンに記載し、選択肢のボタンを押す事で回答させるシステムです。正解のボタンをタップすると、ボタンの文字の先頭に○を、不正解だと×を表示するのですが、これに、不正解時に正解のボタンの先頭に★等の印をつける為のソースコードをご教示いただければ幸いです。因に、テキストファイルには、1行目;問題文、2行目;正解の選択肢、3~5行目;不正解の選択肢、となっております。 //選択肢のボタンがタップされたときの処理 - (IBAction)answer:(id)sender { //正解か不正解かを見せる間、タップできない様に、ボタンを無効表示に変更する。 self.answerButton1.enabled = NO; self.answerButton2.enabled = NO; self.answerButton3.enabled = NO; self.answerButton4.enabled = NO; //タップされたボタンのラベルを取得する NSString *str = [[sender titleLabel] text]; //出題された問題の情報を取得する QuizItem *item = [self.quiz.usedQuizItems lastObject]; //正解か判定する if ([item checkIsRightAnswer:str]) { //正解なので、○を先頭に追加する [sender setTitle:[NSString stringWithFormat:@"○ %@", str] forState:UIControlStateNormal]; //効果音を再生する AudioServicesPlaySystemSound(_rightSound); } else { //不正解なので×を先頭に追加する [sender setTitle:[NSString stringWithFormat:@"× %@", str] forState:UIControlStateNormal]; }

    • 締切済み
    • Mac
  • iPhoneのアプリ開発についてお伺い致します。

    Xcodeの実装をお伺いしたいのですが,あるアプリ開発の本を参考にして、クイズアプリをつくりました。クイズの問題、選択肢のデータファイルはテキストファイルでResourceに作成します。問題文をテキストビューに、選択肢をボタンに記載し、選択肢のボタンを押す事で回答させるシステムです。正解のボタンをタップすると、ボタンの文字の先頭に○を、不正解だと×を表示するのですが、これに、不正解時に正解のボタンの先頭に★等の印をつける為のソースコードをご教示いただければ幸いです。因に、テキストファイルには、1行目;問題文、2行目;正解の選択肢、3~5行目;不正解の選択肢、となっております。 //選択肢のボタンがタップされたときの処理 - (IBAction)answer:(id)sender { //正解か不正解かを見せる間、タップできない様に、ボタンを無効表示に変更する。 self.answerButton1.enabled = NO; self.answerButton2.enabled = NO; self.answerButton3.enabled = NO; self.answerButton4.enabled = NO; //タップされたボタンのラベルを取得する NSString *str = [[sender titleLabel] text]; //出題された問題の情報を取得する QuizItem *item = [self.quiz.usedQuizItems lastObject]; //正解か判定する if ([item checkIsRightAnswer:str]) { //正解なので、○を先頭に追加する [sender setTitle:[NSString stringWithFormat:@"○ %@", str] forState:UIControlStateNormal]; //効果音を再生する AudioServicesPlaySystemSound(_rightSound); } else { //不正解なので×を先頭に追加する [sender setTitle:[NSString stringWithFormat:@"× %@", str] forState:UIControlStateNormal]; }

  • Objective-Cのエラーコードの意味

    タイトルの通りです。 エラー部分は最下部にあります。 ------------------------------------------------------------------------------------------------- // // ViewController.m // Kadai // // Created by on 2014/08/10. // Copyright (c) 2014年 saikoro. All rights reserved. // #import "ViewController.h" @interface ViewController () <UIAlertViewDelegate> @property (weak, nonatomic) IBOutlet UITextField *tfMyouji; @property (weak, nonatomic) IBOutlet UITextField *tfName; @property (weak, nonatomic) IBOutlet UILabel *Aisatsu; @end @implementation ViewController // 画面タッチ時 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ // キーボード非表示 [self.tfMyouji resignFirstResponder]; [self.tfName resignFirstResponder]; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } // [挨拶する]ボタン押下 - (IBAction)introduce:(id)sender { UIAlertView *av = [[UIAlertView alloc]initWithTitle:@"確認" message:@"挨拶しますか?" delegate:self cancelButtonTitle:@"キャンセル" otherButtonTitles:@"はい", nil]; // 表示 [av show]; } // AlertViewボタン押下 - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"再確認" message:@"本当に挨拶しますか?" delegate:nil cancelButtonTitle:@"やっぱりやめときます" otherButtonTitles:@"早く!", nil]; [av show]; } // AlertViewボタンさらに押下 + (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ // 入力された名前の保持 NSString *str = self.tfMyouji.text; ←ここでエラーが出ます。なぜか「tfMyouji」が                    予測で出てきません } @end ------------------------------------------------------------------------------------------------- どなたかエラーの理由をご教授頂けないでしょうか。 以上、何卒宜しくお願い致します。

  • スクロールの上にある画像をフリックで変える方法とは

    今、画像を左右に数枚スクロールさせ、かつ、その画像を上や下にフリックすると各々、上や下に他の画像がでてきて、さらに拡大縮小もできるようなコードを書いています。 ViewContorller(以下、VC)にスクロールのメソッドを書き、 もう一つのPageView(UIScrollVIewクラスを親にもつ。以下、PV)に画像が拡大縮小するようなメソッドと上下のフリックのメソッドを書いています。 このPVの中で行う上下のフリックの操作によって、VCにあるスクロールの上に乗っている画像を変えたいのですが、色々と試したのですがその方法が一向にわかりません。もし宜しければ、ご教授ください。宜しくお願い致します。 xcodeは5.0です。 以下、スクロールとその上に画像をのせているpageがあるVC.mのコードです。 このpageにのっている画像をPVのほうのフリック操作で変更させたいと思っています。 - (void)viewDidLoad { [super viewDidLoad]; UIScrollView *scrollView = [[UIScrollView alloc] init]; scrollView.frame = self.view.bounds; scrollView.contentSize = CGSizeMake(self.view.frame.size.width * 3, self.view.frame.size.height); scrollView.pagingEnabled = YES; [self.view addSubview:scrollView]; //AppdelegateでValueというプロパティをつくり、PVでのフリック操作によってこの数値が変動したら、currentpageに反映して、それに対しての画像がでてくるようにしたいつもりです。 AppDelegate *appdelegate=(AppDelegate*)[[UIApplication sharedApplication]delegate]; currentpage=appdelegate.Value; //PageViewにて、画像をいれるメソッドをsetImageでつくっています。 for (int i=1;i<4;i++) { PageView *page = [[PageView alloc] initWithFrame:self.view.bounds]; [page setImage:[NSString stringWithFormat:@"%d.%d",currentpage,i]]; page.frame = CGRectMake( self.view.frame.size.width * (i-1), 0, self.view.frame.size.width, self.view.frame.size.height ); [scrollView addSubview:page]; }

  • Two questions

    試験結果を知り合いに聞いたところ、このような返答がかえってきました。 It was multiple choice. I hate it, because some of the questions also could be two questions. 話の雰囲気からこのTwo questionsというのは、正解が1つのはずの選択問題なのに、どうかんがえても2つ正解が有るように感じられるような紛らわしい問題があったということだと想像したのですが、自信がありません。 教えていただけませんか、よろしくお願い致します。

  • オブジェクトのインスタンス変数について

    AppDataというどのクラスからもアクセスできるデータモデルクラスを作り、AppDataに格納された配列のデータを viewControllerがもつリストにセットして、テーブル表示させたいのですがうまくいかないのです。 自分の考えではポインタをきちんと理解していないorオブジェクトのインスタンス変数の寿命を把握していない。 なぜ動かないのか??どういった部分を勉強するべきか??教えていただければ幸いです! プログラムは省略してあります。 AppDelegateクラス - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { AppData *share = [AppData sharedData]; //共通データクラス作成完了 viewController.list = share.responseJsonDataArray; ←●ここが動きません!! デバッグさせるとresponseJsonDataArrayが初期化されていませんでした。 } AppDataクラス +(AppData *)sharedData { if (!_appData) { _appData = [[AppData alloc] init]; } responseJsonString = [[NSString alloc] init]; responseJsonDataArray = [[NSMutableArray alloc] initWithObjects:@"kou",@"kou",nil]; ↑ここに入ったデータを呼び出してテーブル表示させたい!! return _appData; } よろしくお願い致します!!

  • objective-cに関する質問です。

    objective-c初心者です。以下の参考書に載っていた初期化という処理についていまいち理解できません。 理解できない所は、何度も出てくるselfが何者なのか、というコトと、 [self.view addSubview:_textField]; このaddsubviewは何なのかということです。 調べても分からなかったので、親切な方教えて下さいますと幸いです。 よろしくお願い致します。 _____________________________ //初期化 - (void)viewDidLoad { [super viewDidLoad]; //テキストフィールドの生成 _textField=[self makeTextField:CGRectMake(10,20,300,32) text:@""]; [self.view addSubview:_textField]; //書き込みボタンの生成 UIButton* btnWrite=[self makeButton:CGRectMake(55,62,100,40) text:@"書き込み" tag:BTN_WRITE]; [self.view addSubview:btnWrite]; //読み込みボタンの生成 UIButton* btnRead=[self makeButton:CGRectMake(165,62,100,40) text:@"読み込み" tag:BTN_READ]; [self.view addSubview:btnRead]; }

  • 4択問題の解答に図を使いたいのです。

    現在私は画像のような4択の問題を解答し最後に何問正解していたかを表示するプログラムを作成しています。 解答を選択して「次の問題」ボタンをクリックすれば次の問題に移行する・・・というような流れです。 データテーブルに「問題(Question)」「選択肢(Answer1~4)」「解答(SelectAnswr)」「正解(CorrectAnswer」「正解の解説(Explanation)*今質問中では使用させません」を格納しています。 このプログラムでITパスポート試験の問題を出題しようと考えています。 ですがITパスポートの問題は解答郡が図形であったり問題文にも図形がでてきたりしてどのように現在のプログラムとフォームを改造すればいいのか悩んでいます。 もしわかる方がいましたら知恵を貸してください。よろしくお願いします。

  • java script 選択問題

    以下のような、選択問題をjavascript で、作成したのですが、行き詰っています。わかる方がいましたら、ご助言して、頂けないでしょうか。 ○4 つの選択しから選択できる。 ○選択肢は、任意の文字列が入ったボタンを選択することで、選択できる。 ○[ポップアップ ウインドウ]で表示させたい。 ○選択肢を選んだ時に、値を取得し、その値と配列に記述した、値が同じだったら[正解]と表示させたい。 ※以下の画像の[OK] 、[キャンセル] ボタンの代わりに、[北海道] [秋田] [青森] [山形] のように表示するイメージです。 ※ 今作成中のコードです。 for (var i = 0; i < numOfQ; i++) { num = getRandom(); msg = questions[num] + "?" multiChoise = confirm(msg); if (multiChoise) { selectChoise = answer1; }else{ selectChoise = answer2; } window.alert(kotaeawase[num]); if (ans == questions[num]) { correct++; } }