Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Задания для самостоятельного выполнения. 1. Открыть файл, имя которого задается с клавиатуры




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 и
– x, например: при x1 = 2 мы получаем многочлен (два коэффициента).

 

При вводе второго и последующих корней коэффициенты вычисляются следую­щим образом:

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;

}





Поделиться с друзьями:


Дата добавления: 2016-11-24; Мы поможем в написании ваших работ!; просмотров: 1020 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Победа - это еще не все, все - это постоянное желание побеждать. © Винс Ломбарди
==> читать все изречения...

2268 - | 2092 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.