lucasteles42

Goto

Sep 20th, 2020
791
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2.  
  3. public static class Program
  4. {
  5.     public static void Main()
  6.     {
  7.         int largura, altura, profundidade;
  8.         largura = altura = profundidade = 5;
  9.         var array3d = new int[altura, largura, profundidade];
  10.         var random = new Random();
  11.         var numeroProcurado = random.Next(100);
  12.         for (var i = 0; i < altura; i++)
  13.             for (var j = 0; j < largura; j++)
  14.                 for (var k = 0; k < profundidade; k++)
  15.                     array3d[i, j, k] = random.Next(100);
  16.  
  17.         void FazAlgo(int x, int y, int z) => Console.WriteLine($"ACHEI: {x},{y},{z} | valor: {array3d[x, y, z]}");
  18.  
  19.  
  20.         // um caso em que goto pode ser util
  21.         // encontrar um valor em um for aninhado
  22.         // e parar todos os loops
  23.         for (var i = 0; i < altura; i++)
  24.             for (var j = 0; j < largura; j++)
  25.                 for (var k = 0; k < profundidade; k++)
  26.                     if (array3d[i, j, k] == numeroProcurado)
  27.                     {
  28.                         FazAlgo(i, j, k);
  29.                         goto stop;
  30.                     }
  31.  
  32.                 stop:
  33.         // ta tudo bem...
  34.  
  35.  
  36.  
  37.         // sem goto
  38.         var parar = false;
  39.         for (var i = 0; i < altura; i++)
  40.         {
  41.             for (var j = 0; j < largura; j++)
  42.             {
  43.                 for (var k = 0; k < profundidade; k++)
  44.                 {
  45.                     if (array3d[i, j, k] == numeroProcurado)
  46.                     {
  47.                         FazAlgo(i, j, k);
  48.                         parar = true;
  49.                         break;
  50.                     }
  51.                 }
  52.                 if (parar) break;
  53.             }
  54.             if (parar) break;
  55.         }
  56.  
  57.  
  58.         (int x, int y, int z)? Encontrar()
  59.         {
  60.             for (var i = 0; i < altura; i++)
  61.                 for (var j = 0; j < largura; j++)
  62.                     for (var k = 0; k < profundidade; k++)
  63.                         if (array3d[i, j, k] == numeroProcurado)
  64.                             return (i, j, k);
  65.  
  66.             return null;
  67.         }
  68.         var achou = Encontrar();
  69.         if (achou.HasValue && achou is var (x, y, z))
  70.             FazAlgo(x, y, z);
  71.  
  72.     }
  73.  
  74. }
  75.  
RAW Paste Data