Pereiti prie turinio

DdavidDLT

Nariai
  • Pranešimai

    5
  • Užsiregistravo

  • Lankėsi

  • Atsiliepimai

    0%

DdavidDLT Pranešimai

  1. Sveiki, tai mano tikslas yra perkelti eilutę, kurioje yra ilgiausias žodis ir turi 3 skirtingas balses. Tačiau, kažkodėl kai darau spausdinimą, man ima tą n eilutę, kurią nurodau Main. Nors 98 eilutėj aš priskiriu n = enr. Ir tada darau ref.

     

    using System;
    using System.Text;
    using System.IO;
    
    // Užduotis. Faile Tekstas.txt užrašytas tekstas. Gretimi žodžiai eilutėje 
    // skiriami vienu arba keliais skyrikliais. Skyrikliai yra žinomi. Rasti ir 
    // spausdinti ekrane ilgiausią teksto žodį iš tų, kuriuose yra 3 skirtingos
    // balsės (jei tokie žodžiai yra keli, rasti pirmą). To žodžio eilutę perkelti į
    // teksto pradžią. Redaguotą tekstą užrašyti į failą RedTekstas.txt. Tekstą 
    // analizuokite skaitydami po vieną eilutę.
    
    namespace KD2_pavyzdine
    {
       class Program
       {
           const string CFd = "Tekstas.txt";
           const string CFr = "RedTekstas.txt";
    
           // Atlieka visus užduoties veiksmus
           static void Main(string[] args)
           {
               string sk = " ,.:;()?!\t";
    
               int me = 0;
               string zod = "";
    
               RastiZTekste(CFd, sk, out zod, ref me);
               PerkeltiEilute(CFd, CFr, me);
           }
    
           // Grąžina eilutės (žodžio) e skirtingų balsių skaičių.
           static int SkirtBalsiuSkaicius(string e)
           {
               char[] balses = { 'a', 'e', 'i', 'y', 'o', 'u',
                                 'A', 'E', 'I', 'Y', 'O', 'U'};
    
               int kiek = 0;
    
               for (int i = 0; i < balses.Length; i++)
               {
                   if (e.IndexOf(balses[i]) >= 0)
                   {
                       kiek++;
                   }
               }
    
               return kiek;
           }
    
           // Eilutėje e randa ilgiausią žodį iš tų, kuriuose yra 3 skirtingos
           // balses.
           // Neradus grąžina tuščia eilutę.
           // sk - skyrikliai.
           static string RastiZodEil(string e, string sk)
           {
               char[] skyr = sk.ToCharArray();
    
               string ilgiausias = "";
    
               string[] parts = e.Split(skyr,
                   StringSplitOptions.RemoveEmptyEntries);
    
               foreach (string zodis in parts)
               {
                   if (zodis.Length > ilgiausias.Length
                       && SkirtBalsiuSkaicius(zodis) == 3)
                   {
                       ilgiausias = zodis;
                   }
               }
    
               return ilgiausias;
           }
    
           // Faile fv randa ilgiausią žodį zod iš tų, kuriuose yra 3 skirtingos 
           // balses, ir jo eilutės numerį me.
           // sk - skyrikliai
           static void RastiZTekste(string fv, string sk, out string zod,
               ref int me)
           {
               zod = "";
    
               using (StreamReader reader = new StreamReader(fv,
                   Encoding.GetEncoding(1257)))
               {
                   int n = 0;
                   string line;
    
                   int enr;
                   int ilg = 0;
                   int ilge = 0;
    
                   while (((line = reader.ReadLine()) != null))
                   {
    
                       n++;
                       if (line.Length > 0)
                       {
                           RastiZodEil(line, sk);
                           if (ilge > ilg)
                           {
                               enr = n;
                               me = n;
                               Console.WriteLine(me);
                               ilg = ilge;
                           }
                       }
                   }
               }
           }
    
           // Eilutę, kurios numeris n, perkelia į teksto pradžią; fvd - pradinio,
           // fvr - redaguoto failų vardai.
           static void PerkeltiEilute(string fvd, string fvr, int n)
           {
               using (var fr = File.CreateText(fvr))
               {
                   using (StreamReader reader = new StreamReader(fvd,
                       Encoding.GetEncoding(1257)))
                   {
    
                       int i = 0;
                       string line;
                       string line1 = "";
                       string line2 = "";
    
                       while ((line = reader.ReadLine()) != null)
                       {
                           if (i == 0)
                           {
    
                           }
    
                           else
                           {
                               fr.WriteLine(line1);
                           }
    
                           if (i == n)
                           {
                               line2 = line;
                           }
    
                           line1 = line;
                           i++;
                       }
    
                       fr.WriteLine(line2);
                   }
               }
           }
       }
    }
    

  2. Sveiki, darau pavyzdinę užduotį, kad pasiruošti kontroliniui, bet susiduriu su daug sunkumų. Viena iš didžiausių spragų, kaip rasti žodyje skirtingas balses. Ir tada pagal tai rasti ilgiausią žodį faile turintį 3 skirtingas balses. Dabartinis kodas :

     

    using System;
    using System.Text;
    using System.IO;
    
    // Užduotis. Faile Tekstas.txt užrašytas tekstas. Gretimi žodžiai eilutėje 
    // skiriami vienu arba keliais skyrikliais. Skyrikliai yra žinomi. Rasti ir 
    // spausdinti ekrane ilgiausią teksto žodį iš tų, kuriuose yra 3 skirtingos
    // balsės (jei tokie žodžiai yra keli, rasti pirmą). To žodžio eilutę perkelti į
    // teksto pradžią. Redaguotą tekstą užrašyti į failą RedTekstas.txt. Tekstą 
    // analizuokite skaitydami po vieną eilutę.
    
    namespace KD2_pavyzdine
    {
       class Program
       {
           const string CFd = "Tekstas.txt";
           const string CFr = "RedTekstas.txt";
    
           // Atlieka visus užduoties veiksmus
           static void Main(string[] args)
           {
               string sk = " ,.:;()!?\t";
           }
    
           // Grąžina eilutės (žodžio) e skirtingų balsių skaičių.
           static int SkirtBalsiuSkaicius(string e)
           {
               char[] balses = { 'a', 'e', 'i', 'y', 'o', 'u',
                                 'A', 'E', 'I', 'Y', 'O', 'U'};
    
               return 0;
           }
    
           // Eilutėje e randa ilgiausią žodį iš tų, kuriuose yra 3 skirtingos
           // balses.
           // Neradus grąžina tuščia eilutę.
           // sk - skyrikliai.
           static string RastiZodEil(string e, string sk)
           {
               //sk = sk.ToCharArray();
               string[] parts = e.Split(sk.ToCharArray(), 
                   StringSplitOptions.RemoveEmptyEntries);
    
               string ilgiausias = "";
    
               foreach (string zodis in parts)
               {
                   if (zodis.Length > ilgiausias.Length 
                       && SkirtBalsiuSkaicius(zodis) == 3)
                   {
                       ilgiausias = zodis;
                   }
               }
    
               return ilgiausias;
           }
    
           // Faile fv randa ilgiausią žodį zod iš tų, kuriuose yra 3 skirtingos 
           // balses, ir jo eilutės numerį me.
           // sk - skyrikliai
           static void RastiZTekste(string fv, string sk, out string zod,
               ref int me)
           {
               zod = "";
    
               using (StreamReader reader = new StreamReader(fv,
                   Encoding.GetEncoding(1257)))
               {
                   int n = 0;
                   string line;
    
                   int enr;
                   int ilg = 0;
                   int ilge = 0;
    
                   while (((line = reader.ReadLine()) != null))
                   {
    
                       n++;
                       if (line.Length > 0)
                       {
                           RastiZodEil(line, sk);
                           if (ilge > ilg)
                           {
                               enr = n;
                               ilg = ilge;
                           }
                       }
                   }
               }
           }
    
           // Eilutę, kurios numeris n, perkelia į teksto pradžią; fvd - pradinio,
           // fvr - redaguoto failų vardai.
           static void PerkeltiEilute(string fvd, string fvr, int n)
           {
               using (var fr = File.CreateText(fvr))
               {
    
               }
           }
       }
    }

     

    Vietos, kuriose susiduriu su sunkumais tai yra : (nes nežinau kaip ieškoti skirtingas balses, gal foreach loop ir eiti per žodį? Bet juk žodis tai string, o ne char, dėl to esu pasimetęs).

     

            
           // Grąžina eilutės (žodžio) e skirtingų balsių skaičių.
           static int SkirtBalsiuSkaicius(string e)
           {
               char[] balses = { 'a', 'e', 'i', 'y', 'o', 'u',
                                 'A', 'E', 'I', 'Y', 'O', 'U'};
    
               return 0;
           }

     

    Ir (nes prisilyginu abu ilgius 0, dėl to manau, kad if statement, kur ieško ilgiausio net neveikia.) :

     

      // Faile fv randa ilgiausią žodį zod iš tų, kuriuose yra 3 skirtingos 
           // balses, ir jo eilutės numerį me.
           // sk - skyrikliai
           static void RastiZTekste(string fv, string sk, out string zod,
               ref int me)
           {
               zod = "";
    
               using (StreamReader reader = new StreamReader(fv,
                   Encoding.GetEncoding(1257)))
               {
                   int n = 0;
                   string line;
    
                   int enr;
                   int ilg = 0;
                   int ilge = 0;
    
                   while (((line = reader.ReadLine()) != null))
                   {
    
                       n++;
                       if (line.Length > 0)
                       {
                           RastiZodEil(line, sk);
                           if (ilge > ilg)
                           {
                               enr = n;
                               ilg = ilge;
                           }
                       }
                   }
               }
           }

     

    Neprašau pilno kodo, o prašau tik užuomenų, pagalbos, vietų, kur yra klaidų pasakymi.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...