最終更新日 2020/7/16   ©2020 by T.IZUMI

Go To キャンペーン

敢えて for や while を使わずに goto でプログラムをかいてみる

以下の処理を行うプログラムを、 for や while を使わずに goto により作成せよ。 ここで、 if 文で行える動作は goto のみとし、else は使用禁止とする。

例題1:配列の合計値を求めよ

以下は、C言語による実装例。 配列 a[] と要素数 n を入力し、合計値を返す。 array_sum() が普通にforループで実装した例。 array_sum_goto() が敢えてgotoで実装した例。

プログラム例 array_sum()
#include <stdio.h>
#include <stdlib.h>

#define ARYSZ 256

int array_sum(int a[],int n){
  int i,sum;
  sum=0;
  for (i=0;i<n;i++) {
    sum=sum+a[i];
  }
  return sum;
}

int array_sum_goto(int a[],int n){
  int i,sum;
  sum=0;
  i=0;
 LOOP_BEGIN:
  if (i<n) goto IF_TRUE;
  goto LOOP_END;
 IF_TRUE:
  sum=sum+a[i];
  i++;
  goto LOOP_BEGIN;
 LOOP_END:
  return sum;
}

int main(void){
  int a[ARYSZ],i;
  for (i=0;i<ARYSZ;i++) a[i]=(random()%2047)-1023;
  printf("x=%d\n",array_sum(a,ARYSZ));
  printf("x=%d\n",array_sum_goto(a,ARYSZ));
  return 0;
}

問題1:配列の平均値を求めよ

問題2:配列の最大値を求めよ

問題3:配列の中央値を求めよ

いずみ研立命館大学 理工学部 電子情報工学科

いずみ研的 プログラミングに関する参考資料に戻る