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

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 28.12.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. стать интересной для него целью
5. Понятие функции типология политического лидерства.html
6. Знание ~ сила отражающего практическую направленность науки; прогностическая функция 3
7.  Походження і функції банків 2
8. тема методов управления Выполнил- Студент группы ЗИО112 Кокорин Роман Проверил- Преподавате
9. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата філологічних наук Доне
10. Реферат Особенности производства картонной упаковки
11. евроинтеграторам
12. Роль карьеры как основного ресурса должностного самоуправления руководителя
13.  Введение3 2
14. Склонность к саморазрушению
15. Теоретические и правовые аспекты организации и учета капитала кредитной организации
16. Виды сделок
17. вопреки распространенному мнению сторонников принципиальной производности немотивированности языкового
18. Выполнил студент группы Проверил-
19. ЛАБОРАТОРНАЯ РАБОТА 8 СКЛЕИВАНИЕ ЛИНЗ Цель работы изучение одного из способов соединения деталей межд
20. Главными критериями оптимального выбора конструкции являются высокая производительность экономичность