#include <iostream>
#include <time.h>
#include <cstdlib>
#include <math.h>
#include <stdio.h>
using namespace std;
struct NVec
{
int coord[99];
};
struct NVec initialize (int N)
{
struct NVec temp;
for(int i=0; i<N; i++)
temp.coord[i]=rand()%100+1;
return temp;
}
struct NVec addition (struct NVec V1, struct NVec V2, int N)
{
struct NVec temp;
for(int i=0; i<N; i++)
temp.coord[i]=V1.coord[i]+V2.coord[i];
return temp;
}
struct NVec subtraction (struct NVec V1, struct NVec V2, int N)
{
struct NVec temp;
for(int i=0; i<N; i++)
temp.coord[i]=V1.coord[i]-V2.coord[i];
return temp;
}
int scalarMultiplication (struct NVec V1, struct NVec V2, int N)
{
int outcome=0;
for(int i=0; i<N; i++)
outcome+=V1.coord[i]*V2.coord[i];
return outcome;
}
double length (struct NVec V1, int N)
{
double l=0;
for(int i=0; i<N; i++)
l+=pow(V1.coord[i],2);
return sqrt(l);
}
void CompareVectors(struct NVec *V)
{
FILE *file;
if((file=fopen("vectorCmp.txt", "w"))==NULL)
{
cout<<"Couldn't open the file!";
exit(1);
}
for(int i=0; i<100; i+=2)
{
struct NVec temp;
for(int j=0; j<2; j++)
{
fprintf(file,"[%d]",V[i].coord[j]);
}
fprintf(file,"\t");
for(int j=0; j<2; j++)
{
fprintf(file,"[%d]",V[i+1].coord[j]);
}
fprintf(file,"\nAddition:");
temp=addition(V[i],V[i+1],2);
for(int j=0; j<2; j++)
{
fprintf(file,"[%d]",temp.coord[j]);
}
temp=subtraction(V[i],V[i+1],2);
fprintf(file,"\nSubtraction:");
for(int j=0; j<2; j++)
{
fprintf(file,"[%d]",temp.coord[j]);
}
int ScalarMult=scalarMultiplication(V[i],V[i+1],2);
fprintf(file,"\nScalar multiplication:");
fprintf(file,"[%d]",ScalarMult);
fprintf(file,"\nV1 length:%lf\tV2 length:%lf\n",length(V[i],2),length(V[i+1],2));
}
fclose(file);
}
void SaveVectors(struct NVec *V, int N)
{
FILE *file;
file=fopen("vector.txt", "w");
for(int i=0;i<100;i++)
{
for(int j=0;j<N;j++)
fprintf(file,"[%d] ",V[i].coord[j]);
fprintf(file,"\n");
}
fclose(file);
}
int main()
{
srand(time(NULL));
struct NVec V[100];
struct NVec X[100];
for(int i=0; i<100; i++)
V[i]=initialize(2);
CompareVectors(V);
SaveVectors(V,2);
FILE *file;
if((file=fopen("vector.txt.","r"))==NULL)
{
cout<<"Couldn't open the file!";
exit(1);
}
char data;
int i=0,j=0,k=0;
char temp[3];
data=getc(file);
while(data!=EOF)
{
if(isdigit(data))
{
temp[k]=data;
k++;
}
else if(data==']')
{
temp[k]='\0';
k=0;
X[i].coord[j]=atoi(temp);
j++;
}
else if(data=='\n')
{
i++;
j=0;
}
if(X[0].coord[0]==0)
cout<<i<<" "<<j<<endl;
data=getc(file);
}
fclose(file);
cout<<endl<<"Writing the array"<<endl;
for(int i=0;i<100;i++)
{
for(int j=0;j<2;j++)
{
cout<<X[i].coord[j]<<" ";
}
cout<<endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dGltZS5oPgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPG1hdGguaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgTlZlYwp7CiAgICBpbnQgY29vcmRbOTldOwp9OwpzdHJ1Y3QgTlZlYyBpbml0aWFsaXplIChpbnQgTikKewogICAgc3RydWN0IE5WZWMgdGVtcDsKICAgIGZvcihpbnQgaT0wOyBpPE47IGkrKykKICAgICAgICB0ZW1wLmNvb3JkW2ldPXJhbmQoKSUxMDArMTsKICAgIHJldHVybiB0ZW1wOwp9CnN0cnVjdCBOVmVjIGFkZGl0aW9uIChzdHJ1Y3QgTlZlYyBWMSwgc3RydWN0IE5WZWMgVjIsIGludCBOKQp7CiAgICBzdHJ1Y3QgTlZlYyB0ZW1wOwogICAgZm9yKGludCBpPTA7IGk8TjsgaSsrKQogICAgICAgIHRlbXAuY29vcmRbaV09VjEuY29vcmRbaV0rVjIuY29vcmRbaV07CiAgICByZXR1cm4gdGVtcDsKfQpzdHJ1Y3QgTlZlYyBzdWJ0cmFjdGlvbiAoc3RydWN0IE5WZWMgVjEsIHN0cnVjdCBOVmVjIFYyLCBpbnQgTikKewogICAgc3RydWN0IE5WZWMgdGVtcDsKICAgIGZvcihpbnQgaT0wOyBpPE47IGkrKykKICAgICAgICB0ZW1wLmNvb3JkW2ldPVYxLmNvb3JkW2ldLVYyLmNvb3JkW2ldOwogICAgcmV0dXJuIHRlbXA7Cn0KaW50IHNjYWxhck11bHRpcGxpY2F0aW9uIChzdHJ1Y3QgTlZlYyBWMSwgc3RydWN0IE5WZWMgVjIsIGludCBOKQp7CiAgICBpbnQgb3V0Y29tZT0wOwogICAgZm9yKGludCBpPTA7IGk8TjsgaSsrKQogICAgICAgIG91dGNvbWUrPVYxLmNvb3JkW2ldKlYyLmNvb3JkW2ldOwogICAgcmV0dXJuIG91dGNvbWU7Cn0KZG91YmxlIGxlbmd0aCAoc3RydWN0IE5WZWMgVjEsIGludCBOKQp7CiAgICBkb3VibGUgbD0wOwogICAgZm9yKGludCBpPTA7IGk8TjsgaSsrKQogICAgICAgIGwrPXBvdyhWMS5jb29yZFtpXSwyKTsKICAgIHJldHVybiBzcXJ0KGwpOwp9CnZvaWQgQ29tcGFyZVZlY3RvcnMoc3RydWN0IE5WZWMgKlYpCnsKICAgIEZJTEUgKmZpbGU7CiAgICBpZigoZmlsZT1mb3BlbigidmVjdG9yQ21wLnR4dCIsICJ3IikpPT1OVUxMKQogICAgewogICAgICAgIGNvdXQ8PCJDb3VsZG4ndCBvcGVuIHRoZSBmaWxlISI7CiAgICAgICAgZXhpdCgxKTsKICAgIH0KICAgIGZvcihpbnQgaT0wOyBpPDEwMDsgaSs9MikKICAgIHsKICAgICAgICBzdHJ1Y3QgTlZlYyB0ZW1wOwogICAgICAgIGZvcihpbnQgaj0wOyBqPDI7IGorKykKICAgICAgICB7CiAgICAgICAgICAgIGZwcmludGYoZmlsZSwiWyVkXSIsVltpXS5jb29yZFtqXSk7CiAgICAgICAgfQogICAgICAgIGZwcmludGYoZmlsZSwiXHQiKTsKICAgICAgICBmb3IoaW50IGo9MDsgajwyOyBqKyspCiAgICAgICAgewogICAgICAgICAgICBmcHJpbnRmKGZpbGUsIlslZF0iLFZbaSsxXS5jb29yZFtqXSk7CiAgICAgICAgfQogICAgICAgIGZwcmludGYoZmlsZSwiXG5BZGRpdGlvbjoiKTsKICAgICAgICB0ZW1wPWFkZGl0aW9uKFZbaV0sVltpKzFdLDIpOwogICAgICAgIGZvcihpbnQgaj0wOyBqPDI7IGorKykKICAgICAgICB7CiAgICAgICAgICAgIGZwcmludGYoZmlsZSwiWyVkXSIsdGVtcC5jb29yZFtqXSk7CiAgICAgICAgfQoKICAgICAgICB0ZW1wPXN1YnRyYWN0aW9uKFZbaV0sVltpKzFdLDIpOwogICAgICAgIGZwcmludGYoZmlsZSwiXG5TdWJ0cmFjdGlvbjoiKTsKICAgICAgICBmb3IoaW50IGo9MDsgajwyOyBqKyspCiAgICAgICAgewogICAgICAgICAgICBmcHJpbnRmKGZpbGUsIlslZF0iLHRlbXAuY29vcmRbal0pOwogICAgICAgIH0KICAgICAgICBpbnQgU2NhbGFyTXVsdD1zY2FsYXJNdWx0aXBsaWNhdGlvbihWW2ldLFZbaSsxXSwyKTsKICAgICAgICBmcHJpbnRmKGZpbGUsIlxuU2NhbGFyIG11bHRpcGxpY2F0aW9uOiIpOwogICAgICAgIGZwcmludGYoZmlsZSwiWyVkXSIsU2NhbGFyTXVsdCk7CiAgICAgICAgZnByaW50ZihmaWxlLCJcblYxIGxlbmd0aDolbGZcdFYyIGxlbmd0aDolbGZcbiIsbGVuZ3RoKFZbaV0sMiksbGVuZ3RoKFZbaSsxXSwyKSk7CiAgICB9CiAgICBmY2xvc2UoZmlsZSk7Cn0Kdm9pZCBTYXZlVmVjdG9ycyhzdHJ1Y3QgTlZlYyAqViwgaW50IE4pCnsKICAgIEZJTEUgKmZpbGU7CiAgICBmaWxlPWZvcGVuKCJ2ZWN0b3IudHh0IiwgInciKTsKICAgIGZvcihpbnQgaT0wO2k8MTAwO2krKykKICAgIHsKICAgICAgICBmb3IoaW50IGo9MDtqPE47aisrKQogICAgICAgIGZwcmludGYoZmlsZSwiWyVkXSAiLFZbaV0uY29vcmRbal0pOwogICAgICAgIGZwcmludGYoZmlsZSwiXG4iKTsKICAgIH0KICAgIGZjbG9zZShmaWxlKTsKfQppbnQgbWFpbigpCnsKICAgIHNyYW5kKHRpbWUoTlVMTCkpOwogICAgc3RydWN0IE5WZWMgVlsxMDBdOwogICAgc3RydWN0IE5WZWMgWFsxMDBdOwogICAgZm9yKGludCBpPTA7IGk8MTAwOyBpKyspCiAgICAgICAgVltpXT1pbml0aWFsaXplKDIpOwogICAgQ29tcGFyZVZlY3RvcnMoVik7CiAgICBTYXZlVmVjdG9ycyhWLDIpOwogICAgRklMRSAqZmlsZTsKICAgIGlmKChmaWxlPWZvcGVuKCJ2ZWN0b3IudHh0LiIsInIiKSk9PU5VTEwpCiAgICB7CiAgICAgICAgY291dDw8IkNvdWxkbid0IG9wZW4gdGhlIGZpbGUhIjsKICAgICAgICBleGl0KDEpOwogICAgfQogICAgY2hhciBkYXRhOwogICAgaW50IGk9MCxqPTAsaz0wOwogICAgY2hhciB0ZW1wWzNdOwogICAgZGF0YT1nZXRjKGZpbGUpOwogICAgd2hpbGUoZGF0YSE9RU9GKQogICAgewogICAgICAgIGlmKGlzZGlnaXQoZGF0YSkpCiAgICAgICAgewogICAgICAgICAgICB0ZW1wW2tdPWRhdGE7CiAgICAgICAgICAgIGsrKzsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZihkYXRhPT0nXScpCiAgICAgICAgewogICAgICAgICAgICB0ZW1wW2tdPSdcMCc7CiAgICAgICAgICAgIGs9MDsKICAgICAgICAgICAgWFtpXS5jb29yZFtqXT1hdG9pKHRlbXApOwogICAgICAgICAgICBqKys7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoZGF0YT09J1xuJykKICAgICAgICB7CiAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgaj0wOwogICAgICAgIH0KICAgICAgICBpZihYWzBdLmNvb3JkWzBdPT0wKQogICAgICAgICAgICBjb3V0PDxpPDwiICI8PGo8PGVuZGw7CiAgICAgICAgZGF0YT1nZXRjKGZpbGUpOwogICAgfQogICAgZmNsb3NlKGZpbGUpOwogICAgY291dDw8ZW5kbDw8IldyaXRpbmcgdGhlIGFycmF5Ijw8ZW5kbDsKICAgIGZvcihpbnQgaT0wO2k8MTAwO2krKykKICAgIHsKICAgICAgICBmb3IoaW50IGo9MDtqPDI7aisrKQogICAgICAgIHsKICAgICAgICAgICAgY291dDw8WFtpXS5jb29yZFtqXTw8IiAiOwogICAgICAgIH0KICAgICAgICBjb3V0PDxlbmRsOwogICAgfQogICAgcmV0dXJuIDA7Cn0K