РефератыИнформатика, программированиеПрПрограммирование на языке Си++

Программирование на языке Си++

Федеральное агентство по образованию.


ГОУ ВПО Уральский Государственный Технический Университет – УПИ имени первого президента России Б. Н. Ельцина


Кафедра теплофизики и информатики в металлургии.


Дисциплина: Алгоритмизация и программирование.


Отчет


Лабораторная работа №1


"Знакомство с Си++. Выполнение программы простой структуры"


Вариант 9.


Преподаватель: Степура А. А.


Студент гр. Мт-190503: Свиткин В. Г.


Екатеринбург, 2009


Цель:
Знакомство со средой программирования, создание, отладка и выполнение простой программы, содержащей ввод/вывод информации и простейшие вычисления.


Задачи:
1) вычислить значение выражения при различных вещественных типах данных: float и double. Сравнить и объяснить полученные результаты.


2) Вычислить значения выражений. Объяснить полученные результаты.


Задание 1.
Вычислить значение выражения при различных вещественных типах данных (float и double). Вычисления следует выполнять с использованием промежуточных переменных. Сравнить и объяснить полученные результаты.


, при а=100, b=0.001


Текст программы:


#include <cstdlib>


#include <iostream>


#include <math.h>


int main(int argc, char *argv[]){


//Объявление переменных и исходные данные


floata1=100,b1=0.001,c1;


doublea2=100,b2=0.001,c2;


//Расчет значений выражения для типов floatи double


//Вывод результата с 15 знаками после запятой


printf(" Float: ");


c1=(pow(a1+b1,4.0)-(pow(a1,4)+4*pow(a1,3)*b1) )/ (6 * a1 *a1 *b1* b1+ 4*a1*b1*b1+pow(b1,4) );


printf("%.15f",c1);


printf("nDouble: ");


c2=(pow(a2+b2,4)-(pow(a2,4)+4*pow(a2,3)*b2) )/ (6*a2*a2*b2*b2 +4*a2*b2*b2 + pow(b2,4) );


printf("%.15f",c2);


system("PAUSE");


returnEXIT_SUCCESS; }


Результат выполнения программы:


Float: 0.993384063243866


Double: 0.993384430723606


Результаты совпадают с точностью до 6 знаков после запятой. Это происходит из-за того, что при вычислениях с типом float точность меньше, и при каждом вычислении накапливается погрешность. Вычисление с типом double точнее, чем с float.


Задание 2.
Вычислить значения выражений. Объяснить полученные результаты.


n+++m


m-- >n


n-- >m


Текст программы:


#include <cstdlib>


#include <iostream>


#include <math.h>


int main(int argc, char *argv[]){


int m=7,n=4,y;


printf("n=%d,m=%dn",n,m);


y=++n*++m;


printf("++n*++m=%dn",y);


printf("n=%d,m=%dn",n,m);


y=m++<n;


printf("m++<n=%dn",y);


printf("n=%d,m=%dn",n,m);


y=n++>m;


printf("n++>m=%dn",y);


printf("n=%d,m=%dn",n,m);


system("PAUSE");


return EXIT_SUCCESS; }


Результат выполнения программы:


n=4,m=7


++n*++m=40


n=5,m=8


m++<n=0


n=5,m=9


n++>m=0


n=6,m=9


Объяснение результата
.


При выполнении первого действия сначала переменные увеличиваются на единицу, затем умножаются: 5 * 7 =40. При выполнении второго действия сначала идет сравнение переменных, после этого переменная m увеличивается на единицу. При выполнении третьего действия сначала переменные сравниваются, затем переменная n увеличивается на единицу.


Федеральное агентство по образованию.


ГОУ ВПО Уральский Государственный Технический Университет – УПИ имени первого президента России Б. Н. Ельцина


Кафедра теплофизики и информатики в металлургии.


Дисциплина: Алгоритмизация и программирование.


Отчет


Лабораторная работа №2


"
Использование основных операторов языка Си "


Вариант 9.


Преподаватель: Степура А. А.


Студент гр. Мт-190503: Свиткин В. Г.


Екатеринбург, 2009


Цель:
Получение навыков в выборе и использовании операторов Си++; знакомство с итерационными процессами.


Задача:
Используя оператор цикла, найти сумму элементов, указанных в задании. Результат напечатать, снабдив соответствующим заголовком.


Найти сумму ряда с точностью e=10-4
, общий член которого



Текст
программы
:


#include <cstdlib>


#include <iostream>


#include <math.h>


#define E 10e-4 //точность


int main(int argc, char *argv[]){


int n=1;


double s=0,a=1;


do {a*=10.0/(n+1); //расчет следующего числа ряда по рекуррентной формуле


s+=a;n++;}


while(a>E); //выход из цикла при достижении нужной точности


printf("Суммаряда:%fn",s);


system("PAUSE");


return EXIT_SUCCESS;}


Результат выполнения программы:


Сумма ряда: 2201.546404


Федеральное агентство по образованию.


ГОУ ВПО Уральский Государственный Технический Университет – УПИ имени первого президента России Б. Н. Ельцина


Кафедра теплофизики и информатики в металлургии.


Дисциплина: Алгоритмизация и программирование.


Отчет


Лабораторная работа №3


"
Вычисление функций с использованием их разложения в степенной ряд "


Вариант 9.


Преподаватель: Степура А. А.


Студент гр. Мт-190503: Свиткин В. Г.


Екатеринбург, 2009


Цель:
Практика в организации итерационных и арифметических циклов.


Задача:
Для х изменяющегося от a до b с шагом (b-a)/k, где (k=10), вычислить функцию f(x), используя ее разложение в степенной ряд в двух случаях:


а) для заданного n;


б) для заданной точности e (e=0.0001).


Для сравнения найти точное значение функции.









Вариант 9

Функция:



Диапазон x:



Число слагаемых ряда:


n=3


Формула для вычисления суммы:




Текст
программы
:


#include <cstdlib>


#include <iostream>


#include <math.h>


#define A 0.1


#define B 0.8


#define E 10e-4


int main(int argc, char *argv[]){


float x,k=(B-A)/10.0,sn=0,se=0,t,y;


int i,j,n=3;


for(x=A;x<=B;x+=k){


sn=x;se=x;


for(i=1;i<=n;i++){


sn+=pow(x,4*i+1)/(4*i+1);};


j=1;


do {t=pow(x,4*j+1)/(4*j+1);


j++;se+=t;}


while(t>E);


y=log((1.0+x)/(1.0-x))/4.0 + atan(x)/2.0;


printf("x=%.2f SN=%f SE=%f Y=%fn",x,sn,se,y);}


system("PAUSE");


return EXIT_SUCCESS;}


Результат выполнения программы:


x=0.10 SN=0.100002 SE=0.100002 Y=0.100002


x=0.17 SN=0.170028 SE=0.170028 Y=0.170028


x=0.24 SN=0.240160 SE=0.240159 Y=0.240160


x=0.31 SN=0.310576 SE=0.310573 Y=0.310576


x=0.38 SN=0.381603 SE=0.381603 Y=0.381603


x=0.45 SN=0.453777 SE=0.453775 Y=0.453777


>

x=0.52 SN=0.527929 SE=0.527913 Y=0.527929


x=0.59 SN=0.605342 SE=0.605261 Y=0.605350


x=0.66 SN=0.688034 SE=0.688034 Y=0.688093


x=0.73 SN=0.779289 SE=0.779568 Y=0.779652


x=0.80 SN=0.884678 SE=0.886442 Y=0.886677


Федеральное агентство по образованию.


ГОУ ВПО Уральский Государственный Технический Университет – УПИ имени первого президента России Б. Н. Ельцина


Кафедра теплофизики и информатики в металлургии.


Дисциплина: Алгоритмизация и программирование.


Отчет


Лабораторная работа №4


"
Работа с одномерными массивами "


Вариант 9.


Преподаватель: Степура А. А.


Студент гр. Мт-190503: Свиткин В. Г.


Екатеринбург, 2009


Цель:
Получение навыков обработки одномерных массивов.


Задача:
(Вариант 9)


Сформировать одномерный массив целых чисел, используя датчик случайных чисел.


Распечатать полученный массив.


Удалить первый элемент с заданным значением.


Сдвинуть массив циклически на К элементов вправо.


Распечатать полученный массив.


Текст программы:


#include <cstdlib>


#include <iostream>


#include <time.h>


int main(int argc, char *argv[]){


int i,j,x,k,size;


srand(time(NULL));


int a[100];


int b[100];


printf("Enter size:>");


scanf("%d",&size);


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


a[i]=rand()%100;printf("%d ",a[i]);}


printf("nEnter value to destroy:>");scanf("%d",&x);


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


if(a[i]==x){


for(j=i;j<size-1;j++){


a[j]=a[j+1];}


size--;break;}}


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


printf("%d ",a[i]);}


printf("nEnter K:>");scanf("%d",&k);


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


if((i+k)<size) {b[i+k]=a[i];}else {b[i+k-size]=a[i];}}


printf("Result:n");


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


printf("%d ",b[i]);}


printf("n");


system("PAUSE");


return EXIT_SUCCESS;}


Результат выполнения программы:


Entersize:>10


50 17 89 6 52 0 60 30 44 21


Enter value to destroy:>89


50 17 6 52 0 60 30 44 21


Enter K:>3


Result:


30 44 21 50 17 6 52 0 60


Федеральное агентство по образованию.


ГОУ ВПО Уральский Государственный Технический Университет – УПИ имени первого президента России Б. Н. Ельцина


Кафедра теплофизики и информатики в металлургии.


Дисциплина: Алгоритмизация и программирование.


Отчет


Лабораторная работа №5


"
Функции и массивы"


Вариант 9.


Преподаватель: Степура А. А.


Студент гр. Мт-190503: Свиткин В. Г.


Екатеринбург, 2009


Цель:
Организовать обработку массивов с использованием функций, научиться передавать массивы как параметры функций.


Задача:
Используя функции, решить указанную задачу. Массив должен передаваться в функцию как параметр:


Вариант 9. Написать функцию для вычисления суммы элементов квадратной матрицы, которые расположены ниже главной диагонали. С ее помощью найти максимальное значение такой суммы в n матрицах.


Текст
программы
:


#include <cstdlib>


#include <iostream>


#include <time.h>


#include <math.h>


#define SIZE 5


static int a[SIZE][SIZE];


void CreateArray(int a[SIZE][SIZE]){


int i,j;


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


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


a[i][j]=rand()%100;}}}


void PrintArray(int a[SIZE][SIZE]){


int i,j;


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


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


printf("%d ",a[i][j]);}


printf("n");}}


int MatrixSum1(int m[SIZE][SIZE]){


int i,j,s=0;


for(i=1;i<SIZE;i++){


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


s+=m[i][j];}}


return s;}


int main(int argc, char *argv[]){


ints=0,i,t,N;


N=atoi(argv[1]); //количество матриц N вводится в параметре командной строки


srand(time(NULL));


for(i=1;i<=N;i++){


CreateArray(a);


PrintArray(a);


t=MatrixSum1(a);


printf("nSumm:%dn ",t);


if(t>s){s=t;}}


printf("nMaximum %dn",s);


system("PAUSE");


return EXIT_SUCCESS;}


Результат выполнения программы (
N
=3):


0 72 91 65 7


59 23 13 17 77


55 16 74 40 85


18 56 19 89 63


20 87 49 89 35


Summ:468


30 92 77 90 68


40 72 79 7 91


16 46 34 78 0


9 7 57 33 60


5 31 2 71 84


Summ:284


47 22 56 36 57


19 27 1 5 75


25 67 52 35 73


90 0 34 9 78


99 27 48 33 59


Summ:442


Maximum 468


Федеральное агентство по образованию.


ГОУ ВПО Уральский Государственный Технический Университет – УПИ имени первого президента России Б. Н. Ельцина


Кафедра теплофизики и информатики в металлургии.


Дисциплина: Алгоритмизация и программирование.


Отчет


Лабораторная работа №6


"
Строки"


Вариант 9.


Преподаватель: Степура А. А.


Студент гр. Мт-190503: Свиткин В. Г.


Екатеринбург, 2009


Цель:
Изучение символьных и строковых переменных и способов их обработки в языке Си.


Задача:
Задана строка, состоящая из символов. Символы объединяются в слова. Слова друг от друга отделяются одним или несколькими пробелами. В конце текста ставится точка. Текст содержит не более 255 символов. Выполнить ввод строки, используя функцию Gets(s) и обработку строки в соответствии со своим вариантом.


Вариант 9
. Преобразовать строку так, чтобы все слова в ней стали идентификаторами, слова состоящие только из цифр - удалить.


Текст
программы
:


#include <cstdlib>


#include <iostream>


#include <string.h>


void ClearString(char string[255]){


int i;


for(i=0;i<255;i++){string[i]='0';}}


int main(int argc, char *argv[]){


char str[255],s[255]="",t[255]="",c;bool r;


int i=0,j=0;


printf("Enter text>"); gets(s);


strcpy(str,"");


do{r=false;


do{c=s[i];i++;


if(c>'9'){r=true;}


if(c==' '||c=='.'||c=='0'){


if(t[0]>'9'){if(r){


strcat(str,t);strcat(str," ");}


} t[j]='0';


j=0;ClearString(t);break;}


else {t[j]=c;j++;}


}while(1);


}while(c!='.'&&c!='0');


printf("Right identifiers:n");


puts(str);


system("PAUSE");


return EXIT_SUCCESS;}


Исходные данные:


A1 1FNumber 111 b 123c5 ffft.


Результат выполнения программы:


Entertext> A1 1FNumber 111 b 123c5 ffft.


Right identifiers:


A1 Number b fff t

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Программирование на языке Си++

Слов:1431
Символов:18442
Размер:36.02 Кб.