csaki

Programozási verseny, programozási feladat (class Util)

Mar 13th, 2013
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.76 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. /*
  7. FELADAT:
  8.  
  9. Készíts egy Util nevű osztályt. Írj egy metódust ebbe az osztályba, amely alkalmazás szinten bárhonnan elérhető az Util osztály példányosítása nélkül. A metódus feladata, hogy a paraméterül kapott karakterláncot, a szintén paraméterül kapott maximális méretűre vágja. Azt, hogy a metódus a karakterlánc melyik végéből vágjon, szintén paraméter határozza meg. Fontos, hogy a maximális méret byte-okat jelent - az adat tárolási szintjén - így nem elég csak a szokásos hosszlekérés által visszaadod karakterszámra hagyatkozni a megoldásnál. Tetszőleges programnyelvet választhatsz, de a JAVA megoldásnak jobban örülünk. :)
  10.  
  11. Metódus neve: truncField
  12. Param1: String fld, nagyobb mint a max méret
  13. Param2: int maxLen: visszaadandó karakterlánc hossza byte-okban
  14. Param3: bool fromEnd: ha true akkro a fld paraméter végéről, ellenkező esetben az elejéről kell vágni.
  15. Visszatérési érték típusa: string
  16. */
  17.  
  18. namespace progverseny_util
  19. {
  20.     public static class Util
  21.     {
  22.         public static string truncField(string fld, int maxLen, bool fromEnd)
  23.         {
  24.             if (maxLen < fld.Length)
  25.             {
  26.                 UTF8Encoding encoding = new UTF8Encoding();
  27.                 var bytes = encoding.GetBytes(fld);
  28.                 int bytescount = encoding.GetByteCount(fld);
  29.  
  30.                 if (fromEnd)
  31.                 {
  32.                     byte[] ujBytes = new byte[bytes.Length - (bytescount - maxLen)];
  33.                     Buffer.BlockCopy(bytes, 0, ujBytes, 0, ujBytes.Length);
  34.                     fld = encoding.GetString(ujBytes);
  35.                 }
  36.                 else
  37.                 {
  38.                     byte[] newArray = new byte[bytes.Length - (bytescount - maxLen)];
  39.                     Buffer.BlockCopy(bytes, (bytescount - maxLen), newArray, 0, newArray.Length);
  40.                     fld = encoding.GetString(newArray);
  41.                 }
  42.             }
  43.             else
  44.             {
  45.                 Console.WriteLine("Hibás maxlength!");
  46.                 return null;
  47.             }
  48.             return fld;
  49.         }
  50.     }
  51.     class Program
  52.     {
  53.         static void Main(string[] args)
  54.         {
  55.             // Működik! *boldog elsős*
  56.             Console.WriteLine("String:");
  57.             string s = Console.ReadLine();
  58.             Console.WriteLine("maxlen:");
  59.             int x = int.Parse(Console.ReadLine());
  60.             Console.WriteLine("fromEnd? 1 / 0");
  61.             int a = int.Parse(Console.ReadLine());
  62.             bool c = a == 1 ? true : false;
  63.  
  64.             Console.WriteLine(Util.truncField(s, x, c));
  65.             Console.ReadLine();
  66.         }
  67.     }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment