Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Задания для самостоятельного выполнения
1. Открыть файл, имя которого задается с клавиатуры. Посчитать и вывести на экран количество байт в этом файле. Первую половину прочитанного файла записать в другой файл. Вывести полученный файл на экран. 2. Открыть файл, имя которого задается с клавиатуры. Записать в другой файл первые n байт этого файла, где n задается с клавиатуры (проверьте, что n находится в допустимых пределах). Вывести полученный файл на экран. 3. Открыть файл, имя которого задается с клавиатуры. Посчитать и вывести на экран количество слов в этом файле. Первую половину слов записать в другой файл. Вывести полученный файл на экран. 4. Открыть файл, имя которого задается с клавиатуры. Записать в другой файл первые n слов этого файла, где n задается с клавиатуры (проверьте, что n находится в допустимых пределах). Вывести полученный файл на экран. 5. Открыть файл, имя которого задается с клавиатуры. Посчитать и вывести на экран количество строк в этом файле. Первую половину строк записать в другой файл. Вывести полученный файл на экран. 6. Открыть файл, имя которого задается с клавиатуры. Записать в другой файл первые n строк этого файла, где n задается с клавиатуры (проверьте, что n находится в допустимых пределах). Вывести полученный файл на экран. 7. Открыть файл, имя которого задается с клавиатуры. Создать новый файл, в который записать в обратном порядке строки исходного файла (инвертировать файл построчно). 8. Открыть файл, имя которого задается с клавиатуры. Создать строку, которая будет содержать набор символов содержащихся в файле (каждый символ должен входить в строку по одному разу). Записать полученную строку в другой файл. 9. Открыть файл, имя которого задается с клавиатуры. Переписать в другой файл только те строки, которые содержат заданную последовательность символов. 10. Открыть файл, имя которого задается с клавиатуры. Переписать в другой файл только те строки, которые содержат заданное слово. 11. Открыть файл, имя которого задается с клавиатуры. Переписать в новый файл только те слова, которые состоят из цифр. 12. Открыть файл, имя которого задается с клавиатуры. Найти сумму чисел, содержащихся в файле. 13. Открыть файл, имя которого задается с клавиатуры. Найти в этом файле максимальную по длине строку и переписать строки в новый файл, выровняв длину каждой строки по максимальной (добавив в конец каждой строки пробелы). 14. Открыть файл, имя которого задается с клавиатуры. Переписать в новый файл только те строки, которые являются комментариями типа //… 15. Открыть файл, имя которого задается с клавиатуры. Переписать в новый файл только комментарии типа /*…*/ 16. Открыть файл, имя которого задается с клавиатуры. Создать новый файл, удалив заданную последовательность символов из файла. 17. Открыть файл, имя которого задается с клавиатуры. Создать новый файл, заменив одну заданную последовательность символов на другую. 18. Открыть файл, имя которого задается с клавиатуры. Создать новый файл, который содержит набор слов, содержащихся в исходном файле (каждое слово должно входить в результирующий файл только 1 раз). 19. Открыть файл, имя которого задается с клавиатуры. Переписать в новый файл только те слова, которые записаны латинскими буквами. 20. Открыть файл, имя которого задается с клавиатуры. Создать новый файл, удалив лишние пробелы между словами, но не изменяя деление на строки. 21. Открыть файл, имя которого задается с клавиатуры (файл должен содержать текст, включающий точки). Создать новый файл, удалив пробелы перед точками (если они есть). 22. Открыть файл, имя которого задается с клавиатуры. Создать новый файл, в который переписать только те слова, которые записаны большими буквами (русскими и латинскими). 23. Открыть файл, имя которого задается с клавиатуры (файл должен содержать текст, включающий точки). Создать новый файл, отредактировав текст исходного файла: если первое слово, идущее за точкой начинается с маленькой буквы, заменить эту букву на большую. 24. Написать программу, которая считывает из файла данные о продаваемых компьютерах, описываемые следующей структурой: 25. Написать программу, которая считывает из файла данные о жителях города, описываемые структурой: Фамилия имя отчество, дата рождения, улица, дом, квартира. 26. Написать программу, которая считывает данные об автомобилях, описываемых следующей структурой: марка, год выпуска, страна-производитель, цена, фамилия имя отчество владельца. 27. Написать программу, которая считывает из файла данные о студентах, описываемые следующей структурой: Фамилия имя отчество, номер группы, количество экзаменов в текущем семестре, количество несданных экзаменов. 28. Написать программу, которая считывает данные о продаваемых товарах, описываемые следующей структурой: Название, цена, страна производитель, количество поступившего товара, количество проданного товара. 29. Написать программу, которая считывает данные из файла, содержащего данные о квартирах, описываемые следующей структурой: улица, дом, номер квартиры, общая площадь, количество жильцов. 30. Написать программу, которая считывает данные из файла о фильмах, имеющихся в прокате, описываемые структурой: Название, жанр, страна-производитель, год выпуска, Фамилия и имя актера, снявшегося в главной роли. Лаб о раторная работа № 6 Тема: “Программы, использующие массивы ”.
1. Программа заполняет массив A(50) случайными целыми числами из диапазона [-20, 30] и упорядочивает его по возрастанию. Исходный и упорядоченный массивы выводятся на экран дисплея. Программа иллюстрирует работу с массивом фиксированного размера, заполненным случайными числами.
#include<iostream> #include<iomanip> #include<math.h> #include<conio.h> #include<String.h> #include<ctype.h> #include<stdlib.h> #include<windows.h> using namespace std; // Используем стандартное пространство имён
/* Функция, выполняющая перестановку значений двух переменных (обратите внимание на то, что аргументы должны быть объявлены как ссылки): */ void swap(int& a, int& b) { int c; c=a; a=b; b=c; } // Подпрограмма сортировки методом «пузырька» void sort(int* a, int n) { for (int i = 1; i < n; i++) // отсчитываем проходы по массиву for (int j = 0; j < n-i; j++) // проходим по массиву { if (a[j] > a[j+1]) // сравниваем два соседних элемента swap(a[j], a[j+1]); // переставляем их } }
int main() { if(SetConsoleCP(1251)==0) { cerr<<"Fialed to set codepage!"<<endl; } if(SetConsoleOutputCP(1251)==0) { cerr<<"Failed to set OUTPUT page!"<<endl; }
int n=50; int *a=new int[n]; // объявляем массив из 50 элементов cout<<"Исходный массив:\n"; // заполняем массив случайными числами и выводим на экран int RANGE_MIN = -20; // Минимальный элемент int RANGE_MAX = 51; // Максимальный элемент //Пример взят из справки ms-help: //MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_vccrt/html/75d9df25-7aaf-4a88-b940-2775559634e8.htm for (int i = 0; i < n; i++) { a[i] = (int)(((double) rand() / (double) RAND_MAX) * RANGE_MAX + RANGE_MIN); // случайные числа из диапазона [-20, 30] cout << setw(4) << a[i]; /* выводим на экран элемент массива (ширина поля вывода – 4 */ } cout <<endl; // Вызываем функцию сортировки и передаем ей указатель на массив и размер массива: sort(a, n); printf("\nМассив, отсортированный по возрастанию:\r\n"); // для вывода массива на экран требуется цикл: for (int i = 0; i < n; i++) { printf("%4d", a[i]); // выводим элемент массива на экран } printf("\r\n"); // перевод курсора в начало следующей строки _getch(); return 0; } 2. Программа, которая по заданным корням многочлена степени n восстанавливает все коэффициенты многочлена. Программа иллюстрирует работу с массивами изменяющегося размера.
Для вычисления коэффициентов можно воспользоваться соотношением:
В результате при вводе первого корня мы должны получить коэффициенты 1 и
При вводе второго и последующих корней коэффициенты вычисляются следующим образом: a0 a1 a2 … an-1 + -a0xn -a1xn … -an-2xn – an-1xn
Например: при вводе двух корней 2 и –3 получаем: (x-2)(x+3) = x2-2x+3x-6 =1x2 + 1x –6
1 -2 + -1(-3) –(-2)(-3) --------------------------- 1 1 -6
Проходить по массиву коэффициентов нужно обязательно с конца, поскольку коэффициенты изменяются в процессе вычислений, а при вычислении нового значения коэффициента используется коэффициент, стоящий слева от него.
#include<iostream> #include<iomanip> #include<math.h> #include<conio.h> #include<String.h> #include<ctype.h> #include<stdlib.h> #include<windows.h> using namespace std; int main() { if(SetConsoleCP(1251)==0) { cerr<<"Fialed to set codepage!"<<endl; } if(SetConsoleOutputCP(1251)==0) { cerr<<"Failed to set OUTPUT page!"<<endl; } do { int n; // количество корней do { cout << "Задайте количество корней > 0 --> "; cin >> n; } while (n < 1); double* x = new double [n]; //корни double* a = new double [n+1]; //коэффициенты многочлена a[0] = 1; // первый коэффициент равен единице cout << "Задайте корни:\n"; for (int i = 0; i < n; i++) { cout<< i+1 <<"-й корень --> "; cin >> x[i]; a[i+1] = -a[i] * x[i]; //Добавили последний коэффициент в массив // вычисляем остальные коэффициенты: for (int j = i; j >= 1; j--) a[j] += -a[j-1] * x[i]; } // вывод: cout << "Заданы корни: "; for (int i = 0; i < n; i++) cout << x[i]<<" "; cout << endl;
cout << "Коэффициенты многочлена: "; for (int i=0; i<=n; i++) cout << a[i]<<" "; cout << endl; delete []x; delete []a; cout<<"Для выхода нажмите Esc\n"; }while(_getch()!=27); return 0; } 3. Программа считывает линейный массив из файла, выводит его на экран, и подсчитывает количество элементов массива, находит min и max элементы и их индексы. При работе с линейным массивом, записанным в файл, необязательно переписывать его в оперативную память (однако следует помнить, что обращение процессора к оперативной памяти происходит быстрее)
#include<iostream> #include<locale> //!!! Отвечает за работу с локализацией ОС #include<iomanip> #include<math.h> #include<conio.h> #include<String.h> #include<ctype.h> #include<stdlib.h> #include<windows.h> #include<fstream> // Этот файл обеспечивает работу с файлами using namespace std; /* если с файлом работают как главная программа, так и функции, лучше объявить его как глобальную переменную */ ifstream file("test.txt"); // Объявляем функцию, которая будет выдавать индексы: void ShowIndex(int, float); int main() { if(SetConsoleCP(1251)==0) { cerr<<"Fialed to set codepage!"<<endl; } if(SetConsoleOutputCP(1251)==0) { cerr<<"Failed to set OUTPUT page!"<<endl; } if(!file) { cerr<<"Файл test.txt не существует\n"; return 0; } float n, min, max; // число, считываемое из файла, минимум и максимум int k=0; // количество чисел в файле
while (1) // как бы бесконечный цикл { file>>n; if (file.eof()) break; // если достигнут конец файла, выходим из цикла if (!k) // если считано первое число (k=0) { min = n; max = n; } else // если число – не первое { if (n<min) min=n; // если встретилось число меньше, заменяем значение min if (n>max) max=n; // если встретилось число больше, заменяем значение max } cout<<n<<' '; k++; /* выводим считанное число на экран и увеличиваем счетчик прочитанных чисел */ } cout << endl; // завершаем вывод переводом курсора cout<<"Количество чисел в файле: " << k << endl; cout<<"Минимальный элемент: " << min<<endl; cout<<"Номер(а) минимального элемента: "; ShowIndex(k, min); // вызываем функцию и передаем ей количество элементов и значение min cout<<"Максимальный элемент: " << max <<endl; cout<<"Номер(а) максимального элемента: "; ShowIndex(k, max); // вызываем функцию и передаем ей количество элементов и значение max _getch(); return 0; } /* Функция, которая считывает k чисел из файла, находит номера элементов, значение которых совпадает с m, и выводит на экран найденные индексы */ void ShowIndex(int k,float m) { file.clear(); file.seekg(0L,ios::beg); // переходим в начало файла float n; // число, считываемое из файла for (int i=0; i<k; i++) // отсчитываем k чисел { file>>n; if (n == m) cout << i << ' '; // если число равно m, выводим номер этого числа на экран } cout<<endl; } 4. Программа заполняет массив A[5][5] случайными целыми числами из диапазона [-3, 3] и находит произведение элементов, стоящих на побочной диагонали. Номера элементов, стоящих на главной диагонали, совпадают; номера элементов, стоящих на побочной диагонали удовлетворяют условию: i + j = n+1, где n –размер матрицы. #include<iostream> #include<locale> //!!! Отвечает за работу с локализацией ОС #include<iomanip> #include<math.h> #include<conio.h> #include<String.h> #include<ctype.h> #include<stdlib.h> #include<windows.h> using namespace std;
int main() { if(SetConsoleCP(1251)==0) { cerr<<"Fialed to set codepage!"<<endl; } if(SetConsoleOutputCP(1251)==0) { cerr<<"Failed to set OUTPUT page!"<<endl; } //Динамически создаём 2- мерный массив int n=5, **a= new int*[n]; cout<<"Исходный массив:\n"; int RANGE_MIN = -3; // Минимальный элемент int RANGE_MAX = 7; // Максимальный элемент // для прохода по всем ячейкам матрицы обычно используют двойной цикл for (int i = 0; i < 5; i++) // проходим по строкам матрицы { a[i]=new int [n]; // в каждой строке проходим по столбцам: for (int j = 0; j < 5; j++) // счетчики должны быть разными! { a[i][j]=(int)(((double) rand() / (double) RAND_MAX) * RANGE_MAX + RANGE_MIN); cout<< setw(5)<<a[i][j]; } cout<<endl; /* после вывода строки матрицы переводим курсор в начало следующей строки на экране */ } cout <<endl; // вычисляем произведение: long p = 1; for (int i = 0; i < 5; i++) p *= a[i][5-i-1]; // номер столбца вычисляем через номер строки // обратите внимание на то, что для прохода по диагонали требуется один цикл cout << "\nПроизведение элементов, стоящих на побочной диагонали = " << p << endl; _getch(); return 0; } Date: 2016-08-30; view: 304; Нарушение авторских прав |