Kenapa "goto label" tidak berfungsi?

 label_pilih:
 std::cout << "Lanjut?(y/n) : ";
 std::cin >> is_continue;
 if ((is_continue == 'y') | (is_continue == 'Y')){
     pilihan = getOption();
 }else if ((is_continue == 'n') | (is_continue == 'N')){
     break;
 }else{
     goto label_pilih;
 }
avatar dhafitbagastara_google

Ditanyakan oleh @dhafitbagastara_google

3 Kontribusi 0 Poin

Login untuk menanggapi


Jawaban

Dari full-code-nya. 
Ada break (untuk While), sebelum goto-nya.
Jadi sudah keluar dari While sebelum menjalankan goto-nya.

---
karena hanya potongan code saja.
agak sulit melihat error-nya.

Dan tampaknya bukan goto-nya.
modifikasi agar bisa melihat goto-nya berfungsi.
#include <iostream>
using namespace std;

int main()
{
    char is_continue;
    
    label_pilih:
    cout << "Lanjut?(y/n) : ";
    cin >> is_continue;
    
    if ((is_continue == 'y') | (is_continue == 'Y')){
        //pilihan = getOption();
        cout << "Option";
    } else if ((is_continue == 'n') | (is_continue == 'N')){
        //break;
        cout << "Break";
        return 0;
    } else {
        cout << "GOTO \n";
        goto label_pilih;
    }
}
avatar soeleman

Dijawab oleh @soeleman

42 Kontribusi 21 Poin

Login untuk menanggapi


#include <iostream>
#include <string>

using namespace std;

int getOption(){
	int input;
	system("cls");

	std::cout << "Program CRUD data Mahasiswa" << std::endl;
	std::cout << "===========================" << std::endl;
	std::cout << "1. Tambah data Mahasiswa" << std::endl;
	std::cout << "2. Tampilkan data Mahasiswa" << std::endl;
	std::cout << "3. Ubah data Mahasiswa" << std::endl;
	std::cout << "4. Hapus data Mahasiswa" << std::endl;
	std::cout << "5. Selesai" << std::endl;
	std::cout << "===========================" << std::endl;
	std::cout << "pilihan [1-5]? : ";
	std::cin >> input;
	return input;
}

int main(){
	
	int pilihan = getOption();
	char is_continue;

	enum option{CREATE = 1, READ, UPDATE, DELETE, FINISH};

	while(pilihan != FINISH){

		switch (pilihan){
			case CREATE:
				std::cout << "Menambahkan data Mahasiswa" << std::endl;
				break;
			case READ:
				std::cout << "Tampilkan data Mahasiswa" << std::endl;
				break;
			case UPDATE:
				std::cout << "Ubah data Mahasiswa" << std::endl;
				break;
			case DELETE:
				std::cout << "Hapus data Mahasiswa" << std::endl;
				break;
			default:
				std::cout << "Pilihan tidak ditemukan" << std::endl;
				break;
		}
		
		label_pilih:
		std::cout << "Lanjut?(y/n) : ";
		std::cin >> is_continue;
		if ((is_continue == 'y') | (is_continue == 'Y')){
			pilihan = getOption();
		}else if ((is_continue == 'n') | (is_continue == 'N')){
			break;
		}else{
			break;
			goto label_pilih;
		}


	}
	std::cout << "akhir dari Program" << std::endl;
	return 0;
}

avatar dhafitbagastara_google

Dijawab oleh @dhafitbagastara_google

3 Kontribusi 0 Poin

Login untuk menanggapi


Login untuk gabung berdiskusi