Решение задач на Си

Автор: Пользователь скрыл имя, 18 Марта 2012 в 13:51, контрольная работа

Описание работы

Цель данной работы научиться элементарным операциям программирования и решения задач различного характера на Си. Для релизации этих целей необходимо научиться работать с операторами условия if и операторами цикла while, for, научиться составлять алгоритмы решения задач и реализовывать их на Си, научиться работать с функуциями ввода и вывода данных на Си. Также при решении задач поставленных в этой работе можно увидеть насколько краткие программы, написанные на языке Си.

Содержание

ВВЕДЕНИЕ 3
1 Задача №1 4
2 Задача № 2 6
3 Задача № 3 8
ЗАКЛЮЧЕНИЕ 16
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 17

Работа содержит 1 файл

Контрольная работа.docx

— 58.65 Кб (Скачать)

 

Университет Российской академии образования

Новомосковский филиал

 

Факультет информационных технологий

Кафедра прикладной математики и информатики

 

 

 

 

КОНТРОЛЬНАЯ РАБОТА

По дисциплине «Языки программирования и методы трансляции »

 

Решение задач на Си

 

 

 

 

 

 

Студент                                      

 

Группа

 

Преподователь

 

Зиборов В.С.

 

МИ-10

 

д.т.н Силин В.В.

 

 

 

 

Новомосковск 2012 г.

Оглавление

ВВЕДЕНИЕ 3

1 Задача №1 4

2 Задача № 2 6

3 Задача № 3 8

ЗАКЛЮЧЕНИЕ 16

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 17

 

 

 

ВВЕДЕНИЕ

 

Несмотря на то что язык Си называют языком системного программирования, так как он удобен для написания операционных систем, он с равным успехом используется при написании больших вычислительных программ, программ для обработки текстов и баз данных. Одним из преимуществ языка Си явлется его краткость при написании программ. Предметом данной работы будут три программы на языке Си:вычислительная, сортировки, поиск данных в соответсии с заданным условием. Цель данной работы научиться элементарным операциям программирования и решения задач различного характера на Си. Для релизации этих целей необходимо научиться работать с операторами условия if и операторами цикла while, for, научиться составлять алгоритмы решения задач и реализовывать их на Си, научиться работать с функуциями ввода и вывода данных на Си. Также при решении задач поставленных в этой работе можно увидеть насколько краткие программы, написанные на языке Си.   

 

1 Задача №1

Запрограммировать решение  квадратного уравнения, учесть все  варианты решения в том числе  и комплексные числа.

Пусть квадратное уравнение  задано в виде:

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

Для продолжения нажмите  любую клавишу . . .

2 Задача № 2

Задан массив целых чисел  размерностью не менее 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",str);

  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;

       }

     }

     // Вывод на  экран числа пар простых последовательных  чисел кратных 7 в диапазоне от 1 до 32000                             

CharToOem("\nЧисло пар простых  последовательных чисел кратных  7 в диапазоне от 1 до 32000 равно=%d",str);

 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;

Информация о работе Решение задач на Си