![](https://uzdarbis.lt/uploads/set_resources_11/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
![](https://uzdarbis.lt/uploads/set_resources_11/84c1e40ea0e759e3f1505eb1788ddf3c_default_photo.png)
DdavidDLT
-
Pranešimai
5 -
Užsiregistravo
-
Lankėsi
-
Atsiliepimai
0%
Turinio tipas
Forumas
Kalendorius
Parduotuvė
Akademija
Skelbimai
DdavidDLT Pranešimai
-
-
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.
-
-
-
C# eilutės, kurios turim numerį perkėlimas į priekį
Programuotojų kampas
Sukurta · Redagavo DdavidDLT
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.