Pereiti prie turinio

C# eilutės, kurios turim numerį perkėlimas į priekį


Rekomenduojami pranešimai

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);
               }
           }
       }
   }
}

Redagavo DdavidDLT
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

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