Advertisement
ntamas

házi feladatok

Dec 2nd, 2013
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.53 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace hazifeladat
  7. {
  8.   class Program
  9.   {
  10.     static void transzponalt(int[,] tomb, uint sorsz, uint oszlopsz, bool foatlo, bool mellekatlo)
  11.     {
  12.       int elem;
  13.       for (int j = 0; j < sorsz; j++)
  14.       {
  15.         if (foatlo)
  16.         {
  17.           for (int i = j; i < oszlopsz; i++)
  18.           {
  19.             elem = tomb[j, i];
  20.             tomb[j, i] = tomb[i, j];
  21.             tomb[i, j] = elem;
  22.           }
  23.         }
  24.         else if(mellekatlo)
  25.         {
  26.           for (int i = 0; i < oszlopsz-j; i++ )
  27.           {
  28.             elem = tomb[j, i];
  29.             tomb[j, i] = tomb[sorsz - 1 - i, sorsz - 1 - j];
  30.             tomb[sorsz - 1 - i, sorsz - 1 - j] = elem;
  31.           }
  32.         }
  33.       }  
  34.     }
  35.     static void csere(int[,] tomb, uint sorsz, uint oszlopsz, bool sorcsere, bool oszlopcsere)
  36.     {
  37.       int elem;
  38.       for (int j = 0; j < sorsz/2; j++)
  39.       {
  40.         for (int i = 0; i < oszlopsz/2; i++)
  41.         {
  42.           elem = tomb[j, i];
  43.           if (sorcsere)
  44.           {
  45.             tomb[j, i] = tomb[sorsz - 1 - j, i];
  46.             tomb[sorsz - 1 - j, i] = elem;
  47.           }
  48.           else if (oszlopcsere)
  49.           {
  50.             tomb[j, i] = tomb[j, oszlopsz - 1 - i];
  51.             tomb[j, oszlopsz - 1 - i] = elem;
  52.           }
  53.         }
  54.       }  
  55.     }
  56.     static void kiiras(int[,] tomb, uint sorsz, uint oszlopsz)
  57.     {
  58.       for (int j = 0; j < sorsz; j++)
  59.       {
  60.         for (int i = 0; i < oszlopsz; i++)
  61.         {
  62.           Console.Write("{0}  ", tomb[j, i]);
  63.         }
  64.         Console.WriteLine();
  65.       }
  66.     }
  67.  
  68.     static void tombfeltolt(int[,] tomb, uint sorsz, uint oszlopsz, Random vel, uint szjegy, bool kul)
  69.     {
  70.       int tombhatar1 = Convert.ToInt32(Math.Pow(10, szjegy-1));
  71.       int tombhatar2 = Convert.ToInt32(Math.Pow(10, szjegy));
  72.       int lelemszam = tombhatar2 - tombhatar1;
  73.       if(kul == true)
  74.       {
  75.         if (lelemszam < (sorsz * oszlopsz))
  76.         {
  77.           Console.WriteLine("A tömböt nem lehet feltölteni, mert több elemet tartalmazhat, mint ahány különböző elem a megadott határokon belül generálható.");
  78.         }
  79.         else
  80.         {
  81.           bool talal;
  82.           int i, j, generalt=0;
  83.           tomb[0, 0] = vel.Next(tombhatar1, tombhatar2);
  84.           for (j = 0; j < sorsz; j++)
  85.           {
  86.             if (j == 0)
  87.             {
  88.               i = 1;
  89.             }
  90.             else
  91.             {
  92.               i = 0;
  93.             }
  94.             for (; i < oszlopsz; i++)
  95.             {
  96.               do
  97.               {
  98.                 talal = false;
  99.                 generalt = vel.Next(tombhatar1, tombhatar2);
  100.                 for (int l = 0; l < sorsz; l++)
  101.                 {
  102.                   for (int k = 0; k < oszlopsz; k++)
  103.                   {
  104.                     if (tomb[l, k] == generalt)
  105.                     {
  106.                       talal = true;
  107.                     }
  108.                   }
  109.                 }
  110.               } while (talal);
  111.               tomb[j, i] = generalt;
  112.             }
  113.           }
  114.         }
  115.       }
  116.       else
  117.       {
  118.         for (int j = 0; j < sorsz; j++)
  119.         {
  120.           for (int i = 0; i < oszlopsz; i++)
  121.           {
  122.             tomb[j, i] = vel.Next(tombhatar1, tombhatar2);
  123.           }
  124.         }      
  125.       }
  126.     }
  127.     static void Main(string[] args)
  128.     {
  129.       Console.WriteLine("A mátrix kiírása");
  130.       Console.Write("Sorok száma: ");
  131.       uint sorsz = Convert.ToUInt16(Console.ReadLine());
  132.       Console.Write("Oszlopok száma: ");
  133.       uint oszlopsz = Convert.ToUInt16(Console.ReadLine());
  134.       Console.Write("Számjegyek száma: ");
  135.       uint szjegy = Convert.ToUInt16(Console.ReadLine());
  136.       Console.Write("Különböző elemek legyenek? (i/n) ");
  137.       string c = Console.ReadLine();
  138.       bool kul = false;
  139.       if(Convert.ToChar(c) == 'i')
  140.       {
  141.         kul = true;
  142.       }
  143.       else if(Convert.ToChar(c) == 'n')
  144.       {
  145.         kul = false;
  146.       }
  147.       Random vel = new Random();
  148.       int[,] tomb = new int[sorsz, oszlopsz];
  149.       tombfeltolt(tomb, sorsz, oszlopsz, vel, szjegy, kul);
  150.       kiiras(tomb, sorsz, oszlopsz);
  151.       Console.Write("Sorcseréhez nyomjon s betűt, oszlopcseréhez o betűt! (s/o) ");
  152.       bool sorcsere = false;
  153.       bool oszlopcsere = false;
  154.       string a = Console.ReadLine();
  155.       if (Convert.ToChar(a) == 's')
  156.       {
  157.         sorcsere = true;
  158.       }
  159.       else if (Convert.ToChar(a) == 'o')
  160.       {
  161.         oszlopcsere = true;
  162.       }
  163.       if(sorcsere || oszlopcsere)
  164.       {
  165.         csere(tomb, sorsz, oszlopsz, sorcsere, oszlopcsere);  
  166.       }
  167.       kiiras(tomb, sorsz, oszlopsz);
  168.       if (sorsz != oszlopsz)
  169.       {
  170.         Console.WriteLine("A mátrix nem négyzetes, ezért nem lehet az elemeket a főátlóra tükrözni.");
  171.       }
  172.       else
  173.       {
  174.         Console.WriteLine("A mátrix transzponáltja:");
  175.         bool foatlo = false;
  176.         bool mellekatlo = false;
  177.         Console.Write("Főátlóra tükrözés - f, mellékátlóra tükrözés - m ");
  178.         string b = Console.ReadLine();
  179.         if (Convert.ToChar(b) == 'f')
  180.         {
  181.           foatlo = true;
  182.         }
  183.         else if (Convert.ToChar(b) == 'm')
  184.         {
  185.           mellekatlo = true;
  186.         }
  187.         if (foatlo || mellekatlo)
  188.         {
  189.           transzponalt(tomb, sorsz, oszlopsz, foatlo, mellekatlo);
  190.         }
  191.         kiiras(tomb, sorsz, oszlopsz);
  192.       }
  193.       Console.ReadKey();
  194.       }
  195.     }
  196. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement