Автор: Пользователь скрыл имя, 18 Марта 2012 в 13:51, контрольная работа
Цель данной работы научиться элементарным операциям программирования и решения задач различного характера на Си. Для релизации этих целей необходимо научиться работать с операторами условия if и операторами цикла while, for, научиться составлять алгоритмы решения задач и реализовывать их на Си, научиться работать с функуциями ввода и вывода данных на Си. Также при решении задач поставленных в этой работе можно увидеть насколько краткие программы, написанные на языке Си.
ВВЕДЕНИЕ 3
1 Задача №1 4
2 Задача № 2 6
3 Задача № 3 8
ЗАКЛЮЧЕНИЕ 16
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 17
Университет Российской академии образования
Новомосковский филиал
Факультет информационных технологий
Кафедра прикладной математики и информатики
КОНТРОЛЬНАЯ РАБОТА
По дисциплине «Языки программирования и методы трансляции »
Решение задач на Си
Студент
Группа
Преподователь
Зиборов В.С.
МИ-10
д.т.н Силин В.В.
Новомосковск 2012 г.
Оглавление
ВВЕДЕНИЕ 3
1 Задача №1 4
2 Задача № 2 6
3 Задача № 3 8
ЗАКЛЮЧЕНИЕ 16
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 17
Несмотря на то что язык Си называют языком системного программирования, так как он удобен для написания операционных систем, он с равным успехом используется при написании больших вычислительных программ, программ для обработки текстов и баз данных. Одним из преимуществ языка Си явлется его краткость при написании программ. Предметом данной работы будут три программы на языке Си:вычислительная, сортировки, поиск данных в соответсии с заданным условием. Цель данной работы научиться элементарным операциям программирования и решения задач различного характера на Си. Для релизации этих целей необходимо научиться работать с операторами условия if и операторами цикла while, for, научиться составлять алгоритмы решения задач и реализовывать их на Си, научиться работать с функуциями ввода и вывода данных на Си. Также при решении задач поставленных в этой работе можно увидеть насколько краткие программы, написанные на языке Си.
Запрограммировать решение квадратного уравнения, учесть все варианты решения в том числе и комплексные числа.
Пусть квадратное уравнение задано в виде:
ax2+bx+c=0.
Далее вычислим его дискриминант по формуле:
Д=b*b-4*a*c.
Если дискриминант отрицательный, то выводим комплексное число.
Если дискриминант положительный, то выводим вещественное число.
Внизу приводится текст программы:
#include <iostream>
#include <windows.h>
#include <time.h>
#include <math.h>
using namespace std;
//Программа вычисления корней квадратного уравнения
int main()
{
float a, b, c, d, x1, x2, ix;
char str[50];
//Ввод коэффициентов a, b, c
CharToOem("aх*x+b*x+c=0 \n",str);
printf (str);
CharToOem("Введите коэффициенты a,b,c\n",str);
printf (str);
CharToOem("a=",str);
printf (str);
scanf("%f", &a);
CharToOem("\nb=",str);
printf (str);
scanf("%f", &b);
CharToOem("\nc=",str);
printf (str);
scanf("%f", &c);
//Вычисление дискриминанта d
d=b*b-4*a*c;
if (d<0)
{x1=-b/(2*a);
ix=sqrt(fabs(d))/(2*a);
//Вывод комплексного числа
CharToOem("\n x1=%f+i%f \n", str);
printf(str,x1,ix);
CharToOem("\n x2=%f-i%f \n", str);
printf(str,x1,ix);
}
else
{
x1=(-b-sqrt(d))/(2*a);
x2=(-b+sqrt(d))/(2*a);
//Вывод абсолютного значения числа х
CharToOem("\n x1=%f x2=%f \n", str);
printf(str,x1,x2);
}
srand(time(NULL)); //вместо randomize()
system("PAUSE");
return 0;
}
Результат программы приводится ниже:
aх*x+b*x+c=0
Введите коэффициенты a,b,c
a=1
b=1
c=1
x1=-0.500000+i0.866025
x2=-0.500000-i0.866025
Для продолжения нажмите любую клавишу . . .
Задан массив целых чисел размерностью не менее 20. Отсортировать элементы этого массива по возрастанию методом «пузырька».
Метод очень прост и состоит в следующем: берется пара рядом стоящих элементов, и если элемент с меньшим индексом оказывается больше элемента с большим индексом, то мы меняем их местами. Эти действия продолжаем, пока есть такие пары. Легко понять, что когда таких пар не останется, то данные будут отсортированными. Для упрощения поиска таких пар данные просматриваются по порядку от начала до конца. Из этого следует, что за такой просмотр находится максимум, который помещается в конец массива, а потому следующий раз достаточно просматривать уже меньшее количество элементов. Максимальный элемент как бы всплывает вверх, отсюда и название алгоритма. Так как каждый раз на свое место становится по крайней мере один элемент, то не потребуется более N проходов, где N - количество элементов.
Внизу приводится текст программы:
#include <iostream>
#include <windows.h>
#include <time.h>
using namespace std;
int main()
{
char str[100];
int a[25],p,i,j,n;
CharToOem("Введите количество элементов в массиве не менее 20 и не больше 25 n=",str);
printf (str);
// Ввод количества элементов в массиве
scanf("%d",&n);
CharToOem("Исходный массив\n",
printf(str);
// Организация цикла для вывода массива на экран
for (i=0;i<n;i++)
{
// Генерация случайного числа для элемента массива
a[i]=0+rand()%99;
// Вывод элемента массива на экран
printf("%d ",a[i]);
}
printf("\n");
// Организация циклов сортировки
for (i=0;i<n;i++)
for (j=0;j<n-i;j++)
if (a[j]>a[j+1])
{
p=a[j];
a[j]=a[j+1];
a[j+1]=p;
}
CharToOem("Отсортированный массив\n",str);
printf(str);
// Вывод отсортированного массива на экран
for (i=0;i<n;i++)
printf("%d ",a[i]);
srand(time(NULL)); //вместо randomize()
system("PAUSE");
return 0;
}
Результат работы программы приведён ниже:
Введите количество элементов в массиве не менее 20 и не больше 25 n=23
Исходный массив
41 53 97 67 62 82 93 54 34 11 62 29 16 96 61 95 25 62 75 90
18 51 41
Отсортированный массив
11 16 18 25 29 34 41 41 51 53 54 61 62 62 62 67 75 82 90 93
95 96 97 Для продолжения нажмите любую клавишу . . .
3 Задача № 3
Для чисел в диапазоне от 1 до 32000 найти все простые числа такие, что сумма цифр двух последовательных простых чисел кратна 7. Выдать число таких пар.
Необходимо организовать массив, где каждый элемент будет представлять сумму цифр простого числа в диапазоне от 1 до 32000. Сумму цифр каждого простого числа находим по следующему алгоритму. Для этого получаем остаток от деления числа на 10, затем делим число на 10, получаем опять остаток от деления и прибавляем его к предыдущему слагаемому и так далее, пока число не обратится в ноль. Формат числа обязательно должен быть целым. Сравниваем сумму цифр двух соседних простых чисел и если она кратна 7 то выводим эти числа на экран. При этом считаем количество таких пар.
Внизу приводится текст программы:
#include <iostream>
#include <windows.h>
#include <time.h>
#include <math.h>
using namespace std;
int main()
{
int Sum [32001],i,n,k;
char str[100];
//Ввод нулевых начальных значений
Sum[0]=0;
k=0;
//Организация массива для перебора простых чисел от 1 до 32000
for (i=1; i<32001;i++)
{
//Ввод нулевого значения, до начала вычислений элемент суммы должен быть равен нулю
Sum[i]=0;
// Организация цикла для вычисления суммы цифр простого числа
for (n=i;n!=0;n=n/10)
Sum[i]=Sum[i]+n%10;
// Постановка условия при котором эти цифры будут выводиться на экран
if((Sum[i-1]+Sum[i])%7==0)
{
// Вывод
на экран пары чисел
printf ("%5d %5d; ",i-1,i);
// Счётчик считающий количество последовательных пар цифр удовлетворяющих заданному условию
k=k+1;
}
}
// Вывод на
экран числа пар простых
CharToOem("\nЧисло пар
printf (str,k);
printf ("\n");
srand(time(NULL)); //вместо randomize()
system("PAUSE");
return 0;
}
Результат программы приводится ниже:
3 4; 12 13; 21 22; 28 29; 29 30; 30 31; 37 38; 46 47; 55 56; 64 65;
73 74; 82 83; 91 92; 98 99; 102 103; 111 112; 118 119; 119 120; 120 121; 127 128;
136 137; 145 146; 154 155; 163 164; 172 173; 181 182; 188 189; 189 190; 190 191; 197 198;
199 200; 201 202; 208 209; 209 210; 210 211; 217 218; 226 227; 235 236; 244 245; 253 254;
262 263; 271 272; 278 279; 279 280; 280 281; 287 288; 296 297; 300 301; 307 308; 316 317;
325 326; 334 335; 343 344; 352 353; 361 362; 368 369; 369 370; 370 371; 377 378; 386 387;
395 396; 406 407; 415 416; 424 425; 433 434; 442 443; 451 452; 458 459; 459 460; 460 461;
467 468; 476 477; 485 486; 494 495; 505 506; 514 515; 523 524; 532 533; 541 542; 548 549;
549 550; 550 551; 557 558; 566 567; 575 576; 584 585; 593 594; 604 605; 613 614; 622 623;
631 632; 638 639; 639 640; 640 641; 647 648; 656 657; 665 666; 674 675; 683 684; 692 693;
703 704; 712 713; 721 722; 728 729; 729 730; 730 731; 737 738; 746 747; 755 756; 764 765;
773 774; 782 783; 791 792; 798 799; 802 803; 811 812; 818 819; 819 820; 820 821; 827 828;
836 837; 845 846; 854 855; 863 864; 872 873; 881 882; 888 889; 889 890; 890 891; 897 898;
899 900; 901 902; 908 909; 909 910; 910 911; 917 918; 926 927; 935 936; 944 945; 953 954;
962 963; 971 972; 978 979; 979 980; 980 981; 987 988; 996 997; 999 1000; 1002 1003; 1011 1012;
1018 1019; 1019 1020; 1020 1021; 1027 1028; 1036 1037; 1045 1046; 1054 1055; 1063 1064; 1072 1073; 1081 1082;
1088 1089; 1089 1090; 1090 1091; 1097 1098; 1099 1100; 1101 1102; 1108 1109; 1109 1110; 1110 1111; 1117 1118;
1126 1127; 1135 1136; 1144 1145; 1153 1154; 1162 1163; 1171 1172; 1178 1179; 1179 1180; 1180 1181; 1187 1188;
1196 1197; 1200 1201; 1207 1208; 1216 1217; 1225 1226; 1234 1235; 1243 1244; 1252 1253; 1261 1262; 1268 1269;
1269 1270; 1270 1271; 1277 1278; 1286 1287; 1295 1296; 1306 1307; 1315 1316; 1324 1325; 1333 1334; 1342 1343;
1351 1352; 1358 1359; 1359 1360; 1360 1361; 1367 1368; 1376 1377; 1385 1386; 1394 1395; 1405 1406; 1414 1415;
1423 1424; 1432 1433; 1441 1442; 1448 1449; 1449 1450; 1450 1451; 1457 1458; 1466 1467; 1475 1476; 1484 1485;
1493 1494; 1504 1505; 1513 1514; 1522 1523; 1531 1532; 1538 1539; 1539 1540; 1540 1541; 1547 1548; 1556 1557;
1565 1566; 1574 1575; 1583 1584; 1592 1593; 1603 1604; 1612 1613; 1621 1622; 1628 1629; 1629 1630; 1630 1631;
1637 1638; 1646 1647; 1655 1656; 1664 1665; 1673 1674; 1682 1683; 1691 1692; 1698 1699; 1702 1703; 1711 1712;
1718 1719; 1719 1720; 1720 1721; 1727 1728; 1736 1737; 1745 1746; 1754 1755; 1763 1764; 1772 1773; 1781 1782;
1788 1789; 1789 1790; 1790 1791; 1797 1798; 1799 1800; 1801 1802; 1808 1809; 1809 1810; 1810 1811; 1817 1818;
1826 1827; 1835 1836; 1844 1845; 1853 1854; 1862 1863; 1871 1872; 1878 1879; 1879 1880; 1880 1881; 1887 1888;
1896 1897; 1900 1901; 1907 1908; 1916 1917; 1925 1926; 1934 1935; 1943 1944; 1952 1953; 1961 1962; 1968 1969;
1969 1970; 1970 1971; 1977 1978; 1986 1987; 1995 1996; 2001 2002; 2008 2009; 2009 2010; 2010 2011; 2017 2018;
2026 2027; 2035 2036; 2044 2045; 2053 2054; 2062 2063; 2071 2072; 2078 2079; 2079 2080; 2080 2081; 2087 2088;
2096 2097; 2100 2101; 2107 2108; 2116 2117; 2125 2126; 2134 2135; 2143 2144; 2152 2153; 2161 2162; 2168 2169;
2169 2170; 2170 2171; 2177 2178; 2186 2187; 2195 2196; 2206 2207; 2215 2216; 2224 2225; 2233 2234; 2242 2243;
2251 2252; 2258 2259; 2259 2260; 2260 2261; 2267 2268; 2276 2277; 2285 2286; 2294 2295; 2305 2306; 2314 2315;
2323 2324; 2332 2333; 2341 2342; 2348 2349; 2349 2350; 2350 2351; 2357 2358; 2366 2367; 2375 2376; 2384 2385;
2393 2394; 2404 2405; 2413 2414; 2422 2423; 2431 2432; 2438 2439; 2439 2440; 2440 2441; 2447 2448; 2456 2457;
2465 2466; 2474 2475; 2483 2484; 2492 2493; 2503 2504; 2512 2513; 2521 2522; 2528 2529; 2529 2530; 2530 2531;
2537 2538; 2546 2547; 2555 2556; 2564 2565; 2573 2574; 2582 2583; 2591 2592; 2598 2599; 2602 2603; 2611 2612;
2618 2619; 2619 2620; 2620 2621; 2627 2628; 2636 2637; 2645 2646; 2654 2655; 2663 2664; 2672 2673; 2681 2682;
2688 2689; 2689 2690; 2690 2691; 2697 2698; 2699 2700; 2701 2702; 2708 2709; 2709 2710; 2710 2711; 2717 2718;
2726 2727; 2735 2736; 2744 2745; 2753 2754; 2762 2763; 2771 2772; 2778 2779; 2779 2780; 2780 2781; 2787 2788;
2796 2797; 2800 2801; 2807 2808; 2816 2817; 2825 2826; 2834 2835; 2843 2844; 2852 2853; 2861 2862; 2868 2869;
2869 2870; 2870 2871; 2877 2878; 2886 2887; 2895 2896; 2906 2907; 2915 2916; 2924 2925; 2933 2934; 2942 2943;
2951 2952; 2958 2959; 2959 2960; 2960 2961; 2967 2968; 2976 2977; 2985 2986; 2994 2995; 3000 3001; 3007 3008;
3016 3017; 3025 3026; 3034 3035; 3043 3044; 3052 3053; 3061 3062; 3068 3069; 3069 3070; 3070 3071; 3077 3078;
3086 3087; 3095 3096; 3106 3107; 3115 3116; 3124 3125; 3133 3134; 3142 3143; 3151 3152; 3158 3159; 3159 3160;
3160 3161; 3167 3168; 3176 3177; 3185 3186; 3194 3195; 3205 3206; 3214 3215; 3223 3224; 3232 3233; 3241 3242;
3248 3249; 3249 3250; 3250 3251; 3257 3258; 3266 3267; 3275 3276; 3284 3285; 3293 3294; 3304 3305; 3313 3314;
3322 3323; 3331 3332; 3338 3339; 3339 3340; 3340 3341; 3347 3348; 3356 3357; 3365 3366; 3374 3375; 3383 3384;
3392 3393; 3403 3404; 3412 3413; 3421 3422; 3428 3429; 3429 3430; 3430 3431; 3437 3438; 3446 3447; 3455 3456;
3464 3465; 3473 3474; 3482 3483; 3491 3492; 3498 3499; 3502 3503; 3511 3512; 3518 3519; 3519 3520; 3520 3521;
3527 3528; 3536 3537; 3545 3546; 3554 3555; 3563 3564; 3572 3573; 3581 3582; 3588 3589; 3589 3590; 3590 3591;
3597 3598; 3599 3600; 3601 3602; 3608 3609; 3609 3610; 3610 3611; 3617 3618; 3626 3627; 3635 3636; 3644 3645;
3653 3654; 3662 3663; 3671 3672; 3678 3679; 3679 3680; 3680 3681; 3687 3688; 3696 3697; 3700 3701; 3707 3708;
3716 3717; 3725 3726; 3734 3735; 3743 3744; 3752 3753; 3761 3762; 3768 3769; 3769 3770; 3770 3771; 3777 3778;
3786 3787; 3795 3796; 3806 3807; 3815 3816; 3824 3825; 3833 3834; 3842 3843; 3851 3852; 3858 3859; 3859 3860;
3860 3861; 3867 3868; 3876 3877; 3885 3886; 3894 3895; 3905 3906; 3914 3915; 3923 3924; 3932 3933; 3941 3942;
3948 3949; 3949 3950; 3950 3951; 3957 3958; 3966 3967; 3975 3976; 3984 3985; 3993 3994; 4006 4007; 4015 4016;
4024 4025; 4033 4034; 4042 4043; 4051 4052; 4058 4059; 4059 4060; 4060 4061; 4067 4068; 4076 4077; 4085 4086;
4094 4095; 4105 4106; 4114 4115; 4123 4124; 4132 4133; 4141 4142; 4148 4149; 4149 4150; 4150 4151; 4157 4158;
4166 4167; 4175 4176; 4184 4185; 4193 4194; 4204 4205; 4213 4214; 4222 4223; 4231 4232; 4238 4239; 4239 4240;
4240 4241; 4247 4248; 4256 4257; 4265 4266; 4274 4275; 4283 4284; 4292 4293; 4303 4304; 4312 4313; 4321 4322;
4328 4329; 4329 4330; 4330 4331; 4337 4338; 4346 4347; 4355 4356; 4364 4365; 4373 4374; 4382 4383; 4391 4392;
4398 4399; 4402 4403; 4411 4412; 4418 4419; 4419 4420; 4420 4421; 4427 4428; 4436 4437; 4445 4446; 4454 4455;