Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

графическая работа по технологии программирования на языке С.html

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 24.11.2024

Нижегородский государственный

архитектурно – строительный университет

Кафедра информационных систем

и технологий

Расчетно-графическая работа

по технологии программирования на языке С++.

Преподаватель                                                                         Тарасов В.Л.                                                                  

Студент гр.                                                                Ломакина Е.С. ИС 14

2007 г.

Оглавление

Задача 1 (№16)______________________________________________стр. 3

Задача 2 (№20)______________________________________________стр. 4

Задача 3 (№27)______________________________________________стр. 5

Задача 4 (№45)______________________________________________стр. 6

Задача 5 (№34)______________________________________________стр. 7

Задача 6 (№61)______________________________________________стр. 8

Задача 7 (№102)_____________________________________________стр. 9

Задача 8 (№123)_____________________________________________стр. 10

Задача 9 (№128)_____________________________________________стр. 11

Задача 10 (№64)______________________________________________стр. 12

Задача 11 (№121)_____________________________________________стр. 13

Задача 12 (№158)_____________________________________________стр. 14

Список литературы_________________________________________стр. 16

Задача №1(16)    

Написать программу, подсчитывающую общую сумму процентных выплат по кредиту.

Алгоритм:

Мы вводим с клавиатуры сумму кредита (S), проценты (P) и количество месяцев (N). Затем присваиваем переменной x (ежемесячная сумма выплаты кредита) значение выражения, формула которого задана в программе и общую сумму процентных выплат находим по формуле: a = xs.

Программа:

#include <conio.h>

#include <iostream.h>

#include <math.h>

int main()

{

  clrscr();

  double s,p,n;

  cout <<"Введите сумму кредита, проценты и количество месяцев: \n";

  cin >>s>>p>>n;

  double x,a;

  x=(s*(pow(1+(p/1200),n))*(p/1200)/(pow(1+(p/1200),n)-1))*n;

  a=x-s;

  cout <<"Общая сумма процентных выплат = "<<a;

  getch();

  return 0;

}

Исполнение

Введите сумму кредита, проценты и количество месяцев:

100 10 5

a = 2,513831

Задача №2 (20)

Дано трехзначное число. Требуется проверить, делится ли оно на 3. Известно, что число делится на 3, если на 3 делится сумма его цифр.

Алгоритм:

Вводим с клавиатуры некоторое  трехзначное число. Затем находим цифры этого числа путем нахождения остатка от деления этого числа на 10. Используем условный оператор if. Если остаток от деления суммы цифр числа на 3 равен 0, то выводим на экран «Делится», в противном случае «Не делится».

Программа:

#include <iostream.h>

#include <conio.h>

int main()

{

  int n,                                // заданное число

  ost,                                  // остаток

  sum;

  clrscr();

  int ed,des,sot;

  cout << "Введите трехзначное число:\n"; // приглашение к вводу

  cin >>n;                                                            //  вводим n 

  ed=n%10;                      // находим 3 цифру

  des=(n/10)%10;            // находим 2 цифру

  sot=n/100;                    // находим 1 цифру

  ost=(ed+des+sot)%3;

  if (ost==0) cout << "Делится \n";

  else cout << "Не делится \n";

  getch();

  return 0;

}

Исполнение:

Введите трехзначное число:

123

Делится

Задача №3 (27)   

Написать программу, печатающую таблицу значений функции

где x = 0.1, 0.2, … , 2.

Алгоритм:

В цикле for перебираем значения x и при данных значениях, находим значение р по вышеприведенной формуле.

Программа:

#include <iostream.h>

#include <conio.h>

#include <math.h>

int main()

{

  clrscr();

  double p,x;             

  cout << "p            x \n";

  for(x = 0.1; x < = 2; x + = 0.1){

    p=1/(x*sqrt(2*4*tan(1)))*(exp((-1/2)*pow(log(x)-1,2)));

  cout <<p<< "    "<<x<< "\n" ;

  }

 getch();

 return 0;

}

Исполнение:

     p                      x

2,833047             0.1

1,416524             0.2

0,944349 0.3

0,708262 0.4

0,566609 0.5

0,472175 0.6

0,404721 0.7

0,354131 0.8

0,314783 0.9

0,283305  1

0,25755 1.1

0,236087 1.2

0,217927 1.3

0,202361 1.4

0,18887 1.5

0,177065 1.6

0,16665 1.7

0,157392 1.8

0,149108 1.9

Задача №4 (45)   

Найти все целые корни уравнения  , где b,c,d – заданные целые числа, причем d 0.

Алгоритм:

Вводим коэффициенты уравнения. Известно, что целыми корнями уравнения могут быть только положительные и отрицательные делители коэффициента d. С помощью цикла for перебираем значения i.Если d делится без остатка на i, то i является делителем d, после этого находим y(i), если y(i)=0, то i – корень уравнения.

Программа:

# include <iostream.h>

# include <conio.h>

int main()

{

  clrscr();

  int b,c,d;                                                                         // вводимые коэффициенты 

  cout<< " Введите коэффициенты уравнения \n"; // приглашение к вводу

  cin>>b>>c>>d;                                                              // вводим b,c,d

  int i,y;                                                                             // параметры цикла

  for (i=1; i < = d; i++) {  // перебираем i

    if(d%i==0){

      y=i*i*i+b*i*i+c*i+d;

      if(y= =0)

  cout<< " Корни уравнения: \n"<<i;

      y=(-i)*(-i)*(-i)+b*(-i)*(-i)+c*(-i)+d;

      if(y= =0)

  cout<< " Корни уравнения: \n"<<-i;

      if(y!=0)

  cout<< "Корней нет: \n";

      }

  }

  getch();

  return 0;

}

Исполнение:

Введите коэффициенты уравнения:

1 2 3

Корней нет

Введите коэффициенты уравнения:

1 1 1

Корни уравнения: -1

Задача №5 (34)   

Написать программу, печатающую таблицу чисел Фибоначчи, номера которых не превышают заданного значения n.

Алгоритм:

Вводим с клавиатуры n, затем с помощью цикла while подсчитываем числа Фибоначчи пока счетчик числа меньше n.

Программа:

#include <iostream.h>

#include <conio.h>

int main()

{

 clrscr();

 int n;                                       // номер числа Фибоначчи

 cout << " Введите n>0 \n";

 cin >>n;

 cout << "i      fi \n";

 int f0=1,f1=1,f2;

 cout << 0<< "    "<< 1 << endl; // печатаем 2 известных числа

 cout << 1<< "    "<< 1 << endl;

 f2=f1+f0;                                      // задаем формулу, для подсчета чисел  

 int i=2;

while (i<n){ //пока счетчик числа меньше n выводим на экран таблицу чисел Фибоначчи

    cout << i<< "    "<< f2 << endl;

    f0=f1;

    f1=f2;

    f2=f1+f0; // подсчет числа

    i++;                                               // увеличение счетчика

  }

 getch();

 return 0;

}

Исполнение:

Введите n>0

4

i         fi    

0 1

1 1

2 2

3 3

Задача №6 (61)

В заданном двумерном массиве (матрице) 4*4 найти максимальный элемент, его номер строки и номер столбца.

Алгоритм:

Предполагаем, что первое число максимально. Затем с помощью цикла for перебираем элементы матрицы. Если [x][y] элемент больше первого, значит он максимальный, следовательно, его номер строки x, а номер столбца y.

Программа:

#include <iostream.h>

#include <conio.h>

int main()

{

 const int i=4;

 const int j=4;

 double r[i][j]={{150,9,7,6},     // двумерный массив

   {8,3,6,3},

   {12,2,13,14},

   {11,4,10,15},

  };

 int xmax;                                 // максимальный элемент

 int  nimax,njmax;                  // номер строки и номер столбца

 nimax=0;                                // зануляем номер строки и столбца перед циклом

 njmax=0;

 xmax=r[0][0]; // предполагаем, что первое число максимально

 int x,y;                                    // параметры цикла

 for(x=0; x < i; x ++) {           // перебор элементов матрицы

   for(y=0; y<j; y++) {

     if(r[x][y]>xmax) {

        xmax=r[x][y];

        nimax=x;

        njmax=y;

     }

   }

 }

// вывод матрицы по строкам

 cout<< " Дана матрица: \n";

 for(x=0; x<4; x++){

   for(y=0; y<4; y++)

     cout<<r[x][y]<< " ";

   cout<< "\n";

 }

 cout<< " \n Наибольший элемент матрицы: \n"<<xmax;

 cout<< "\n Номер строки: \n"<<nimax;

 cout<< "\n Номер столбца: \n"<<njmax;

 getch();

 return 0;

}

Исполнение:

Дана матрица:

150 9 7 6

 8  3 6 3

12 2 13 14

11 4 10 15

Наибольший элемент матрицы: 150

Номер строки: 0

Номер столбца: 0

Задача №7 (102)    

Написать программу, копирующую символы ввода и выходной поток с заменой символа табуляции на \t и каждой обратной наклонной черты на \\.

Алгоритм

Используем оператор switch для выбора одного из вариантов.

Программа

#include <iostream.h>

#include <conio.h>

int main()

{

 char a;

 while (!cin.eof()){  // пока не исчерпан входной поток

  a=cin.get();            // читаем символы из потока

  switch(a){    // используем оператор switch  для выбора одного из  вариантов                   

   case ' ': cout <<"\t"; break;// если прочтенный символ равен ‘ ’ то меняем его       на  \t

   case '/': cout <<"\\"; break;

   default: cout.put(a); // печать символа без изменений

  }

}

getch();

return 0;

}

Исполнение

Вводим:

///

На экране:

\\\

Задача №8 (123)

Написать макрос, вычисляющий минимальное значение двух величин и программу с его использованием.

Алгоритм

minimum(a,b) – макрос с параметрами, проверяющий больше ли первый аргумент второго. Если выражение a>b истинно, то печатаем, что b меньше a.

Программа

#include <iostream.h>

#include <conio.h>

#define minimum(a,b)((a)>(b)?(b):(a)) // макрос

void main()

{

 clrscr();

 int a,b;                                                    // 2 числа

 cout<< "\n  Введите a,b:\n";              // приглашение к вводу

 cin>>a>>b;                                            // вводим 2 числа

// вызываем функцию minimum

 cout<< "Минимальное из"<<a<< “ и ”<<b<< “ = ”<<minimum(a,b);  getch();

}

Исполнение

Введите a,b:

2 3

Минимальное из 2 и 3 = 2

Задача №9 (128)   

Напишите функцию strend(char s, char t), которая выдает 1, если строка t расположена в конце строки s, и 0 в противном случае.

Алгоритм

С помощью цикла for перебираем последние элементы строк, если они совпадают, то возвращаем 1, иначе возвращаем 0.

Программа

#include<iostream.h>

#include<conio.h>

#include<string.h>

int strend(char s[],char t[])

{

 clrscr();

 int is,it;               // последние элементы строк t и s

 int ns=strlen(s); // длина строк

 int nt=strlen(t);

 if(nt > ns)

   return 0;

 for(is = ns-1, it = nt-1; it > = 0; it--, is--) // перебираем последние элементы 

   if(s[is]!=t[it]) // если последние элементы не совпадают

      return 0;     // возвращаем 0

 return 1;

}

int main()

{

cout<< strend("abcdxyz","xyz");

getch();

return 0;

}

Исполнение

1

Задача №10 (64)

Напишите программу, меняющую местами столбцы s и k матрицы размером 4*4.

Алгоритм

Вводим с клавиатуры номера столбцов, которые нужно поменять местами. Затем с помощью цикла for перебираем элементы матрицы по строкам и меняем элементы r[i][k] и r[i][m] местами, используя  промежуточную переменную tmp.

Программа

#include <iostream.h>

#include <conio.h>

int main()

{

 int i;

 int j;

 double r[4][4]={{4,6,7,8},

       {2,4,3,5},

       {1,4,3,7},

       {8,5,3,5},

      };

  //вывод исходной матрицы

 cout<< " Дана матрица : \n";

 for(i=0; i < 4; i++){

   for(j=0; j < 4; j++)

     cout<<r[i][j]<< " ";

   cout<< "\n";

 }

 int m, k, tmp;

 cout<< "\n Введите номера столбцов k,m: \n";

 cin>> k >> m;

 for(i=0; i<4; i++){

   tmp=r[i][k];     // запоминаем элемент [i][k] матрицы r

   r[i][k]=r[i][m]; //присваиваем элементу [i][k] значение элемента [i][m]

   r[i][m]=tmp;     //присваиваем элементу [i][m] значение переменной  tmp

 }

  // печать конечной  матрицы

 cout<< "\n  Матрица: \n";

 for(i=0; i<4; i++){

   for(j=0; j<4; j++)

     cout<<r[i][j]<< " ";

   cout<< "\n";

 }

 getch();

 return 0;

}

Исполнение

Дана матрица

 

4   6   7   8

2   4   3   5

1   4   3   7

8   5   3   5

Введите k,m:

2 3  

Матрица

4   6   8   7

2   4   5   3

1   4   7   3

8   5   5   3

Задача №11 (121)   

Написать функцию escape(char s[], char t[]), копирующую строку t  в s и преобразующую символы типа новая строка и табуляция в «видимые последовательности символов» типа \n и \t .

Алгоритм

С помощью оператора switch осуществляем замену символов.

Программа

#include <iostream.h>

#include <conio.h>

#include <stdio.h>

#include <string.h>

void escape(char s[],char t[])

{    

 strcpy(s,t); // копируем строку t в  s 

   for(int i=0, j=0; t[i]!='\0'; i++)

     switch(t[i]){

   // замена символов

       case '\t':  s[j++]='\\'; s[j++]='t';break;

       case '\n':  s[j++]='\\'; s[j++]='n';break;

       default: s[j++]=t[i];

   }

}

void main()

{

 char s[500];

 char t[500];

 cout<< " Введите строку t \n";

 cin.getline(t,500);escape(s,t);

 cout<< " Конечная строка: \n"<< s;

 getch();

}

Исполнение

Введите строку t

    абвгде

Конечная строка

\tабвгде

Задача №12 (158)

Написать функцию, которая выводит на экран таблицу некоторой математической функции.

Алгоритм

Задаем число точек, затем находим расстояние между ними. Пока а увеличивается на это расстояние, находим значение функции в данных точках.

Программа

#include <iostream.h>

#include <conio.h>

#include <math.h>

double func(double (*f)(double),double a,double b,int n)   // задаем функцию

{

  double dx,fx;

  int i=0;            // счетчик цикла

  dx=(b-a)/(n-1); // расстояние между точками

  cout<< "a"<< "        fx";

  while((a+=dx) < =b){

    fx=f(a);

    cout<< "\n"<< a<< "        "<<fx;

    i++;

  }

  return 0;

}

void main()

{

  clrscr();

   cout<< " /n  значения функции log(x) при  5< x <10:\n";

   func(log,5,10,5);    // вызов функции

   getch();

 }

Исполнение

Значения функции log(x):

  а                   fx

6,25           1,832581

7,5             2,014903

8,75           2,169054

10 2,302585

Список литературы

1. В.Л. Тарасов  «Программирование на С++», Нижний Новгород

    издательство Нижегородского госуниверситета, 2006.




1. Семья и ее влияние на формирование личности ребенка
2. Тема- Отражение в учете резервного и добавочного капитала
3. Программное обеспечение
4. Тема- ldquo; Особенности финансового менеджмента в малом бизнесе
5. Сечение многогранников
6. Отношение к своему здоровью 58 классы Уважаемый ученик Ответь пожалуйста на вопросы анкеты
7. Психогенетические исследования темперамента
8. двигатель торговли] на самом деле довольно полно раскрывает основную маркетинговую функцию рекламы- передач
9. . Сентенция ~ короткое высказывание нравоучительного содержания.
10. Финансовая политика это часть социальноэкономической политики государства по обеспечению роста финансо.html
11. Автоматика и телемеханика Зразр
12. Лабораторна робота 5 ДОСЛІДЖЕННЯ ЦИФРОАНАЛОГОВОГО ПЕРЕТВОРЮВАЧА ІЗ ДВІЙКОВОЗВАЖЕНИМИ ОПОРАМИ М
13. Гомельский государственный медицинский колледж О Т Ч Е Т о прох
14. і Поняття- історія; Визвольна війна українського народу середини XVII ст
15. I Columbus ws mistken in thinking he hd reched Indi when ctully he hd not got even s fr s Indin
16. Учения дона Хуана [0
17. Социально-экономическое развитие Оренбургской области и Республики Башкортостан
18. НЕОКАНТИАНСТВО
19. Вивчення технології відновлення спрацьованих деталей машин електролітичним осадженням металу
20. вариантом приложения А