Как распечатать конкретное значение массива в файле .txt?
Итак, у меня есть задача, в которой есть 2 файла .txt для меня. Я должен найти самое большое значение в каждом из этих txt-файлов, а затем сравнить эти значения и распечатать самое большое из них(если самые большие значения одинаковы в обоих текстовых файлах, он должен распечатать эти значения). Вот текстовые значения(название и части кода написаны на литовском языке.):
Примечание.Например значения находятся в конце каждой строки(
ORION; 2; 1935; 365,1;) значение составляет 365,1
Так что это ... A.txt"
Lėk su vėjeliu 5 ORION; 2; 1935; 365,1; POLARIS; 1; 1988; 87,09; INDUSTRIERAD; 10; 1995; 58,10; Bauer; 25; 2008; 1040,42; HERREN; 15; 2012; 1040,42;
А вот и "B.txt"
Neskubėk ir būsi pirmas 6 VOLTA; 1; 1955; 290,02; POLARIS; 2; 1990; 100,13; BANANA; 3; 1995; 145,06; INDUSTRIERAD; 10; 2010; 260,94; ORION; 15; 2012; 1040,42; POLARIS; 20; 2012; 945,07;
А вот мой код:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace Sav_3._3 { class Dviratis { private string pav; private int kiek; private int metai; private double kaina; public Dviratis(string pav, int kiek, int metai, double kaina) { this.pav = pav; this.kiek = kiek; this.metai = metai; this.kaina = kaina; } public string get_pav() { return pav; } public int get_kiek() { return kiek; } public int get_metai() { return metai; } public double get_kaina() { return kaina; } } class Calc { const int cn = 100; const string CFd1 = "...\\...\\A.txt"; const string CFd2 = "...\\...\\B.txt"; const string CFd3 = "...\\...\\asd.txt"; static void Main(string[] args) { if (File.Exists(CFd3)) File.Delete(CFd3); Dviratis[] D1 = new Dviratis[cn]; int n1; string pav1; Dviratis[] D2 = new Dviratis[cn]; int n2; string pav2; Skaityti(CFd1, D1, out n1, out pav1); Skaityti(CFd2, D2, out n2, out pav2); Spausdinti_duomenis(CFd3, D1, n1, pav1); Spausdinti_duomenis(CFd3, D2, n2, pav2); Spausdinti_rez(CFd3,D1,D2,n1,n2,pav1,pav2); } static void Skaityti(string Fd, Dviratis[] D, out int n, out string pav) { using (StreamReader reader = new StreamReader(Fd,Encoding.GetEncoding(1257))) { string eil; int kiek; int metai; double kaina; string line; line = reader.ReadLine(); string[] parts; pav = line; line = reader.ReadLine(); n = int.Parse(line); for (int i = 0; i < n; i++) { line = reader.ReadLine(); parts = line.Split(';'); eil = parts[0]; kiek = int.Parse(parts[1]); metai = int.Parse(parts[2]); kaina = double.Parse(parts[3]); D[i] = new Dviratis(eil, kiek, metai, kaina); } } } static void Spausdinti_duomenis(string fv, Dviratis[] D, int nkiek, string pav) { const string virsus = "|-----------------|------------|---------------|---------|\r\n" + "| Pavadinimas | Kiekis | Pagaminimo | Kaina | \r\n" + "| | | metai | (eurų) | \r\n" + "|-----------------|------------|---------------|---------|"; using (var fr = File.AppendText(fv)) { fr.WriteLine("Nuomos firma: {0}", pav); fr.WriteLine(virsus); Dviratis asd; for (int i = 0; i < nkiek; i++) { asd = D[i]; fr.WriteLine("| {0,-15} | {1,8} | {2,5:d} | {3,7:F2} |", asd.get_pav(), asd.get_kiek(), asd.get_metai(),asd.get_kaina()); } fr.WriteLine("----------------------------------------------------------"); } } static void Spausdinti_rez(string fv, Dviratis[] D1, Dviratis[] D2, int n1, int n2, string pav1, string pav2) { int brang1 = get_max(D1, n1); int brang2 = get_max(D2, n2); using (var fr = File.AppendText(fv)) { Dviratis tarp; for (int i = 0; i < get_maxCount(D1, n1, brang1); i++) { tarp = D1[get_maxElement(D1, n1, brang1, i)]; fr.WriteLine(" {0}, kainuoja {1,8:F2} eurų, nuomos punktas {2}", tarp.get_pav(), tarp.get_kaina(), pav1); } for (int i = 0; i < get_maxCount(D2, n2, brang2); i++) { tarp = D2[get_maxElement(D2, n2, brang2, i)]; fr.WriteLine(" {0}, kainuoja {1,8:F2} eurų, nuomos punktas {2}", tarp.get_pav(), tarp.get_kaina(), pav2); } int k = get_maxGlobal(D1, D2, n1, n2); if (k < n1) { tarp = D1[k]; } else { tarp = D2[k-n1]; } for (int i = 0; i < k; i++) { fr.WriteLine(" {0}, kainuoja {1,8:F2} eurų, nuomos punktas {2}", tarp.get_pav(), tarp.get_kaina(), (k < n1) ? pav1 : pav2); } } } static int get_maxGlobal(Dviratis[] D1, Dviratis[] D2, int n1, int n2) { int k = 0; for (int i = 1; i < n1 + n2; i++) { if ((i < n1) ? (D1[i].get_kaina() > ((k < n1) ? D1[k].get_kaina() : D2[k - n1].get_kaina())) : /**/ (D2[i - n1].get_kaina() > ((k < n1) ? D1[k].get_kaina() : D2[k - n1].get_kaina())) /**/) { k = i; } } return k; } static int get_max(Dviratis[] D, int n) { int k = 0; for (int i = 1; i < n; i++) if (D[i].get_kaina() > D[k].get_kaina()) k = i; return k; } static int get_maxCount(Dviratis[] D, int n, int k) { int c = 0; for (int i = 0; i < n; i++) if (D[i].get_kaina() == D[k].get_kaina()) c++; return c; } static int get_maxElement(Dviratis[] D, int n, int k, int c) { int which=0; int ret=0; for (int i = k; i < n; i++) { if (D[i].get_kaina() == D[k].get_kaina()) { if (which == c) { ret = i; break; } which +=1; } } return ret; } } }
Поэтому я нахожу самые большие значения, но проблема в том, что я не знаю, как распечатать остальные. Он берет только первое значение и выводит его на другие значения. ИДК, как бы это объяснить.
Каина = значение;
Что я уже пробовал:
Мне нужно