infawydrukkolos, Semestr 2, INFORMATYKA I


int wyznacznikMacierzy(int **macierz,int A)

{

int i,j,m,n,c;

int s=1;

int wyznacznik;

int **temp=NEW(0,A,A);

if(A==1)

wyznacznik=macierz[0][0];

if(A==2)

wyznacznik=(macierz[0][0]*macierz[1][1])-(macierz[1][0]*macierz[0][1]);

else{

wyznacznik=0;

for(c=0;c<A;c++)

{

m=0;

n=0;

for(i=0;i<A;i++)

{

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

{

temp[i][j]=0;

if(i!=0 && j!=c)

{

temp[m][n]=macierz[i][j];

if(n<(A-2))

n++;

else

{

n=0;

m++;

}

}

}

}

wyznacznik=wyznacznik+s*(macierz[0][c]*wyznacznikMacierzy(temp,A-1));

s=-1*s;

}

}

return wyznacznik;

}

void main()

{ srand((unsigned)time(NULL));

int n=3;

int** M=NEW(0,n,n);

for(int i=0;i<n;i++)

for(int j=0;j<n;j++)

M[i][j]=random(1,9);

display("M",M,n,n);

double wyznacznikos=wyznacznikMacierzy(M,n);

cout<<"\n wyznacznik= "<<wyznacznikos;

}

Koniecccccccccccccccc

kratownica#include "bibs.h"

const int roz=1000;

char katalog[roz]="D:\\Dokumenty\\kratownica_infa\\projekt\\projekt\\";

char plik[roz];

fstream wczytywanie,zapisywanie;

void main()

{

//Definiowanie podstawowych zmiennych do wczytywania danych z plików txt

int M; //liczba prętów kratownicy

int N; //liczba węzłów

int Z; //liczba odebranych stopni swobody

strcpy_s(plik,katalog);

strcat_s(plik,"alok.txt");

wczytywanie.open(plik,ios::in);

wczytywanie>>M; //wczytujemy liczbe prętów z 1. wiersza alok.txt

int** ALOK=NEW(0,M,2); //utworzenie macierzy alokacji ALOKmx2

for(int i=0;i<M;i++)

for(int j=0;j<2;j++)

wczytywanie>>ALOK[i][j];

wczytywanie.close();

display("ALOK",ALOK,M,2); //wyświetlenie macierzy ALOK

strcpy_s(plik,katalog);

strcat_s(plik,"boundary.txt");

wczytywanie.open(plik,ios::in);

wczytywanie>>Z; //wczytujemy ile jest odebranych st. swobody z 1. wiersza boundary.txt

int* R=NEW(0,Z); //wektor Rz z numerami odebranych st. swobody

for(int i=0;i<Z;i++)

wczytywanie>>R[i];

wczytywanie.close();

quick_sort(R,Z); // sortowanie wektora R od najmniejszej do największej wartości

display("R",R,Z); //wyświetlenie wektora R

strcpy_s(plik,katalog);

strcat_s(plik,"cart.txt");

wczytywanie.open(plik,ios::in);

wczytywanie>>N; // wczytywanie liczby węzłów

double** X=NEW(0.0,N,2); // macierz Xnx2 ze składowymi położen wszystkich prętów

for(int i=0;i<N;i++)

for(int j=0;j<2;j++)

wczytywanie>>X[i][j];

wczytywanie.close();

display("X",X,N,2); //wyświetlanie macierzy X ze składowymi położen prętów

int T=2*N; //zmienna pomocnicza

strcpy_s(plik,katalog);

strcat_s(plik,"force.txt");

wczytywanie.open(plik,ios::in);

double* Q=NEW(0.0,T); //wektor Qt zawierający składowe pionowe(Y) i poziome (X) sił i reakcji

for(int i=0;i<T;i++)

wczytywanie>>Q[i];

wczytywanie.close();

display("Q",Q,T); //wyświetlenie wektora Q sił i reakcji

double* L=NEW(0.0,M); //wektor Lm z długościami prętów

double** B=NEW(0.0,M,T); //macierz Bmxt kosinusów kierunkowych prętów

for ( int a=0;a<M;a++) //zerowanie macierzy B

for (int b=0;b<T;b++)

B[a][b]=0;

for(int p=0; p<M; p++)

{

int i0=ALOK[p][0]; //numery globalne końców prętów (1. kolumna z ALOK)

int i1=ALOK[p][1]; //numery globalne końców prętów (2. kolumna z ALOK)

double dX=X[i1][0]-X[i0][0]; //rzut pręta na oś X

double dY=X[i1][1]-X[i0][1]; //rzut pręta na oś Y

L[p]=sqrt(pow(dX,2)+pow(dY,2)); // obliczenie długości pręta

double alfa=dX/L[p]; // kosinus kierunkowy

double beta=dY/L[p]; // kosinus kierunkowy

B[p][2*i0]=-alfa;

B[p][2*i0+1]=-beta;

B[p][2*i1]=alfa;

B[p][2*i1+1]=beta; // 4 składowe macierzy B w wierszu p

}

display("L",L,M);

display("B",B,M,T); //wyświetlenie macierzy Btxm i wektora Lm

double** D=NEW(0.0,T,M); //Dtxm - Transponowana macierz B

for(int i=0;i<T;i++)

for(int j=0;j<M;j++)

D[i][j]=B[j][i]; //transpozycja

display ("D",D,T,M); //wyświetlenie macierz Dbxt

//Definiowanie kolejnych macierzy i wektorów

//podział macierzy D na dwie części

double** Dg=NEW(0.0,T-Z,M); //macierz górna

double** Dd=NEW(0.0,Z,M); //macierz dolna

double* F=NEW(0.0,M); //wektor poszukiwanych sił w prętach, który obliczamy

double* Qg=NEW(0.0,T-Z); //wektor z węzłami w których nie ma reakcji

double* Qd=NEW(0.0,Z); // wektor,który obliczamy z reakcjami w węzłach

//pomocnicze zmienne-liczniki

int wd=0;

int wg=0;

for (int s=0;s<T;s++)

{

if (s==R[wd]) //jeżeli s jest elem. wektora Rz(nr st. swob.)

{

for(int i=0;i<M;i++)

Dd[wd][i]=D[s][i]; // wiersz s macierzy Dtxm zapisujemy do Dd

wd++;

}

else

{

Qg[wg]=Q[s]; //składową s wektora Qt zapisujemy do Qg

for (int i=0;i<M;i++)

Dg[wg][i]=D[s][i]; //wiersz s macierz Dtxm zapisujemy do Dg

wg++;

}

}

if (T-Z==M) //sprawdzenie czy macierz Dd jest kwadratowa

{

for (int i=0;i<M;i++)

gauss(Dg,Qg,F,M); //obliczenie sił F w prętach

for (int i=0;i<Z;i++)

for(int j=0;j<M;j++)

Qd[i]+=Dd[i][j]*F[j]; // obliczenie składowych reakcji Qd z zależności Dd*F=Qd

}

for(int i=0;i<M;i++)

cout<<"\nSila w precie "<<i<<" : F["<<i<<"]="<<F[i];

//wyświetlenie wyników na ekranie

for(int i=0;i<Z;i++)

{

cout<<"\nReakcja w wezle " <<R[i]/2;

if(!(R[i]%2)) //bo bylo i=2i(+1) przy alokacji

cout<<" w kierunku poziomej osi x - stopien swobody "<<R[i]<<" : Qd["<<i<<"]="<<Qd[i];

else

{

cout<<" w kirerunku pionowej osi y";

cout<<" - stopien swobody "<<R[i]<<" : Qd["<<i<<"]="<<Qd[i];

}

}

//zapisywanie wyników do plików

strcpy_s(plik,katalog);

strcat_s(plik,"sily.txt");

zapisywanie.open(plik,ios::out);

//zapisywanie sił

for (int i=0;i<M;i++)

{

zapisywanie<<"F["<<i<<"] = "<<F[i]<<endl;

}

zapisywanie.close();

//Zapisywanie reakcji

strcpy_s(plik,katalog);

strcat_s(plik,"reakcje.txt");

zapisywanie.open(plik,ios::out);

for (int i=0;i<Z;i++)

{

zapisywanie<<Qd[i]<<endl;

}

zapisywanie.close();

DEL(ALOK);

DEL(R);

DEL(X);

DEL(Q);

DEL(L);

DEL(B);

DEL(D);

DEL(Dg);

DEL(Dd);

DEL(Qg);

DEL(Qd);

DEL(F);

cout<<endl;

}

MACIERZ TRANSPONOWANA

for(i=0; i<n; i++)

{

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

B[i][j]=A[j][i];

cout<<endl;

}

cout<<"Macierz transponowana to \n";

for(i=0; i<m; i++)

{

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

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

cout<<endl;

}

ZAPISYWANIE:

Void main

{

fstream zapis;

zapis.open("C:\\Users\\Pawel\\Desktop\\pawel\\proba\\proba\\runge.txt",ios::out);

for(int i=0;i<n;i++)

zapis<<X[i]<<" "<<U[i]<<endl;

zapis.close();

}

Mnożenie macierzy:

Kod:

for(int i=0;i<n;i++)

for(int a=0;a<n;a++)

for(int j=0;j<n;j++) t3[i][a]+= t[i][j]*t2[j][a];

gdzie:
*t1, t2 - macierze wejściowe
*t3 - macierz wyjściowa...
*n - wymiar macierzy, dałem warunek, że macierze są kwadratowe, jeśli nie, popraw w jednym for n na jakieś, powiedzmy m (drugi wymiar drugiej macierzy),
przed wykonaniem sprawdzić, czy spełnione są warunki mnożenia macierzy- wymiar drugi pierwszej równy pierwszemu drugiej


transpozycja macierzy:

Kod:

for(int i = 0; i < n; i++)

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

tmp = t1[i][j];

t1[i][j] = t1[j][i];

t1[j][i] = tmp;}

, gdzie:
*t1 - macierz
*n - wymiar
*tmp - zmienna pomocnicza, typ ten sam, co macierz

#include <iostream> //to musi byc i napiszcie to od razu (chuj wie)

#include <fstream>//to musi byc i napiszcie to od razu(zapis do pliku)

#include <cmath>//to musi byc i napiszcie to od razu(funkcje matematyczne)

#include "newdel.h"//to musi byc i napiszcie to od razu (macierze)

using namespace std;//to musi byc i napiszcie to od razu (drugi chujw ie)

double sil(double a) //liczenie silni postaci 1/a!

{

double f; //liczenie rekurencyjne

if(a==0)f=1;

else

{

f=sil(a-1)/a;

}

return f;

}

double S(double eps) //suma szeregu zlozonego z silni

{

double a=1,i=1,b=1;

while(b>eps){ //liczy dopoki jest spelniony warunek z zadania ( zadanie 1 z jakeigos kolła)

b=sil(i);

a=a+sil(i);

i++;

}

return a;

}

double g(double x){ //liczenie funkcji z zadania dla x podanego

double y=pow((sin(x)),cos(0.5*pow(x,2)));

return y;

}

double* B(double t) //wyliczanie wspolrzednych wektora predkosci i wartosci predkosci tego wektora i zapis tego do wektora z 3 wspolrzednymi

{

double* A=NEW(1.0,3); //macierz wypelniona jedynkami do ktorej potem wejda wyniki

A[0]=-cos(t);// skaldowa x predkosci

A[1]=1.0/10.0*2*pow(t,2);// skladowa y predkosci

A[2]=sqrt(pow(A[0],2)+pow(A[1],2));// wartosc predkosci

return A; // zwroca tablica z wartosciami

}

double* MIN(double** T,int m, int n) //pobieranie tablicy i jej wymairu do pozniejszego wyciagania wartosci minimalnej z kazdej kolumny

{

double* MIN=NEW(0.0,n); //macierz wartosci minimalnych dla kazdej kolumny - narazie wypelniona byle jak

for (int i=0;i<n;i++) { // wywolywanie po kolei kazdej kolumny i kazdego jej wiersza dwoma petlami for i zapamietywanie najmneijszej wartosci z kazdej kolumny oraz zapisanie tego do tablicy MIN

for (int k=0;k<m;k++) {

if (k==0) MIN[i]=T[k][i];//wpisuje jako minimalna wartosc pierwsza liczbe z kolumny

else if (T[k][i]<MIN[i]) MIN[i]=T[k][i]; //sprawdza czy kolejna liczba nei jest mniejsza a jak jest to ja zapamietuje zamiast swojej starej :D

}

}

return MIN; //zwraca maceirz minimalnych wynikow

}

void main()

{

int m,n; //zadanie z sortowaniem , wywolywanie i wypisywanie i sortowanie

cout<<"podaj m "<<endl; //zadanie z sortowaniem , wywolywanie i wypisywanie i sortowanie

cin>>m;

cout<<"podaj n "<<endl;//zadanie z sortowaniem , wywolywanie i wypisywanie i sortowanie

cin>>n;//zadanie z sortowaniem , wywolywanie i wypisywanie i sortowanie

double* p;//zadanie z sortowaniem , wywolywanie i wypisywanie i sortowanie

double** G=NEW(-100.0,100.0,m,n);//zadanie z sortowaniem , wywolywanie i wypisywanie i sortowanie

p=MIN(G,m,n);//zadanie z sortowaniem , wywolywanie i wypisywanie i sortowanie

d("G",G,m,n);//zadanie z sortowaniem , wywolywanie i wypisywanie i sortowanie

d("p",p,n);//zadanie z sortowaniem , wywolywanie i wypisywanie i sortowanie

/* //<-- znak do robienia komentarzy ta gwiazdka i slash , zeby sie nei pieprzyly zadania ze soba ,

double eps,t; //zadanie z szeregiem

double* V; //zadanie z szeregiem

eps=1.0e-5; //zadanie z szeregiem

char PATH[1000]="C:\\g.txt"; //zadanie z szeregiem

cin>>b; //zadanie z szeregiem

cout<<S(eps); //zadanie z szeregiem

fstream strum; //tabalaryzcja funkcji

strum.open(PATH,ios::out); //tabalaryzcja funkcji

double k=3.0/250.0; //tabalaryzcja funkcji

for (double i=0.0;i<=3+k;i=i+k) { //tabalaryzcja funkcji

strum<<i<<" "<<g(i)<<endl; //tabalaryzcja funkcji ( zapis do pliku kazdej wartosci od 0 do 3 ze skokiem k=3/250

}

cout<<"podaj t chuju"<<endl; //zadanie z predkoscia bez tabelaryzacji

cin>>t; //zadanie z predkoscia bez tabelaryzacji

V=B(t); //zadanie z predkoscia bez tabelaryzacji

cout<<"skladowa x to "<<V[0]<<endl; //zadanie z predkoscia bez tabelaryzacji

cout<<"skladowa y to "<<V[1]<<endl; //zadanie z predkoscia bez tabelaryzacji

cout<<"predkosc to "<<V[2]<<endl; //zadanie z predkoscia bez tabelaryzacji

strum.close(); //zadanie z predkoscia bez tabelaryzacji

*/

}

7



Wyszukiwarka

Podobne podstrony:
Wyznaczanie stałej siatki dyfrakcyjnej, Prz inf 2013, I Semestr Informatyka, Fizyka, SPRAWOZDANIA DU
2009-09-20 Inf- ćwiczenia 1, 5 rok, 1 semestr, informatyka
SiS strona tytulowa spr, Prz inf 2013, I Semestr Informatyka, Fizyka, Wykłady-Fizyka, Sygnały i Syst
zadania na kolokwium informatyka, gik, semestr 4, informatyka
teest1, wsb gda, semestr 2, Informatyka
Tabela pomiarowa, Prz inf 2013, I Semestr Informatyka, Fizyka, [FIZYKA] Laborki, laboratorium stare
tabele 1B+, Prz inf 2013, I Semestr Informatyka, Fizyka, [FIZYKA] Laborki, laboratorium stare, 1b
ćw 23, Prz inf 2013, I Semestr Informatyka, Fizyka, [FIZYKA] Laborki, laboratorium stare, Fizyka Dam
Ćwiczenie nr 44 prawie dobre ale juz teraz lux, Prz inf 2013, I Semestr Informatyka, Fizyka, [FIZYKA
ćw 1 obliczenia, Prz inf 2013, I Semestr Informatyka, Fizyka, [FIZYKA] Laborki, laboratorium stare,
spr5, Prz inf 2013, I Semestr Informatyka, Fizyka, [FIZYKA] Laborki, laboratorium stare, bartochowsk
02.zaliczenie opracowanie, Politechnika Poznanska, SEMESTR 2, informatyka, Tomczewski
ZADANKA Z POPRAWY W ZESZŁYM ROKU, I semstr moje materiały, Semestr I, Informatyka stosowana, zadanka
prace+semestralna informatyka
zagadnienia 2011, Politechnika Poznańska, Elektrotechnika, Semestr I, Informatyka wykład
Lab 9 12, Studia - Politechnika Opolska, Semestr 2, Informatyka
Lab 7 12, Studia - Politechnika Opolska, Semestr 2, Informatyka
newword cw 3, Towaroznawstwo SGGW, Rok I, Semestr I, informatyka, asdasdsd, informa

więcej podobnych podstron