Форум программистов, компьютерный форум CyberForum.ru

Объединение двух програм - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Матрица (Подсчитать количество положительных элементов в каждой строке) http://www.cyberforum.ru/cpp-beginners/thread1032318.html
Задача Подсчитать количество положительных элементов в каждой строке матриц A і B. Не знаю как это сделать, подскажите пожалуйста, вот начало: #include <iostream> #include <iomanip> using namespace std; void main()
C++ Открытие файлов по возрастающий Пишу программу, и возникла необходимость считывать файлы по порядку, 1.txt 2.txt и т.д. имя файла вычисляю подобным так: for(int i=1;i<=40;i++){ cout<<i+'.txt'; } пробовал и cout<<char(i)+'.txt'; и cout<<int(i)+'.txt'; ничего не выходит, в выводе или символы или только большие числа. Хелп http://www.cyberforum.ru/cpp-beginners/thread1032317.html
C++ Курсовик по С++
Тема курсовика диф. уравнения. Скиньте пожалуйста ссылку на теорию по этому вопросу и дайте пару советов, как делать :) смысл в том, что на вход идет уравнение из *.json, подставляем в вычисления и опять записываем в *.json JSON-парсер мы пишем на парах с преподом, поэтому нужен только алгоритм решения диф. уравнений (собственно теория) и как бы Вы сделали входное уравнение, точнее как бы...
Какой тип использовать? C++
В какой тип нужно преобразовать int, что бы вывести через TextOut? Пытался через wchar_t, потом пробовал через TextOutA и через char, но считает 9 а потом буквами, хз какой СИ. вот пример char stt2 ; itoa(gr2,stt2,20); TextOutA(hDC,400,70,stt2,3);
C++ Заполнение массива случайными числами, сумма цифр которых меньше 7 http://www.cyberforum.ru/cpp-beginners/thread1032310.html
Ярославна Используя генератор случайных чисел, заполнить массив из 20 элементов целочисленными значениями в диапазоне , сумма цифр которых меньше 7. Прототип пользовательской функции: int genprint(int*, const int, const int, const int); параметры функции: массив, число элементов массива, левая и правая границы интервала случайных чисел, верхняя граница суммы чисел. Функция возвращает общее...
C++ Решение двух задач Здравствуйте. Помогите в решении задач с использованием switch. 3.Дано целое число к (1 < к <365). Определить, каким днем недели (по¬недельником, вторником,..., субботой или воскресеньем) является к-н день невисокосного года, в котором 1 января: а) четверг; 4.Дата некоторого дня характеризуется двумя натуральными числами: т (порядковый номер месяца) и п (число). По заданным п и т определить:... подробнее

Показать сообщение отдельно
Кирилл20
Сообщений: n/a
07.12.2013, 20:12     Объединение двух програм
Здравствуйте, нужно объединить 2 программы в одну:
Программа 1:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <gl\glut.h>
#include <conio.h>

GLint Width = 520, Height = 520;
double yMax1, yMax2;
double func1(double t); //прототип функции u=1
double func2(double t); //прототип функции u=0,2t
void difur(); //прототип функции решения диф.уровнения


void glWrite(float x, float y, int *font, char text[256], int kls) {
int i; //счетчик
glRasterPos2f(x, y);
for (i=0; i<kls; i++)
glutBitmapCharacter(font, (int)text[i]);
}

void Display(void) //основная функция рисования граф.окна
{
int i;
char buf [20];
glClearColor(0, 0, 0, 1); //стираем окно
glClear(GL_COLOR_BUFFER_BIT); //стираем буфер
glColor3ub(150,150,150);
glBegin(GL_LINES); //рисуем координатную сетку
for (i=20; i<=520; i+=100)
{
glVertex2i(i, 20);
glVertex2i(i, 520);
}
for (i=20; i<=520; i+=100)
{
glVertex2i(20, i);
glVertex2i(520, i);
}
glEnd();
glPointSize(3); //толщина линий графика
glBegin(GL_POINTS);
difur();
glEnd();
glColor3f(1,1,1); //рисуем подписи осей и весь остальной текст
glWrite(10, 10, (int*)GLUT_BITMAP_8_BY_13, (char*)"0", 1);
glWrite(510, 10, (int*)GLUT_BITMAP_8_BY_13, (char*)"t", 1);
glColor3f(0,0,1);
glWrite(30, 500, (int*)GLUT_BITMAP_8_BY_13, (char*)"Y(U=1)", 6);
glColor3f(1,0,0);
glWrite(30, 480, (int*)GLUT_BITMAP_8_BY_13, (char*)"Y(U=0.2t)", 9);
glColor3f(0,0,1);
sprintf (buf, "%f", yMax1);
glWrite(320, 80, (int*)GLUT_BITMAP_8_BY_13, "Y(U=1)max= ", 11);
glWrite(430, 80, (int*)GLUT_BITMAP_8_BY_13, buf, strlen(buf));
sprintf (buf, "%f", yMax2);
glColor3f(1,0,0);
glWrite(320, 60, (int*)GLUT_BITMAP_8_BY_13, "Y(U=0.2t)max= ", 14);
glWrite(430, 60, (int*)GLUT_BITMAP_8_BY_13, buf, strlen(buf));
glColor3f(1,1,1);
glWrite(320, 40, (int*)GLUT_BITMAP_8_BY_13, "tk= 25.0000", 11);
glFinish();
}


void Reshape(GLint w, GLint h)
{
Width = w; Height = h;
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, w, 0, h, -1.0, 1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glutReshapeWindow(520, 520); //размер окна 520 на 520
}


void Keyboard( unsigned char key, int x, int y ) //обработка нажатых клавиш
{
#define ESCAPE '\033'
if( key == ESCAPE ) {exit(0);} //если ESC -выход
}


int main(int argc, char* argv[]) //вход в программу
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB); //цветной режим окна
glutInitWindowSize(Width, Height);
glutCreateWindow("");
glutDisplayFunc(Display);
glutReshapeFunc(Reshape);
glutKeyboardFunc(Keyboard);
glutMainLoop();
return 0;
}




void difur()
{
int i,j; //итераторы
int poryadok = 4; //порядок уровнения
FILE *f1; //указатель на файлы для записи
FILE *f2;
double sX, sY; //масштаб
double aKoef[] = {1, 16, 18, 10, 5}; //коэффициенты левой части
double bKoef[] = {0, 0, 7, 0, 5}; //правой частин
double sumForKSys = 0;
double tMin = 0.0, tMax = 25.0, step = 0.01, t;
double *kSyst = (double*) malloc ((poryadok+1)*sizeof(double));
double *y = (double*) calloc (poryadok, sizeof(double));
double **KY = (double**) malloc (4*sizeof(double*));
for (i=0; i<4; i++)
KY[i] = (double*) malloc (poryadok*sizeof(double));

f1 = fopen("u(t)=1.dat", "w");
f2 = fopen("u(t)=0.2t.dat", "w");
sX=500/tMax;
sY=500/5;

kSyst[0]=bKoef[0];
for (i=0; i<poryadok+1; i++)
{
sumForKSys = 0;
for (j=0; j<i;j++) sumForKSys += aKoef[i-j]*kSyst[j];
kSyst[i]=bKoef[i]-sumForKSys;
}
yMax1 = yMax2 = 0;
for (i=0; i<poryadok; i++) y[i]=0.0;
for (t = tMin; t<= tMax+step; t+=step)
{
KY[0][0] = step*(y[1]+kSyst[1]*func1(t));
KY[0][1] = step*(y[2]+kSyst[2]*func1(t));
KY[0][2] = step*(y[3]+kSyst[3]*func1(t));
KY[0][3] = step*(-aKoef[1]*y[3]-aKoef[2]*y[2]-aKoef[3]*y[1]-aKoef[4]*y[0]+kSyst[4]*func1(t));

KY[1][0] = step*(y[1]+KY[0][1]/2+kSyst[1]*func1(t));
KY[1][1] = step*(y[2]+KY[0][2]/2+kSyst[2]*func1(t));
KY[1][2] = step*(y[3]+KY[0][3]/2+kSyst[3]*func1(t));
KY[1][3] = step*(-aKoef[1]*(y[3]+KY[0][3]/2)-aKoef[2]*(y[2]+KY[0][2]/2)-aKoef[3]*(y[1]+KY[0][1]/2)-aKoef[4]*(y[0]+KY[0][0]/2)+kSyst[4]*func1(t));

KY[2][0] = step*(y[1]+KY[1][1]/2+kSyst[1]*func1(t));
KY[2][1] = step*(y[2]+KY[1][2]/2+kSyst[2]*func1(t));
KY[2][2] = step*(y[3]+KY[1][3]/2+kSyst[3]*func1(t));
KY[2][3] = step*(-aKoef[1]*(y[3]+KY[1][3]/2)-aKoef[2]*(y[2]+KY[1][2]/2)-aKoef[3]*(y[1]+KY[1][1]/2)-aKoef[4]*(y[0]+KY[1][0]/2)+kSyst[4]*func1(t));

KY[3][0] = step*(y[1]+KY[2][1]+kSyst[1]*func1(t));
KY[3][1] = step*(y[2]+KY[2][2]+kSyst[2]*func1(t));
KY[3][2] = step*(y[3]+KY[2][3]+kSyst[3]*func1(t));
KY[3][3] = step*(-aKoef[1]*(y[3]+KY[2][3])-aKoef[2]*(y[2]+KY[2][2])-aKoef[3]*(y[1]+KY[2][1])-aKoef[4]*(y[0]+KY[2][0])+kSyst[4]*func1(t));

y[0] += (KY[0][0]+2*KY[1][0]+2*KY[2][0]+KY[3][0])/6;
y[1] += (KY[0][1]+2*KY[1][1]+2*KY[2][1]+KY[3][1])/6;
y[2] += (KY[0][2]+2*KY[1][2]+2*KY[2][2]+KY[3][2])/6;
y[3] += (KY[0][3]+2*KY[1][3]+2*KY[2][3]+KY[3][3])/6;

if (yMax1<y[0]) yMax1=y[0]; //определяем максимальные значения
fprintf(f1, "u(t)=1\tt= %f\ty= %f \n", t, y[0]);
glColor3f(0, 0, 1); //синий цвет
glVertex2f((float)t*sX+20,(float)y[0]*sY+20);
}

for (i=0; i<poryadok; i++) y[i]=0.0; //обнуляем начальные условия
for (t = tMin; t<= tMax+step; t+=step) //считаем другое диф.уровнение
{
KY[0][0] = step*(y[1]+kSyst[1]*func2(t));
KY[0][1] = step*(y[2]+kSyst[2]*func2(t));
KY[0][2] = step*(y[3]+kSyst[3]*func2(t));
KY[0][3] = step*(-aKoef[1]*y[3]-aKoef[2]*y[2]-aKoef[3]*y[1]-aKoef[4]*y[0]+kSyst[4]*func2(t));

KY[1][0] = step*(y[1]+KY[0][1]/2+kSyst[1]*func2(t));
KY[1][1] = step*(y[2]+KY[0][2]/2+kSyst[2]*func2(t));
KY[1][2] = step*(y[3]+KY[0][3]/2+kSyst[3]*func2(t));
KY[1][3] = step*(-aKoef[1]*(y[3]+KY[0][3]/2)-aKoef[2]*(y[2]+KY[0][2]/2)-aKoef[3]*(y[1]+KY[0][1]/2)-aKoef[4]*(y[0]+KY[0][0]/2)+kSyst[4]*func2(t));

KY[2][0] = step*(y[1]+KY[1][1]/2+kSyst[1]*func2(t));
KY[2][1] = step*(y[2]+KY[1][2]/2+kSyst[2]*func2(t));
KY[2][2] = step*(y[3]+KY[1][3]/2+kSyst[3]*func2(t));
KY[2][3] = step*(-aKoef[1]*(y[3]+KY[1][3]/2)-aKoef[2]*(y[2]+KY[1][2]/2)-aKoef[3]*(y[1]+KY[1][1]/2)-aKoef[4]*(y[0]+KY[1][0]/2)+kSyst[4]*func2(t));

KY[3][0] = step*(y[1]+KY[2][1]+kSyst[1]*func2(t));
KY[3][1] = step*(y[2]+KY[2][2]+kSyst[2]*func2(t));
KY[3][2] = step*(y[3]+KY[2][3]+kSyst[3]*func2(t));
KY[3][3] = step*(-aKoef[1]*(y[3]+KY[2][3])-aKoef[2]*(y[2]+KY[2][2])-aKoef[3]*(y[1]+KY[2][1])-aKoef[4]*(y[0]+KY[2][0])+kSyst[4]*func2(t));

y[0] += (KY[0][0]+2*KY[1][0]+2*KY[2][0]+KY[3][0])/6;
y[1] += (KY[0][1]+2*KY[1][1]+2*KY[2][1]+KY[3][1])/6;
y[2] += (KY[0][2]+2*KY[1][2]+2*KY[2][2]+KY[3][2])/6;
y[3] += (KY[0][3]+2*KY[1][3]+2*KY[2][3]+KY[3][3])/6;

if (yMax2<y[0]) yMax2=y[0];
fprintf(f2, "u(t)=0.2t\tt= %f\ty= %f \n", t, y[0]);
glColor3f(1, 0, 0); //красный цвет
glVertex2f((float)t*sX+20,(float)y[0]*sY+20);
}

fclose(f1);
fclose(f2);
free(kSyst);
free(y);
for (i=0; i<4; i++) free(KY[i]);
free(KY);
return;
}
double func1(double t) { return 1; }
double func2(double t) {return 0.2*t; }


Программа 2:

#include <iostream>
#include <Windows.h>
#include <time.h>
#include <iomanip>

using namespace std;

void filling(int ** arr, int n);//Заполнение матрицы
void Usechenie_ch(int** arr, int n);//Робота с матрицей, которая имеет парное количество элементов
void Usechenie_nech(int** arr, int n);//Робота с матрицей, которая имеет не парное количество элементов
void copy(int** arr,int **arrB, int n);//Создание из матрицы А матрицу В
void show(int** ar,int n);//Вывод матрицы на экран

int main()
{

srand(time(0));

int n;
cout<<"Vvedit rozmir matruzi ->";
cin>>n;
if(n<0||n>10)
{
cout<< "Ne virnuy rozmir matruzi"<<endl;
system("pause");
exit(0);
}

// Определение массива:
int** arr = new int* [n];
for(int i = 0; i < n; i++)
{
arr[i] = new int [n];
}
int** arrB = new int* [n];
for(int i = 0; i < n; i++)
{
arrB[i] = new int [n];
}

filling(arr,n);//Заполнение массива
copy(arr,arrB, n);//Копирование в массив В
cout<<"Matruza A :"<<endl;
show(arr,n);//Вывод матрицы А
cout<<"Vidsichena matruza: "<<endl;
if(n%2)//Определяем парность / не парность матрицы
Usechenie_ch(arrB,n);//Обработка як парную матрицу
else
Usechenie_nech(arrB,n);//Обработка як не парную матрицу
cout<<endl;
cout<<"Matruza B :"<<endl;
show(arrB,n);//Вывод матрицы B, с заменами Bij на Aij;


//Освобождение памяти:
for(int i = 0; i < n; i++)
{
delete [] arr[i];
}
delete [] arr;

for(int i = 0; i < n; i++)
{
delete [] arrB[i];
}
delete [] arrB;
system("pause");
return 0;
}

void filling(int ** arr, int n)
{
// Заполнение массива:
for(int i = 0; i < n; i++)
{
for(int k = 0; k < n; k++)
{
arr[i][k] = rand()%70;
}
}
}

void copy(int** arr,int **arrB, int n)
{
for(int i=0;i<n;i++)
{
for(int k=0;k<n;k++)
{
arrB[i][k]=arr[i][k];
}
}
}

void Usechenie_ch(int** arr, int n)
{
bool flag=true;
int max;
int x=0,y=0;//Координаты максимального элемента массива
int prsech_par_diag=(n-2)/2;//Строка в которой пересекаются диагонали для парной матрицы
int stolb_prsech_diag=n/2;////Столбец в котором пересекаются диагонали
//Вывод срезанного массива по параллельным главной и побочной диагоналям:
cout<<endl;
for(int i = 0; i < n; i++)
{
for(int k = 0; k < n; k++)
{
if(i>prsech_par_diag&&(i+1==k)||i>=prsech_par_diag&&(k>=(n-i-2))&&(i+1>=k))//Условие отсечения элементов, которые не попали в нижний треугольник
{
cout<<setw(5)<<arr[i][k];
if(flag)
{
max=arr[i][k];
flag=false;
}
else
{
if(arr[i][k]>max)
{
max=arr[i][k];
x=i;
y=k;
}
}
}
else cout<<setw(5)<<"*";
}
cout<<endl<<endl;
}

//Меняем местами(a_ij с b_ij) элемент, на котором пересекаются диагонали, с максимальным в средине треугольника
cout<<"Maksumalnuy element = "<<max<<endl;
int tmp;
tmp=arr[prsech_par_diag][stolb_prsech_diag];
arr[prsech_par_diag][stolb_prsech_diag]=max;
arr[x][y]=tmp;


}

void show(int** ar,int n)
{
for(int i=0;i<n;i++)
{
for(int k=0;k<n;k++)
{
cout<<setw(5)<<ar[i][k];
}
cout<<endl<<endl;
}
}

void Usechenie_nech(int** arr, int n)
{
bool flag=true;
int max;
int x=0,y=0;//Координаты максимального элемента массива
int prsech_par_diag=(n-2)/2-1;//Строка, в которой пересекаются диагонали для не парной матрицы
int stolb_prsech_diag=n/2;////Столбец, в котором пересекаются диагонали
//Вывод массива отсечённого по параллельным главной и побочной диагоналям:
cout<<endl;
for(int i = 0; i < n; i++)
{
for(int k = 0; k < n; k++)
{
if(i>prsech_par_diag&&(i+2==k)||i>=prsech_par_diag&&(k>=(n-i-2))&&(i+2>=k))//Условие отсечения элементов, которые не попали в треугольник
{
cout<<setw(5)<<arr[i][k];
if(flag)
{
max=arr[i][k];
flag=false;
}
else
{
if(arr[i][k]>max)
{
max=arr[i][k];
x=i;
y=k;
}
}
}
else cout<<setw(5)<<"*";
}
cout<<endl<<endl;
}

//Меняем местами(a_ij с b_ij) элемент, на котором пересекаются диагонали, с максимальным в средине треугольника
cout<<"Maksumalnuy element = "<<max<<endl;
int tmp;
tmp=arr[prsech_par_diag][stolb_prsech_diag];
arr[prsech_par_diag][stolb_prsech_diag]=max;
arr[x][y]=tmp;
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru