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
@dhafitbagastara_google

3 Kontribusi 0 Poin

Diperbarui 4 tahun yang lalu

2 Jawaban:

<div>Dari full-code-nya.&nbsp;<br>Ada break (untuk While), sebelum goto-nya.<br>Jadi sudah keluar dari While sebelum menjalankan goto-nya.<br><br>---<br>karena hanya potongan code saja.<br>agak sulit melihat error-nya.<br><br>Dan tampaknya bukan goto-nya.<br>modifikasi agar bisa melihat goto-nya berfungsi.</div><pre>#include &lt;iostream&gt; using namespace std;

int main() { char is_continue;

label_pilih:
cout &amp;lt;&amp;lt; &quot;Lanjut?(y/n) : &quot;;
cin &amp;gt;&amp;gt; is_continue;

if ((is_continue == &#039;y&#039;) | (is_continue == &#039;Y&#039;)){
    //pilihan = getOption();
    cout &amp;lt;&amp;lt; &quot;Option&quot;;
} else if ((is_continue == &#039;n&#039;) | (is_continue == &#039;N&#039;)){
    //break;
    cout &amp;lt;&amp;lt; &quot;Break&quot;;
    return 0;
} else {
    cout &amp;lt;&amp;lt; &quot;GOTO \n&quot;;
    goto label_pilih;
}

}</pre>

avatar soeleman
@soeleman

120 Kontribusi 147 Poin

Dipost 4 tahun yang lalu

Tanggapan

program di atasnya sebuah program switch case

<pre>#include &lt;iostream&gt; #include &lt;string&gt;

using namespace std;

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

std::cout &amp;lt;&amp;lt; &quot;Program CRUD data Mahasiswa&quot; &amp;lt;&amp;lt; std::endl;
std::cout &amp;lt;&amp;lt; &quot;===========================&quot; &amp;lt;&amp;lt; std::endl;
std::cout &amp;lt;&amp;lt; &quot;1. Tambah data Mahasiswa&quot; &amp;lt;&amp;lt; std::endl;
std::cout &amp;lt;&amp;lt; &quot;2. Tampilkan data Mahasiswa&quot; &amp;lt;&amp;lt; std::endl;
std::cout &amp;lt;&amp;lt; &quot;3. Ubah data Mahasiswa&quot; &amp;lt;&amp;lt; std::endl;
std::cout &amp;lt;&amp;lt; &quot;4. Hapus data Mahasiswa&quot; &amp;lt;&amp;lt; std::endl;
std::cout &amp;lt;&amp;lt; &quot;5. Selesai&quot; &amp;lt;&amp;lt; std::endl;
std::cout &amp;lt;&amp;lt; &quot;===========================&quot; &amp;lt;&amp;lt; std::endl;
std::cout &amp;lt;&amp;lt; &quot;pilihan [1-5]? : &quot;;
std::cin &amp;gt;&amp;gt; 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 &amp;lt;&amp;lt; &quot;Menambahkan data Mahasiswa&quot; &amp;lt;&amp;lt; std::endl;
			break;
		case READ:
			std::cout &amp;lt;&amp;lt; &quot;Tampilkan data Mahasiswa&quot; &amp;lt;&amp;lt; std::endl;
			break;
		case UPDATE:
			std::cout &amp;lt;&amp;lt; &quot;Ubah data Mahasiswa&quot; &amp;lt;&amp;lt; std::endl;
			break;
		case DELETE:
			std::cout &amp;lt;&amp;lt; &quot;Hapus data Mahasiswa&quot; &amp;lt;&amp;lt; std::endl;
			break;
		default:
			std::cout &amp;lt;&amp;lt; &quot;Pilihan tidak ditemukan&quot; &amp;lt;&amp;lt; std::endl;
			break;
	}
	
	label_pilih:
	std::cout &amp;lt;&amp;lt; &quot;Lanjut?(y/n) : &quot;;
	std::cin &amp;gt;&amp;gt; is_continue;
	if ((is_continue == &#039;y&#039;) | (is_continue == &#039;Y&#039;)){
		pilihan = getOption();
	}else if ((is_continue == &#039;n&#039;) | (is_continue == &#039;N&#039;)){
		break;
	}else{
		break;
		goto label_pilih;
	}


}
std::cout &amp;lt;&amp;lt; &quot;akhir dari Program&quot; &amp;lt;&amp;lt; std::endl;
return 0;

} <br></pre>

avatar dhafitbagastara_google
@dhafitbagastara_google

3 Kontribusi 0 Poin

Dipost 4 tahun yang lalu

Tanggapan

sorry ini full codenya

comment di-code ini ada di jawaban diatas.

Login untuk ikut Jawaban