Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "device_functions.h"
- #include "cuda_runtime.h"
- #include "device_launch_parameters.h"
- #include <cuda.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <string>
- #define max 30
- #define n 10
- const char duomenys[] = "IFF51_KazlauskasJonas_L4a_dat.txt"; // duomenu failo vardas
- const char rezultatai[] = "IFF51_KazlauskasJonas_L4a_rez.txt"; // rezultatu failo vardas
- struct obj
- {
- int gijosNr;
- char SPavadinimas[255];
- int IKiekis;
- float DKaina;
- };
- void skaityti(struct obj P1[], struct obj P2[], struct obj P3[], struct obj P4[], struct obj P5[]);
- void spausdinti(struct obj P1[], struct obj P2[], struct obj P3[], struct obj P4[], struct obj P5[]);
- void spausdintiGijuRezultatus(struct obj P[]);
- __global__ void sudejimas(struct obj *d_Obj, struct obj *d_P1, struct obj *d_P2, struct obj *d_P3, struct obj *d_P4, struct obj *d_P5) {
- int index = blockIdx.x * blockDim.x + threadIdx.x;
- int i = 0;
- int in = 0;
- while (d_P1[index].SPavadinimas[i] != '\0') {
- d_Obj[index].SPavadinimas[i] = d_P1[index].SPavadinimas[i];
- i++;
- }
- in = i;
- i = 0;
- while (d_P2[index].SPavadinimas[i] != '\0') {
- d_Obj[index].SPavadinimas[in + i] = d_P2[index].SPavadinimas[i];
- i++;
- }
- in += i;
- i = 0;
- while (d_P3[index].SPavadinimas[i] != '\0') {
- d_Obj[index].SPavadinimas[in + i] = d_P3[index].SPavadinimas[i];
- i++;
- }
- in += i;
- i = 0;
- while (d_P4[index].SPavadinimas[i] != '\0') {
- d_Obj[index].SPavadinimas[in + i] = d_P4[index].SPavadinimas[i];
- i++;
- }
- in += i;
- i = 0;
- while (d_P5[index].SPavadinimas[i] != '\0') {
- d_Obj[index].SPavadinimas[in + i] = d_P5[index].SPavadinimas[i];
- i++;
- }
- d_Obj[index].gijosNr = index;
- d_Obj[index].IKiekis = d_P1[index].IKiekis + d_P2[index].IKiekis + d_P3[index].IKiekis + d_P4[index].IKiekis + d_P5[index].IKiekis;
- d_Obj[index].DKaina = d_P1[index].DKaina + d_P2[index].DKaina + d_P3[index].DKaina + d_P4[index].DKaina + d_P5[index].DKaina;
- }
- int main()
- {
- struct obj P1[max];
- struct obj P2[max];
- struct obj P3[max];
- struct obj P4[max];
- struct obj P5[max];
- struct obj h_Obj[max];
- skaityti(P1, P2, P3, P4, P5);
- FILE *rf;
- rf = fopen(rezultatai, "w");
- fprintf(rf, "Duomenys:");
- fclose(rf);
- spausdinti(P1, P2, P3, P4, P5);
- struct obj *d_P1;
- struct obj *d_P2;
- struct obj *d_P3;
- struct obj *d_P4;
- struct obj *d_P5;
- struct obj *d_Obj;
- cudaMalloc(&d_P1, max * sizeof(obj));
- cudaMalloc(&d_P2, max * sizeof(obj));
- cudaMalloc(&d_P3, max * sizeof(obj));
- cudaMalloc(&d_P4, max * sizeof(obj));
- cudaMalloc(&d_P5, max * sizeof(obj));
- cudaMalloc(&d_Obj, max * sizeof(obj));
- cudaMemcpy(d_P1, P1, max * sizeof(obj), cudaMemcpyHostToDevice);
- cudaMemcpy(d_P2, P2, max * sizeof(obj), cudaMemcpyHostToDevice);
- cudaMemcpy(d_P3, P3, max * sizeof(obj), cudaMemcpyHostToDevice);
- cudaMemcpy(d_P4, P4, max * sizeof(obj), cudaMemcpyHostToDevice);
- cudaMemcpy(d_P5, P5, max * sizeof(obj), cudaMemcpyHostToDevice);
- sudejimas << <1, n >> > (d_Obj, d_P1, d_P2, d_P3, d_P4, d_P5);
- cudaDeviceSynchronize();
- cudaMemcpy(h_Obj, d_Obj, n * sizeof(obj), cudaMemcpyDeviceToHost);
- spausdintiGijuRezultatus(h_Obj);
- cudaFree(d_Obj);
- cudaFree(d_P1);
- cudaFree(d_P2);
- cudaFree(d_P3);
- cudaFree(d_P4);
- cudaFree(d_P5);
- system("pause");
- return 0;
- }
- void skaityti(struct obj P1[], struct obj P2[], struct obj P3[], struct obj P4[], struct obj P5[])
- {
- int kiekis = 0;
- int a = 0;
- FILE *fd = fopen(duomenys, "r");
- while (!feof(fd)) {
- if (kiekis == 0) {
- fscanf(fd, "%d", &a);
- //printf("%d", a);
- for (int i = 0; i < a; i++) {
- fscanf(fd, "%s %d %f", &P1[i].SPavadinimas, &P1[i].IKiekis, &P1[i].DKaina);
- //printf("%s %d %f", &P1[i].SPavadinimas, &P1[i].IKiekis, &P1[i].DKaina);
- }
- }
- if (kiekis == 1) {
- fscanf(fd, "%d", &a);
- for (int i = 0; i < a; i++) {
- fscanf(fd, "%s %d %f", &P2[i].SPavadinimas, &P2[i].IKiekis, &P2[i].DKaina);
- }
- }
- if (kiekis == 2) {
- fscanf(fd, "%d", &a);
- for (int i = 0; i < a; i++) {
- fscanf(fd, "%s %d %f", &P3[i].SPavadinimas, &P3[i].IKiekis, &P3[i].DKaina);
- }
- }
- if (kiekis == 3) {
- fscanf(fd, "%d", &a);
- for (int i = 0; i < a; i++) {
- fscanf(fd, "%s %d %f", &P4[i].SPavadinimas, &P4[i].IKiekis, &P4[i].DKaina);
- }
- }
- if (kiekis == 4) {
- fscanf(fd, "%d", &a);
- for (int i = 0; i < a; i++) {
- fscanf(fd, "%s %d %f", &P5[i].SPavadinimas, &P5[i].IKiekis, &P5[i].DKaina);
- }
- }kiekis++;
- }
- fclose(fd);
- }
- //pradiniai spausdinimai
- void spausdinti(struct obj P1[], struct obj P2[], struct obj P3[], struct obj P4[], struct obj P5[])
- {
- FILE *rf;
- rf = fopen(rezultatai, "a+");
- fprintf(rf, "-------------------------------------------------\n");
- fprintf(rf, " Nr. Pavadinimas Kiekis Kaina \n");
- fprintf(rf, "-------------------------------------------------\n");
- for (int i = 0; i < n; i++)
- {
- fprintf(rf, " %-10d %-16s %-11d %-10.2f \n", (i + 1), P1[i].SPavadinimas, P1[i].IKiekis, P1[i].DKaina);
- }
- fprintf(rf, "-------------------------------------------------\n\n");
- fprintf(rf, "-------------------------------------------------\n");
- fprintf(rf, " Nr. Pavadinimas Kiekis Kaina \n");
- fprintf(rf, "-------------------------------------------------\n");
- for (int i = 0; i < n; i++)
- {
- fprintf(rf, " %-10d %-16s %-11d %-10.2f \n", (i + 1), P2[i].SPavadinimas, P2[i].IKiekis, P2[i].DKaina);
- }
- fprintf(rf, "-------------------------------------------------\n\n");
- fprintf(rf, "-------------------------------------------------\n");
- fprintf(rf, " Nr. Pavadinimas Kiekis Kaina \n");
- fprintf(rf, "-------------------------------------------------\n");
- for (int i = 0; i < n; i++)
- {
- fprintf(rf, " %-10d %-16s %-11d %-10.2f \n", (i + 1), P3[i].SPavadinimas, P3[i].IKiekis, P3[i].DKaina);
- }
- fprintf(rf, "-------------------------------------------------\n\n");
- fprintf(rf, "-------------------------------------------------\n");
- fprintf(rf, " Nr. Pavadinimas Kiekis Kaina \n");
- fprintf(rf, "-------------------------------------------------\n");
- for (int i = 0; i < n; i++)
- {
- fprintf(rf, " %-10d %-16s %-11d %-10.2f \n", (i + 1), P4[i].SPavadinimas, P4[i].IKiekis, P4[i].DKaina);
- }
- fprintf(rf, "-------------------------------------------------\n\n");
- fprintf(rf, "-------------------------------------------------\n");
- fprintf(rf, " Nr. Pavadinimas Kiekis Kaina \n");
- fprintf(rf, "-------------------------------------------------\n");
- for (int i = 0; i < n; i++)
- {
- fprintf(rf, " %-10d %-16s %-11d %-10.2f \n", (i + 1), P5[i].SPavadinimas, P5[i].IKiekis, P5[i].DKaina);
- }
- fprintf(rf, "-------------------------------------------------\n\n");
- fclose(rf);
- }
- void spausdintiGijuRezultatus(struct obj P[])
- {
- FILE *rf;
- rf = fopen(rezultatai, "a+");
- fprintf(rf, "Rezultatai:\n");
- fprintf(rf, "-------------------------------------------------\n");
- fprintf(rf, " GijosNr. Pavadinimas Kiekis Kaina \n");
- fprintf(rf, "-------------------------------------------------\n");
- for (int i = 0; i < n; i++)
- {
- fprintf(rf, " %-10d %-16s %-11d %-10.2f \n", i, P[i].SPavadinimas, P[i].IKiekis, P[i].DKaina);
- }
- fprintf(rf, "-------------------------------------------------");
- fclose(rf);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement