Технология программирования
Язык программирования С++9.05.2013-11.05.2013 (задание для всех)
Домашнее задание:
1) Проверить программу по теме строки. Придумать и решить задачу со строками.
2) Проверить программу по теме файлы. Решить 2 задачи из части А и 2 задачи из части Б (Задачник Семакина п.4.4.4. Линейные массивы) с использованием ввода и вывода в файл.
3) Написать программу сортировки массива с использованием ввода массива из файла и вывода отсортированного массива в файл.
Тема "Строки"
#include <iostream> //стандартный потоковый ввод и вывод
#include <fstream> //файловый потоковый ввода и вывода
#include <string> //класс строк
#include <sstream> //строковый потоковый ввод и вывод
#include <locale.h>
using namespace std;
int main() {
setlocale(LC_ALL,"Russian");
string a;//описание строки а
cin >>a; //ввод слова до пробела
int i, l=a.size();//размер строки
cout<<"длина строки: "<<a<<"\n равна "<<l<<" или "<<a.length()<<endl;
//вывод всех символов строки
for (i=0;i<l;i++) cout<<a[i]<<endl;
//ввод и вывод всей строки вместе с пробелами до нажатия Enter
string line;
getline (cin, line);
cout << line << endl; //внимание! перевод строки не считывается.
char c;
// считываем только числа (нужна библиотека sstream)
string mystr; float price=0; int quantity=0;
cout << "Enter price: "; getline (cin,mystr);
stringstream(mystr) >> price;
cout << "Enter quantity: "; getline (cin,mystr);
stringstream(mystr) >> quantity;
cout << "Total price: " << price*quantity << endl;
//ввод и вывод времени и даты по формату
int mm, hh, ss, d, m, y;
cout<<“введите время по формату час:мин:сек -> ”;
cin >>hh>>c>>mm>>c>>ss;
cout<<hh<<'-'<<mm<<'-'<<ss<<endl;
cout<<“введите дату по формату день/месяц/год:”;
cin >>d>>c>>m>>c>>y;
cout<<d<<'-'<<m<<'-'<<y<<endl;
double aa=5.5123;
int bb=10;
string ss="74326.46238",dd="123";
//перевод из строки dd в число bb
stringstream(dd)>>bb;
cout<<'\n'<<bb;
//перевод из строки ss в число aa
istringstream ins;
ins.str(ss);
ins>>aa;
cout<<'\n'<<aa;
//перевод из числа bb в строку ss
bb=456;
ostringstream oss;
oss<<bb;
ss=oss.str();
cout<<endl<<ss;
//вставка подстроки с позиции 0
a.insert(0,"const");
cout<<a<<endl;
//конкатенация (слияние) двух строк
string b("moroz");
a="oy, "+b+", "+b+"!";
cout<<a<<endl;
//замена 2 символа на подстроку, начиная с 0 позиции
a.replace(0,2,"oh");
cout<<a<<endl;
//выделение подстроки из строки а, начиная с 4 символа длиной 5
cout<<a.substr(4,5)<<endl;
//удаление символа "o"
int n;
while((n=a.find("o"))!=-1){
a.erase(n,1);
cout<<n<<a<<endl;
}
//обмен строк
a.swap(b);
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
//вывод строк в файл
string lines;
ofstream myfile ("example.txt");
if (myfile.is_open()) {
myfile << "This is a line.\n";
myfile << "This is another line.\n";
myfile.close(); }
else
cout << "Unable to open file";
//ввод строк из файла
ifstream myfile ("example.txt");
if (myfile.is_open()) {
while ( myfile.good() ) {
getline (myfile,lines);
cout << lines << endl; }
myfile.close(); }
else
cout << "Unable to open file";
//посимвольный ввод и вывод до нажатия клавиши Enter (код 10)
while ( (c=cin.get()) != 10)
cout.put(c);
cout<<endl;
//посимвольный ввод и вывод из файла пока не обнаружится
//конец файла EOF
ifstream in("example.txt");
while ( (c=in.get()) != EOF)
cout.put(c);
cout<<endl;
return 0;
}
4.4.4 Работа с массивами (см. Задачник Семакина)
Линейные массивы
А
№ 1
Дан массив натуральных чисел. Найти сумму элементов, кратных данному K.
№ 2
В целочисленной последовательности есть нулевые элементы. Создать массив из номеров этих элементов.
№ 3
Дана последовательность целых чисел а1, а2, …, аn. Выяснить, какое число встречается раньше – положительное или отрицательное.
№ 4
Дана последовательность действительных чисел а1, а2, …, аn. Выяснить, будет ли она возрастающей.
№ 5
Дана последовательность натуральных чисел а1, а2, …, аn. Создать массив из четных чисел этой последовательности. Если таких чисел нет, то вывести сообщение об этом факте.
№ 6
Дана последовательность чисел а1, а2, …, аn. Указать наименьшую длину числовой оси, содержащую все эти числа.
№ 7
Дана последовательность действительных чисел а1, а2, …, аn. Заменить все ее члены, большие данного Z, этим числом. Подсчитать количество замен.
№ 8
Последовательность действительных чисел оканчивается нулем. Найти количество членов этой последовательности.
№ 9
Дан массив действительных чисел, размерность которого N. Подсчитать, сколько в нем отрицательных, положительных и нулевых элементов.
№ 10
Даны действительные числа а1, а2, …, аn. Поменять местами наибольший и наименьший элементы.
№ 11
Даны целые числа а1, а2, …, аn. Вывести на печать только те числа, для которых выполняется аi ≤ i.
№ 12
Даны натуральные числа а1, а2, …, аn. Указать те, у которых остаток деления на М равен L (0 ≤ L ≤ M – 1).
№ 13
В заданном одномерном массиве поменять местами соседние элементы, стоящие на четных местах, с элементами, стоящими на нечетных.
№ 14
При поступлении в вуз абитуриенты, получившие двойки на первом экзамене, ко второму не допускаются. В массивеА[n] записаны оценки экзаменующихся, полученные на первом экзамене. Подсчитать, сколько человек не допущено ко второму экзамену.
№ 15
Дана последовательность чисел, среди которых имеется один нуль. Вывести на печать все числа до нуля включительно.
№ 16
В одномерном массиве размещены: в первых элементах значения аргумента, в следующих – соответствующие им значения функции. Напечатать элементы этого массива в виде двух параллельных столбцов (аргументы и значения функции).
№ 17
Пригодность детали оценивается по размеру В, который должен соответствовать интервалу (А – δ, А + δ). Определить, имеются ли в партии N деталей бракованные. Если да, то подсчитать их количество, иначе выдать отрицательный ответ.
№ 18
У вас есть доллары. Вы хотите обменять их на рубли. Есть информация о стоимости купли-продажи в банках города. В городе N банков. Составьте программу, определяющую, какой банк выбрать, чтобы выгодно обменять доллары на рубли.
№ 19
Дан целочисленный массив с количеством элементов n. Напечатать те его элементы, индексы которых являются степенями двойки (1, 2, 4, 8, 16, …).
Б
№ 20
Дан одномерный массив A[N]. Найти
max(a2, a4, …, a2k) + min(a1, a3, …, a2k+1).
№ 21
Дана последовательность действительных чисел а1, а2, …, аn. Указать те ее элементы, которые принадлежат отрезку [c, d].
№ 22
Дана последовательность целых положительных чисел. Найти произведение только тех чисел, которые больше заданного числа М. Если таких нет, то выдать сообщение об этом.
№ 23
Последовательность а1, а2, …, аn состоит из нулей и единиц. Поставить в начало этой последовательности нули, а затем единицы.
№ 24
Даны действительные числа а1, а2, …, аn. Среди них есть положительные и отрицательные. Заменить нулями те числа, которые по модулю больше максимального числа (|a1| > max {а1, а2, …, аn}).
№ 25
Даны действительные числа а1, а2, …, аn. Найти max(a1 + a2n, a2 + a2n-1, …, аn + an+1).
№ 26
В последовательности действительных чисел а1, а2, …, аn есть только положительные и отрицательные элементы. Вычислить произведение отрицательных элементов Р1 и произведение положительных элементов Р2. Сравнить модульР2 с модулем Р1, указать, какое из произведений по модулю больше.
№ 27
Дан массив действительных чисел. Среди них есть равные. Найти первый максимальный элемент массива и заменить его нулем.
№ 28
Дана последовательность действительных чисел а1 ≤ а2 ≤ … ≤ аn. Вставить действительное число b в нее так, чтобы последовательность осталась неубывающей.
№ 29
Даны целые положительные числа а1, а2, …, аn. Найти среди них те, которые являются квадратами некоторого числа m.
№ 30
Дана последовательность целых чисел а1, а2, …, аn. Образовать новую последовательность, выбросив из исходной те члены, которые равны min(а1, а2, …, аn).
№ 31
У прилавка магазина выстроилась очередь из n покупателей. Время обслуживания i-го покупателя равно t1 (i = 1, …, n). Определить время Сi пребывания i-го покупателя в очереди.
№ 32
Секретный замок для сейфа состоит из 10 расположенных в ряд ячеек, в которые надо вставить игральные кубики. Но дверь открывается только в том случае, когда в любых трех соседних ячейках сумма точек на передних гранях кубиков равна 10 (игральный кубик имеет на каждой грани от 1 до 6 точек). Напишите программу, которая разгадывает код замка при условии, что два кубика уже вставлены в ячейки.
№ 33
В массиве целых чисел с количеством элементов n найти наиболее часто встречающееся число. Если таких чисел несколько, то определить наименьшее из них.
№ 34
Каждый солнечный день улитка, сидящая на дереве, поднимается вверх на 2 см, а каждый пасмурный день опускается вниз на 1 см. В начале наблюдения улитка находилась в А см от земли на В-метровом дереве. Имеется 30-элементный массив, содержащий сведения о том, был ли соответствующий день наблюдения пасмурным или солнечным. Написать программу, определяющую местоположение улитки к концу 3-го дня наблюдения.
№ 35
Дан целочисленный массив с количеством элементов n. «Сожмите» массив, выбросив из него каждый второй элемент.
Примечание. Дополнительный массив не использовать.
№ 36
Задан массив, содержащий несколько нулевых элементов. Сжать его, выбросив эти элементы.
№ 37
Задан массив с количеством элементов N. Сформируйте два массива: в первый включите элементы исходного массива с четными номерами, а во второй – с нечетными.
№ 38
Дана последовательность целых чисел а1, а2, …, аn. Указать пары чисел ai, aj, таких, что ai + aj = m.
№ 39
Даны целые числа а1, а2, …, аn. Наименьший член этой последовательности заменить целой частью среднего арифметического всех членов, остальные члены оставить без изменения. Если в последовательности несколько наименьших членов, то заменить последний по порядку.
№ 40
Даны целые числа а1, а2, …, аn и b1, b2, …, bn. Преобразовать последовательность b1, b2, …, bn по правилу: если аi ≤ 0, то bi увеличить в 10 раз, иначе bi заменить нулем (i = 1, 2, …, n).
№ 41
Даны действительные числа а1, а2, …, аn. Требуется умножить все члены последовательности а1, а2, …, аn на квадрат ее наименьшего члена, если аk ≥ 0, и на квадрат ее наибольшего члена, если аk ˂ 0 (1 ≤ k ≤ n).
№ 42
Даны координаты n точек на плоскости: (Х1, Y1), …, (Xn, Yn) (n ≤ 30). Найти номера пары точек, расстояние между которыми наибольшее (считать, что такая пара единственная).
№ 43
Дана последовательность из n различных целых чисел. Найти сумму ее членов, расположенных между максимальным и минимальным значениями (в сумму включить и оба этих числа).
№ 44
Японская радио провела опрос N радиослушателей по вопросу: «Какое животное вы связываете с Японией и японцами?». Составить программу получения k наиболее часто встречающихся ответов и их долей (в процентах).
№ 45
Дан массив, состоящий из n натуральных чисел. Образовать новый массив, элементами которого будут элементы исходного, оканчивающиеся на цифру k.
№ 46
Дан массив целых чисел. Найти в этом массиве минимальный элемент m и максимальный элемент M. Получить в порядке возрастания все целые числа из интервала (m; М), которые не входят в данный массив.
№ 47
Дано действительное число x и массив А[n]. В массиве найти два члена, среднее арифметическое которых ближе всего к х.
№ 48
Даны две последовательности а1, а2, …, аn и b1, b2, …, bm (m ˂ n). В каждой из них члены различны. Верно ли, что все члены второй последовательности входят в первую последовательность?
№ 49
Напишите программу, входными данными которой является возраст n человек. Программа подсчитывает количество людей, возраст которых находится в интервале 10 лет, а именно:
<..> человек имеет возраст в диапазоне 0-10 лет,
<..> человек имеет возраст в диапазоне 10-20 лет,
и т. д.
В
№ 50
В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные – в конец с сохранением порядка следования. Дополнительный массив заводить не разрешается.
№ 51
В одномерном массиве с четным количеством элементов (2N) находятся координаты N точек плоскости. Они располагаются в следующем порядке: x1, y1, x2, y2, x3, y3, …, xn, yn. Определить минимальный радиус круга с центром в начале координат, который содержит все точки.
№ 52
В одномерном массиве с четным количеством элементов (2N) находятся координаты N точек плоскости. Они располагаются в следующем порядке: x1, y1, x2, y2, x3, y3, …, xn, yn. Определить кольцо с центром в начале координат, которое содержит все точки.
№ 53
В одномерном массиве с четным количеством элементов (2N) находятся координаты N точек плоскости. Они располагаются в следующем порядке: x1, y1, x2, y2, x3, y3, …, xn, yn (xi, yj - целые). Определить номера точек, которые могут являться вершинами квадрата.
№ 54
В одномерном массиве с четным количеством элементов (2N) находятся координаты N точек плоскости. Они располагаются в следующем порядке: x1, y1, x2, y2, x3, y3, …, xn, yn. Определить номера точек, которые могут являться вершинами равнобедренного треугольника.
№ 55
Задан целочисленный массив размерности N. Есть ли среди элементов массива простые числа? Если да, то вывести номера этих элементов.
№ 56
Дана последовательность целых чисел. Найти количество различных чисел в этой последовательности.
№ 57
Дан массив из n четырехзначных натуральных чисел. Вывести на экран только те, у которых сумма первых двух цифр равна сумме двух последних.
№ 58
Даны две последовательности целых чисел а1, а2, …, аn и b1, b2, …, bn. Все члены последовательностей – различные числа. Найти, сколько членов первой последовательности совпадают с членами второй последовательности.
№ 59
Дан целочисленный массив A[n], среди элементов есть одинаковые. Создать массив из различных элементов A[n].
№ 60
На плоскости n точек заданы своими координатами и также дана окружность радиуса R с центром в начале координат. Указать множество всех треугольников с вершинами в заданных точках, пересекающихся с окружностью; множество всех треугольников, содержащихся внутри окружности.
№ 61
В одномерном массиве с четным количеством элементов (2N) находятся координаты N точек плоскости. Они располагаются в следующем порядке: x1, y1, x2, y2, x3, y3, …, xn, yn. Найти номера самых удаленных друг от друга точек и наименее удаленных друг от друга точек.
№ 62
В одномерном массиве с четным количеством элементов (2N) находятся координаты N точек плоскости. Они располагаются в следующем порядке: x1, y1, x2, y2, x3, y3, …, xn, yn. Определить три точки, которые являются вершинами треугольника, для которого разность числа точек вне его и внутри является минимальной.
Сортировка массивов
№ 63
Заданы два одномерных массива с различным количеством элементов и натуральное число k. Объединить их в один массив, включив второй массив между k-м и (k+1)-м элементами первого, не используя дополнительный массив.
№ 64
Даны две последовательности
a1 ≤ a2 ≤ … ≤ an и b1 ≤ b2 ≤ … ≤ bn.
Образовать из них новую последовательность чисел так, чтобы она тоже была неубывающей.Примечание. Дополнительный массив не использовать.
№ 65
Сортировка выбором. Дана последовательность чисел a1, a2, …, an. Требуется переставить элементы так, чтобы они были расположены по убыванию. Для этого в массиве, начиная с первого, выбирается наибольший элемент и ставится на первое место, а первый – на место наибольшего. Затем, начиная со второго, эта процедура повторяется. Написать алгоритм сортировки выбором.
№ 66
Сортировка обменами. Дана последовательность чисел a1, a2, …, an. Требуется переставить числа в порядке возрастания. Для этого сравниваются два соседних числа ai и ai+1. Если аi > ai+1, то делается перестановка. Так продолжается до тех пор, пока все элементы не окажутся расположенными в порядке возрастания. Составить алгоритм сортировки, подсчитывая при этом количество перестановок.
№ 67
Сортировка вставками. Дана последовательность чисел a1, a2, …, an. Требуется переставить числа в порядке возрастания. Делается это следующим образом. Пусть a1, a2, …, ai – упорядоченная последовательность, т. е. a1 ≤ a2 ≤ … ≤ ai. Берется следующее число ai+1 и вставлется в последовательность так, чтобы новая последовательность была также возрастающей. Процесс производится до тех пор, пока все элементы от i+1 до n не будут перебраны.
№ 68
Сортировка Шелла. Дан массив n действительных чисел. Требуется упорядочить его по возрастанию. Делается это следующим образом: сравниваются два соседних элемента ai и ai+1. Если ai ≤ ai+1, то эти элементы продвигаются на один элемент вперед. Если ai > ai+1, то производится перестановка всех элементов, затем они сдвигаются на один элемент назад. Составить алгоритм такой сортировки.
№ 69
Пусть даны неубывающая последовательность действительных чисел a1 ≤ a2 ≤ … ≤ an и действительные числа b1 ≤ b2 ≤ …≤ bm. Требуется указать те места, на которые нужно вставлять элементы последовательности b1, b2, …, bm в первую последовательность так, чтобы новая последовательность оставалась возрастающей.
№ 70
Даны дроби , , …, (pi, qj - натуральные). Составить программу, которая приводит эти дроби к общему знаменателю и упорядочивает их в порядке возрастания.
№ 71
Алгоритм фон Неймана. Упорядочить массив a1, a2, …, an по неубыванию с помощью алгоритма сортировки слияниями:
- каждая пара соседних элементов сливается в одну группу из двух элементов (последняя группа может состоять из одного элемента);
- каждая пара соседних двухэлементных групп сливается в одну четырехэлементную группу и т. д.
При каждом слиянии новая укрупненная группа упорядочивается.
Тема "Основные алгоритмы с массивами"
#include <iostream>
#include <locale.h>
using namespace std;
int main()
{ setlocale(LC_ALL,"Russian");
int A[100];
int i,n;
//ввод массива
cout<<"Введите количество элементов в массиве: n=";
cin>>n;
cout<<"Введите массив из "<<n<<" целых чисел:"<<endl;
for(i=0;i<n;i++) cin>>A[i];
//вывод массива
for(i=0;i<n;i++) cout<<A[i]<<" ";
cout<<endl;
//количество четных элементов массива
int k=0;
for(i=0;i<n;i++) if (A[i]%2==0)k++;
cout<<"k="<<k<<endl;
//произведение элементов массива
int pr=1;
for(i=0;i<n;i++) pr*=A[i];
cout<<"pr="<<pr<<endl;
//сумма элементов массива
int sum=0;
for(i=0;i<n;i++) sum+=A[i];
cout<<"sum="<<sum<<endl;
//среднее арифметическое элементов массива
double avr=0;
for(i=0;i<n;i++) avr+=A[i];
avr/=n;
cout<<"avr="<<avr<<endl;
//максимальный элемент массива
int maxi=A[0];
for(i=1;i<n;i++) if (A[i]>maxi) maxi=A[i];
cout<<"max="<<maxi<<endl;
//минимальный элемент массива
int mini=0;
for(i=1;i<n;i++) if (A[i]<A[mini]) mini=i;
cout<<"min="<<A[mini]<<endl;
//перестановка первого и последнего элемента массива
int t;
t=A[0];A[0]=A[n-1];A[n-1]=t;
//вывод массива
for(i=0;i<n;i++) cout<<A[i]<<" ";
cout<<endl;
return 0;
}
25.04.2013-27.05.2013 (задание для всех)
Тема "Файловые потоки"
Создаем файл input.txt в своей папке (там где создан проект):
10
1 5 6 8 9 7 0 8 10 3
Для чтение из файла напишем программу:
#include <iostream>
#include <fstream> //библиотека для работы с файлом
using namespace std;
int main()
{
ifstream in("input.txt");//input file stream
int A[100],n,i;
in >>n;//ввод из файла
cout<<n;//вывод на экран
for(i=0;i<n;i++)
{
in>>A[i];//ввод из файла
}
for(i=0;i<n;i++)
{
cout<<A[i]<<" ";//вывод на экран
}
ofstream out("output.txt");//output file stream
for(i=0;i<n;i++)
{
out<<A[i]<<" ";//вывод в файл
}
return 0;
}
Домашнее задание: Написать программу с использованием ввода и вывода в файл (все вопросы задавать по почте).
Имеется
одномерный массив действительных чисел конечной длины. Написать функцию
(процедуру) чтения одномерного массива из файла, функцию (процедуру) записи
массива в файл, функцию (процедуру), реализующую поиск суммы элементов массива,
произведение элементов массива, поиск минимального и максимального элементов
массива и их номеров, а также:
8.1 Поменять местами максимальный
элемент массива и минимальный
8.2 Поменять местами минимальный
элемент массива и максимальный
8.3 Заменить все элементы,
большие второго элемента массива, на 2
8.4 Заменить все элементы
массива, начиная с пятого, на значение минимального элемента
8.5 Поменять местами максимальный
и второй элементы массива, если эти элементы различны
8.6 Поменять местами шестой и
восьмой элементы массива
8.7 Заменить все отрицательные
элементы массива на модуль минимального элемента
8.8 Поменять местами первый и
последний элементы массива
8.9 Поменять все отрицательные
элементы массива на их модули
8.10 Переставить третий и
четвертый элементы массива
8.11 Подсчитать, сколько раз
встречается в массиве максимальный элемент
8.12 Поменять все элементы,
равные 5, на максимальный элемент массива
8.13 Поменять все элементы,
равные 5, на минимальный элемент массива
8.14 Поменять местами
максимальные элементы с предыдущими
8.15 Поменять местами минимальные
элементы с последующими
11.04.2013-13.04.2013
Алгоритмы сортировки
http://algolist.manual.ru/sort/
informatics.mccme.ru
Домашнее задание:
Написать программу для челночной сортировки.
14.03.2013-16.03.2013
Домашнее задание:
На сайте informatics.mccme.ru зарегистрироваться и решить 5 задач на тему одномерные задачи.
Для практики - можно решить задачи на тему ввод-вывод, условный оператор, операторы цикла.
28.02.2013-02.03.2013
Домашнее задание:
№ 1
Дан массив натуральных чисел. Найти сумму элементов, кратных данному K.
№ 2
В целочисленной последовательности есть нулевые элементы. Создать массив из номеров этих элементов.
№ 4
Дана последовательность действительных чисел а1, а2, …, аn. Выяснить, будет ли она возрастающей.
Тема "циклы":
#include <iostream>
#include <locale.h>
using namespace std;
int main()
{ setlocale(LC_ALL,"Russian");
int A[7], B[5][4];
int i,j;
cout<<"Введите массив из 7 целых чисел:"<<endl;
for(i=0;i<7;i++) cin>>A[i];
cout<<"Введите двумерный массив "<<
"из 5 строк и 4 столбцов:"<<endl;
for(i=0;i<5;i++)
for(j=0;j<4;j++)
cin>>B[i][j];
cout<<"одномерный массив:"<<endl;
cout<<"в строку:"<<endl;
for(i=0;i<7;i++) cout<<A[i]<<" ";
cout<<endl;
cout<<"в столбец:"<<endl;
for(i=0;i<7;i++) cout<<A[i]<<endl;
cout<<"двумерный массив:"<<endl;
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
{
cout<<B[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
Упражнение: Дан целочисленный массив из 10 элементов. Вывести:
а) только четные элементы
б) только отрицательные элементы
в) сумму элементов
Домашнее задание:
1. Написать программу для определения, является ли треугольник со сторонами a, b, c прямоугольным, тупоугольным или остроугольным (по теореме Пифагора).
2. На шахматной доске 8х8 стоят черная ладья и белый слон. Определите, кто кого бьет, если известны местоположение каждой фигуры как номер строки и номер столбца.
3. Выведите таблицу перевода из мили в км от 1 до 100 (1 миля=1,609344 км).
31.01.13-02.02.13
Управляющие операторы:
- оператор присваивания;
- оператор условного перехода;
- оператор выбора;
- операторы цикла.
Пример:
#include <iostream>
#include <locale.h>
#include <math.h>
#include <stdlib.h>
//объявление константы пи
#define PI 3.1415
using namespace std;
int main()
{ setlocale(LC_ALL,"Russian");
int n=0;
n++; //тоже самое, что n=n+1;
n--; //тоже самое, что n=n-1;
n+=2; //тоже самое, что n=n+2;
n-=3; //тоже самое, что n=n-3;
n*=2;//тоже самое, что n=n*2;
n/=4; //тоже самое, что n=n/4;
int a=2,b;
a=pow(a,2);//а в степени 2
float s;
n=abs(a);//по модулю целого типа
s=fabs(sin(PI*2));//по модулю вещественного типа
s=sqrt(a); //корень квадратный
s=tan(2*PI); //тангенс 2пи
n=15;
a=n/2;//целочисленное деление
b=n%2;//остаток от деления
cout << "15/2=" << a<<" целых "<<b<<" в остатке"<<endl;
//деление вещественное
s=(float)n/2;
s=n/2.;
s=1/3.;
cout << "s=" << s<<endl;
//оператор условного перехода
if(a>0){
a*=3;
cout<<"a>0"<<endl;
}
else{
a*=2;
cout<<"a<=0"<<endl;
}
if(a>0)cout<<"a>0"<<endl;else cout<<"a<=0"<<endl;
//оператор выбора
switch(a)
{
case 0: cout<<"a=0"<<endl; break;
case 1: cout<<"a=1"<<endl; break;
default:cout<<"a<>0 и a<>1"<<endl;
}
//цикл с параметром
for(int i=0;i<10;i++)
{
s+=i;
cout<<i<<" "<<s<<endl;
}
//цикл c предусловием
while(a>0)
{
a-=1;//continue;-прервать дальнейшие действия и начать цикл с начала
cout<<"a="<<a<<endl;
}
//цикл с постусловием
do
{
n*=2;//break;-прервать цикл, выйти из цикла
cout<<"n="<<n<<endl;
}while(n>10);
return 0;
}
Сохраняя файл проекта, нужно учитывать, что в полном пути не должно быть пробелов и русских букв. Лучше сохранять в папке Work и называть Primer1. Файл main.cpp является главным запускаемым файлом. Чтобы написать новую программу - сохраните этот файл под другим именем и перепишите файл.
- оператор присваивания;
- оператор условного перехода;
- оператор выбора;
- операторы цикла.
Пример:
#include <iostream>
#include <locale.h>
#include <math.h>
#include <stdlib.h>
//объявление константы пи
#define PI 3.1415
using namespace std;
int main()
{ setlocale(LC_ALL,"Russian");
int n=0;
n++; //тоже самое, что n=n+1;
n--; //тоже самое, что n=n-1;
n+=2; //тоже самое, что n=n+2;
n-=3; //тоже самое, что n=n-3;
n*=2;//тоже самое, что n=n*2;
n/=4; //тоже самое, что n=n/4;
int a=2,b;
a=pow(a,2);//а в степени 2
float s;
n=abs(a);//по модулю целого типа
s=fabs(sin(PI*2));//по модулю вещественного типа
s=sqrt(a); //корень квадратный
s=tan(2*PI); //тангенс 2пи
n=15;
a=n/2;//целочисленное деление
b=n%2;//остаток от деления
cout << "15/2=" << a<<" целых "<<b<<" в остатке"<<endl;
//деление вещественное
s=(float)n/2;
s=n/2.;
s=1/3.;
cout << "s=" << s<<endl;
//оператор условного перехода
if(a>0){
a*=3;
cout<<"a>0"<<endl;
}
else{
a*=2;
cout<<"a<=0"<<endl;
}
if(a>0)cout<<"a>0"<<endl;else cout<<"a<=0"<<endl;
//оператор выбора
switch(a)
{
case 0: cout<<"a=0"<<endl; break;
case 1: cout<<"a=1"<<endl; break;
default:cout<<"a<>0 и a<>1"<<endl;
}
//цикл с параметром
for(int i=0;i<10;i++)
{
s+=i;
cout<<i<<" "<<s<<endl;
}
//цикл c предусловием
while(a>0)
{
a-=1;//continue;-прервать дальнейшие действия и начать цикл с начала
cout<<"a="<<a<<endl;
}
//цикл с постусловием
do
{
n*=2;//break;-прервать цикл, выйти из цикла
cout<<"n="<<n<<endl;
}while(n>10);
return 0;
}
Сохраняя файл проекта, нужно учитывать, что в полном пути не должно быть пробелов и русских букв. Лучше сохранять в папке Work и называть Primer1. Файл main.cpp является главным запускаемым файлом. Чтобы написать новую программу - сохраните этот файл под другим именем и перепишите файл.
Домашнее задание: Установить CodeBlocks. Написать и выполнить программы для заданий:
1. Длина отрезка задана в дюймах (1 дюйм=2,54 см). Перевести значение длины в метрическую систему (метры, сантиметры, миллиметры). Например, 21 дюйм = 0 м 53 см 3,4 мм.
2. Заданы моменты начала и конца некоторого промежутка в часах, минутах, секундах (в пределах одних суток). Найти продолжительность этого промежутка в тех же единицах.
3. Коммерсант, имея стартовый капитал k рублей, занялся торговлей, которая ежемесячно увеличивает капитал на p%. Через сколько лет он накопит сумму s, достаточную для покупки собственного магазина?
17.01.13-19.01.13
1. Текст программы сохраняем как
main.c - если программа на С
main.cpp - если программа на С++
2. После компиляции получаем main.obj (программа на машинном языке)
3. После компоновки (соединение со стандартными библиотеками) получаем main.exe
Пример программы на С++:
#include <iostream.h> /*подключаем библиотеку iostream.h для стандартного потокового ввод-вывод на С++ */
#include <locale.h> //для смены кодировки символов
#include <math.h> //для использования математических функций
using namespace std; //используем стандартное пространство имен
int main() //объявляем главную программу как целую (int) функцию
{
setlocale(LC_ALL, "Russian");//подключаем кодировку windows cp1251 для вывода русских букв
int a,b,c;//описание целых переменных
float p,s;//описание вещественных переменных
cout<<"введите стороны треугольника";//вывод сообщения
cin>>a>>b>>c; //ввод чисел
p=(a+b+c)/2.;//вещественное деление на 2
s=sqrt(p*(p-a)*(p-b)*(p-c));//sqrt() - возвращает корень квадратный от аргумента
cout<<"s="<<s<<endl;//endl-переход на новую строку
return 0;//возврат кода ошибки или успешного завершения программы (0)
}
Домашнее задание: Установить CodeBlocks. Написать и выполнить программы для заданий №7-10 стр. 214 задачника Семакина (см. ниже)
Алгоритмы работы с числами:
- вычисление суммы/произведения,
- нахождения минимального/максимального числа,
- определение количества по условию,
- перевод целой/дробной части из десятичной системы в р-ичную и обратно,
- вычисление многочлена n-ой степени по схеме Горнера,
- найти член последовательности по заданному условию,
- найти сумму ряда,
- вывод всех цифр натурального числа, суммы, количества, среднего арифметического,
- определение кратности и делителей натурального числа, НОК и НОД двух чисел,
- определение является ли натуральное число простым.
Подготовка к контрольной: Задачник Семакина 1 том :
№ 6
Составить
алгоритм вычисления площади треугольника
со сторонами a,
b,
c
(a,b,c
– вещественные положительные числа)
№ 7
Длины
сторон первого прямоугольника a
и b,
его площадь в 6 раз меньше площади второго
прямоугольника. Найти длину стороны
второго прямоугольника, если длина
одной из его сторон равна c.
№ 8
Длина
стороны треугольника равно a,
периметр равен p,
длина двух других сторон равны между
собой. Найти эти длины.
№ 9
Периметр
треугольника равен p,
длина одной стороны равна a,
другой – b.
Найти длину третьей стороны.
№ 10
Найти
площадь поверхности куба со стороной
a.
Написать
алгоритм нахождения максимального
среди четырех целых чисел.
№
13
Написать
алгоритм проверки условия: имеются ли
среди трех целых чисел два положительных
значения?
№
14
Написать
алгоритм проверки условия: могут ли
три данных числа быть длинами сторон
треугольника?
№
15
Написать
алгоритм проверки условия: лежит ли
данная точка с координатами (x,y)
в первой четверти координатной плоскости?
№
16
Проверить
принадлежность числа x
интервалами [a,
b]
или [c,
d].
№17
Проверить,
является ли четырехугольник со сторонами
a,
b,
c,
d
ромбом.
№18
Определить,
является ли треугольник со сторонами
a,
b,
c
равнобедренным.
№19
Определить, является ли треугольник со сторонами
a,
b,
c
равносторонним.
№20
Среди
чисел a,
b,
c
определить количество отрицательных.
№21
Среди
чисел a,
b,
c
определить количество положительных.
№22
Числа
a
и b
– катеты одного треугольника, c
и d
– катеты другого. Определить, являются
ли эти треугольники равновеликими.
№23
Определить,
принадлежит ли заданная точка (x,
y)
плоской фигуре, являющейся кольцом с
центром в начале координат, с внутренним
радиусом r1
и внешним радиусом r2.
№ 28
Найти
сумму первых N
четных натуральных чисел.
№ 29
Получить
первые
N чисел
Фибоначчи
: a1
=
a2
=
1, a3
=a1
+a2
=2,
a4=
a2
+ a3
=3
и
т.д.
№ 30
Последовательно
вводятся N
целых чисел. Найти сумму всех положительных
среди них.
№ 31
Последовательно
вводятся N
целых чисел. Найти количество отрицательных
среди них.
№ 32
Последовательно
вводятся N
целых чисел. Определить каких среди них
чисел больше: положительных или
отрицательных.
№ 33
Последовательно
вводятся N
целых чисел. Найти минимальное из
положительных значений.
№ 33
Последовательно
вводятся N
целых
чисел. Найти максимальное из них.
№ 34
Последовательно
вводятся N
целых
чисел. Найти максимальное положительных
значений.
№ 35
Последовательно
вводятся N
целых
чисел. Сосчитать, сколько из них совпадают
с первым числом.
№ 36
Последовательно
вводятся N
целых
чисел. Найти разницу между наибольшим
и наименьшим из них.
№ 37
Последовательно
вводятся N
целых чисел. Найти среднее арифметическое
этих чисел.
№ 38
Найти
наибольший общий делитель двух чисел
A
и В (алгоритм Евклида).
№ 39
Найти
наименьшее общее кратное двух чисел А
и В.
№ 40
Найти
первое из чисел 1, 1/2, 1/3, 1/4 и т.д. меньшее
заданного числа А.
№41
Найти
сумму чисел 1, 1/2, 1/3, 1/4 и т.д., большее
заданного числа А.
№ 42
Леспромхоз
ведет заготовку деловой древесины. Ее
первоначальный объем на территории
леспромхоза был равен P
м3.
Ежегодный прирост составляет k%.
Годовой план заготовки древесины – Т
м3.
Какой объем деловой древесины на данной
территории будет через год, через два
и т.д., пока этот объем не станет меньше
минимального значения В м3?
Язык КуМир8.10-13.10 Домашняя работа
Задачник Семакина 1 том. стр. 215-216. п. 4.3
24. Определить значение целочисленной переменной S после выполнения алгоритмов:
a) S:=28
для i от 1 до 4 повторять
нц
S:=S-3
кц
б) S:=0
для i от 1 до 2 повторять
нц
для j от 2 до 3 повторять
нц
S:=i+j
кц
кц
25. Определить значение целочисленной переменной S после выполнения алгоритмов:
a) S:=1; a:=1
для i от 1 до 3 повторять
нц
S:=S+i(*(i+1) *a
a:=a+2
кц
б) для i от 1 до 3 повторять
нц
S:=0
для j от 2 до 2 повторять
нц
S:=i+j
кц
кц
26. Определить значение переменной S после выполнения алгоритмов:
a) S:=0; i:=0
пока i < 3, повторять
нц
i:=i+1
S:=S+i*i
кц
б) i:=1; S:=0
пока i>1, повторять
нц
S:=S+1/i
i:=i-1
кц
27. Определить значение переменной S после выполнения алгоритмов:
a) S:=0; i:=1; j:=15
пока i < j, повторять
нц
S:=S+i*j
i:=i+1; j:=j-1
кц
б) a:=1; b:=1
пока a+b<10, повторять
нц
a:=a+1
b:=b+a
кц
S:=a+b
28. Найти сумму первых N четных натуральных чисел.
29. Получить первые N чисел Фибоначчи: a1=a2=1,
a3=a1+a2=2, a4=a2+a3=3 и т.д.
30. Последовательно вводятся N целых чисел. найти сумму всех положительных среди них.
24.09-29.09 Домашняя работа
Задачник Семакина 1 том. стр. 210. п. 4.3
1. Определить конечные значение переменной Х и У в результате выполнения следующих алгоритмов:
а) X:=2
X:=X*X
X:=X*X*X
X:=X*X*X*X
б) X:=1.5
X:=2*X+1
Y:=X/2
Y:=X+Y
X:=X-Y
2. Написать алгоритм вычисления по формуле:
y = (1-x2+2.5x3+x4)2
учитывая следующие ограничения: 1) пользоваться можно операциями сложения, вычитания и умножения; 2) каждое выражение может содержать только одну арифметическую операцию.
3. Пользуясь ограничениями предыдущей задачи, написать наиболее короткие алгоритмы вычисления:
а) y=x8 б)Y=x10 в) y=x15 г)y=x19
Постараться использовать минимальное число дополнительных переменных. Выполнить проверку алгоритма для х=2.
4. Записать алгоритм циклического перемещения влево значений между переменными A, B, C по схеме C->B->A->C
5. Записать алгоритм циклического перемещения вправо значений между переменными A, B, C, D по схеме A->B->C->D->A
10.09-15.09 Домашняя работа
Составьте алгоритм для "черного ящика" с числами и с символами.
Установите среды программирования:
1) www.niisi.ru/kumir алгоритмический язык в системе КуМир
2) www.freepascal.org
3) www.codeblocks.org
Комментариев нет :
Отправить комментарий