Информатика. Для второй работы по информатике. Процедуры и функции
Скачать 35.29 Kb.
|
1 2 #include #include using namespace std; typedef vector typedef vecf::iterator vecf_iter; typedef vecf::const_iterator vecf_iter_c; // ---------------------------------------------------------------------------- // Из положительныйх чисел двух вещественных массивов различной // размерности сформировать общий массив. Найти наибольший элемент // в сформированном массиве. Если таких элементов несколько, // удалить их из массива. Создать функции для определения максимума // и удаления элементов из массива. // ---------------------------------------------------------------------------- double find_max( const vecf& merged ) { // Находим наибольшее значение в сформированом массиве. double max = -1.0; for ( vecf_iter_c i = merged.begin(); i != merged.end(); i++ ) if ( *i > max ) max = *i; return max; } // ---------------------------------------------------------------------------- void delete_duplicates( vecf& merged, const double& max ) { // Подсчитаем количество наибольших значений. int max_count = 0; for ( vecf_iter i = merged.begin(); i != merged.end(); i++ ) { if ( *i == max ) { max_count++; } } // Если максимальных элементов несколько - удалить их из массива. if ( max_count > 1 ) { vecf_iter i = merged.begin(); while ( i != merged.end() ) { if ( *i == max ) { // двигаемся к следующему после стертого. i = merged.erase(i); } else { // двигаемся к следующему по порядку. i++; } // if ( *i == max ) } // while ( i != merged.end() ) }// if ( max_count > 1 ) } // ---------------------------------------------------------------------------- int main( int argc, char* argv ) { // Инициализируем первый массив. vecf first; first.push_back(1.0f); first.push_back(2.1f); // ... // first.push_back(10.9f); // Инициализируем второй массив. vecf second; second.push_back(3.3f); second.push_back(6.1f); // ... // second.push_back(10.9f); // Формируем общий массив. vecf merged; merged.insert( merged.end(), first.begin(), first.end() ); merged.insert( merged.end(), second.begin(), second.end() ); double max = find_max( merged ); delete_duplicates( merged, max ); // вывод всего, что насчитали. cout << "Max element: " << max << "\n"; for ( vecf_iter i = merged.begin(); i != merged.end(); i++ ) cout << *i << "\n"; cout.flush(); getchar(); } // ---------------------------------------------------------------------------- На основе данных входного файла составить список вкладчиков банка, включив следующие данные: ФИО, № счета, сумма, год открытия счета. Вывести в новый файл информацию о тех вкладчиках, которые открыли вклад в текущем году, отсортировав их по сумме вклада. После запуска выдает 3 ошибки 1>D:\Проекты Visual Studio C#\лаба 14\ConsoleApplication1\Vklad.cs(14,11,14,16): warning CS0660: 'ConsoleApplication1.Vklad' defines operator == or operator != but does not override Object.Equals(object o) 1>D:\Проекты Visual Studio C#\лаба 14\ConsoleApplication1\Vklad.cs(14,11,14,16): warning CS0661: 'ConsoleApplication1.Vklad' defines operator == or operator != but does not override Object.GetHashCode() 1>D:\Проекты Visual Studio C#\лаба 14\ConsoleApplication1\Vklad.cs(14,11,14,16): error CS0535: 'ConsoleApplication1.Vklad' does not implement interface member 'System.ICloneable.Clone()' Листинг программы Cкопировать using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { StreamReader file = new StreamReader("input.txt"); Console.Write("Введите текущий год:"); int now_year = int.Parse(Console.ReadLine()); string s; int n = 0; while ((s = file.ReadLine()) != null) n++; file.Close(); Vklad[] vk = new Vklad[n]; StreamReader file2 = new StreamReader("input.txt"); int i = 0; while((s=file2.ReadLine())!=null) { vk[i] = new Vklad(s); i++; } file2.Close(); Array.Sort(vk); StreamWriter fileOut = new StreamWriter("output.txt"); for (i = 0; i < n; i++) if (vk[i] == now_year) fileOut.WriteLine(vk[i].ToString()); fileOut.Close(); Console.Read(); } } } Листинг программы Cкопировать using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Vklad:IComparable { protected string name; protected string surname; protected string twoname; protected int number_vklad; protected int sum; protected int year; public Vklad(string s) { string[] mas = s.Split(' '); surname = mas[0]; name = mas[1]; twoname = mas[2]; number_vklad = int.Parse(mas[3]); sum = int.Parse(mas[4]); year = int.Parse(mas[5]); } public int CompareTo(object obj) { Vklad b = (Vklad)obj; if (this.sum == b.sum) return 0; else if (this.sum > b.sum) return 1; else return -1; } public static bool operator <(Vklad a, int b) { return ((a.sum < b) ? true : false); } public static bool operator >(Vklad a, int b) { return ((a.sum > b) ? true : false); } public static bool operator ==(Vklad a, int b) { return ((a.sum == b) ? true : false); } public static bool operator !=(Vklad a, int b) { return ((a.sum != b) ? true : false); } public override string ToString() { return string.Format("{0} {1} {2} {3} {4} {5}", surname, name,twoname,number_vklad, sum,year); } } } 3 задание #include #include #include #include using namespace std; int main() { list for (auto x : box) cout << x << ' '; puts(""); auto [imin, imax] = minmax_element(box.begin(), box.end()); ++imax; box.insert(imax, *imin); for (auto x : box) cout << x << ' '; puts(""); system("pause > nul"); } 1 2 |