8 б 2012-2013

Технология программирования

Язык программирования С++

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.
№ 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(a+ a2n, a+ a2n-1, …, а+ 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 + a= 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 точек плоскости. Они располагаются в следующем порядке: x1y1, 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
Даны две последовательности
a≤ 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 – упорядоченная последовательность, т. е. a≤ a2  ≤ … ≤ ai. Берется следующее число ai+1 и вставлется в последовательность так, чтобы новая последовательность была также возрастающей. Процесс производится до тех пор, пока все элементы от i+1 до n не будут перебраны.
№ 68
Сортировка Шелла. Дан массив n действительных чисел. Требуется упорядочить его по возрастанию. Делается это следующим образом: сравниваются два соседних элемента ai и ai+1. Если ai ≤ ai+1, то эти элементы продвигаются на один элемент вперед. Если ai > ai+1, то производится перестановка всех элементов, затем они сдвигаются на один элемент назад. Составить алгоритм такой сортировки.
№ 69
Пусть даны неубывающая последовательность действительных чисел a≤ a2  ≤ … ≤ an и действительные числа b b2 ≤ …≤ bm. Требуется указать те места, на которые нужно вставлять элементы последовательности b1, b2, …, bm в первую последовательность так, чтобы новая последовательность оставалась возрастающей.
№ 70
Даны дроби   , , …,  (pi, qj - натуральные). Составить программу, которая приводит эти дроби к общему знаменателю и упорядочивает их в порядке возрастания.
№ 71
Алгоритм фон Неймана. Упорядочить массив a1, a2, …, aпо неубыванию с помощью алгоритма сортировки слияниями:
  • каждая пара соседних элементов сливается в одну группу из двух элементов (последняя группа может состоять из одного элемента);
  • каждая пара соседних двухэлементных групп сливается в одну четырехэлементную группу и т. д.

При каждом слиянии новая укрупненная группа упорядочивается.


Тема "Основные алгоритмы с массивами"

#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 элементов. Вывести:
а) только четные элементы
б) только отрицательные элементы
в) сумму элементов

14.02.2013-16.02.2013
Домашнее задание:
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 является главным запускаемым файлом. Чтобы написать новую программу - сохраните этот файл под другим именем и перепишите файл.


Домашнее задание: Установить 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.

12
Написать алгоритм нахождения максимального среди четырех целых чисел.
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

Комментариев нет :

Отправить комментарий