c++ - Issues passing an ellement of an Array of Records to Temporary Array of Records -


i'm new code monkey in training, , i'm having issues working arrays , structs. have main file have array of records declared. pass array external function, quick sort performed on of fields in record. first name. i'm having issues copy elements in array of records, temporary array sorting algorith. know c++ have qsort function built in, i'm working on right now, need have algoritm written out way is. able work using array.

i'm getting following error when trying compile make file.

make g++    -c -o main2.o main2.cpp g++ -c externarray2.cpp -o externarray2.o externarray2.cpp: in function ‘void copytemp(employeerecord*, employeerecord*, int, int)’: externarray2.cpp:52: error: cannot convert ‘float’ ‘void*’ argument ‘1’ ‘void* memcpy(void*, const void*, size_t)’ externarray2.cpp:53: error: cannot convert ‘float’ ‘void*’ argument ‘1’ ‘void* memcpy(void*, const void*, size_t)’ externarray2.cpp:54: error: cannot convert ‘float’ ‘void*’ argument ‘1’ ‘void* memcpy(void*, const void*, size_t)’ externarray2.cpp:55: error: cannot convert ‘float’ ‘void*’ argument ‘1’ ‘void* memcpy(void*, const void*, size_t)’ externarray2.cpp:56: error: cannot convert ‘float’ ‘void*’ argument ‘1’ ‘void* memcpy(void*, const void*, size_t)’ externarray2.cpp:57: error: cannot convert ‘float’ ‘void*’ argument ‘1’ ‘void* memcpy(void*, const void*, size_t)’ externarray2.cpp:58: error: cannot convert ‘float’ ‘void*’ argument ‘1’ ‘void* memcpy(void*, const void*, size_t)’ externarray2.cpp:59: error: cannot convert ‘float’ ‘void*’ argument ‘1’ ‘void* memcpy(void*, const void*, size_t)’ externarray2.cpp:60: error: cannot convert ‘float’ ‘void*’ argument ‘1’ ‘void* memcpy(void*, const void*, size_t)’ make: *** [externarray2.o] error 1 

make file

test1:  main.o externarray.o         g++ main.o externarray.o -o test1  externarray.o: externarray.cpp         g++ -c externarray.cpp -o externarray.o  main.o: main.cpp         g++ -c main.cpp -o main.o 

header.h

#ifndef _incl_guard #define _incl_guard const int maxemployee =10; const int names = 5; const int length = 15;   typedef struct employeerecord { char first[10]; char last[10]; float reghours; float ovrhours; float pay; float gross; float defer; float state; float fed; float ssi; float net; } employeerecord; #endif 

main.cpp

#include <iostream> #include <cstring> using namespace std; #include "./header2.h"  void showarray(employeerecord employees[], int, const char*);  //function prototype 3.1  extern void qsortarray(employeerecord employees[], int, int);     //funvtion prototype      3.2  int main(void) {     employeerecord myemployee[maxemployee];     strcpy(myemployee[0].first,"john");     strcpy(myemployee[0].last,"doe");     strcpy(myemployee[1].first,"ed");     strcpy(myemployee[1].last, "whittle");     strcpy(myemployee[2].first, "louise");     strcpy(myemployee[2].last, "marion");     strcpy(myemployee[3].first,"paula");     strcpy(myemployee[3].last, "prentiss");     strcpy(myemployee[4].first, "carl");     strcpy(myemployee[4].last, "davidson");       showarray(myemployee, names, "before sort");     qsortarray(myemployee, 0, 4 );     showarray(myemployee, names, "after sort");  return 0;                }    void showarray(employeerecord employees[], int emp, const char *message) { cout << message << endl; (int test = 0; test < emp; test++)     {     cout << "first name: " << employees[test].first << endl;     cout << "last name: " << employees[test].last << endl;      } } 

externarray.cpp

#include <cstring> #include <iostream> #include <iomanip> #include <stdio.h> using namespace std; #include "./header2.h"  void qsortarray(employeerecord employees[], int, int);     //funvtion prototype         3.2  void copytemp(employeerecord tmpemp[], employeerecord emp[], int, int);  void qsortarray(employeerecord employees[], int start, int finish) {  int left=start,     right=finish; char  pivot[15]; strcpy(pivot, employees[(start+finish)/2].first);   while (left < right) {   cout << pivot << " pivot " << endl;   cout << "outer loop" << endl;     // find left candidate     while (strcmp(employees[left].first,pivot) <0) left++;      // find right candidate      cout << "first inner loop" << endl;     while (strcmp(employees[right].first,pivot) > 0 )right--;      cout << "inner loop" << endl;     if (left <= right)          {         employeerecord tmpemployee[1];         cout << "create new struct" << endl;         copytemp(tmpemployee, employees, 0, left);         cout << "copy temp" << endl;         copytemp(tmpemployee, employees, 1, right);         copytemp(employees, tmpemployee, left, 1);         copytemp(employees, tmpemployee, right, 0);          left++;         right--;         cout << "all copy done" <<endl;         }    } // while left < right   cout << "back out of outer loop" << endl;   if (start < right) qsortarray(employees,start,right);   if (left < finish) qsortarray(employees,left,finish); }  void copytemp(employeerecord tmpemp[], employeerecord emp[], int first, int secound) { memcpy(tmpemp[first].first, emp[secound].first, sizeof(emp[secound].first)); memcpy(tmpemp[first].last, emp[secound].last, sizeof(emp[secound].last)); memcpy(tmpemp[first].reghours, emp[secound].reghours, sizeof(emp[secound].reghours)); memcpy(tmpemp[first].ovrhours, emp[secound].ovrhours, sizeof(emp[secound].ovrhours)); memcpy(tmpemp[first].pay, emp[secound].pay, sizeof(emp[secound].pay)); memcpy(tmpemp[first].gross, emp[secound].gross, sizeof(emp[secound].gross)); memcpy(tmpemp[first].defer, emp[secound].defer, sizeof(emp[secound].defer)); memcpy(tmpemp[first].state, emp[secound].state, sizeof(emp[secound].state)); memcpy(tmpemp[first].fed, emp[secound].fed, sizeof(emp[secound].fed)); memcpy(tmpemp[first].ssi, emp[secound].ssi, sizeof(emp[secound].ssi)); memcpy(tmpemp[first].net, emp[secound].net, sizeof(emp[secound].net)); } 

in c can copy entire struct plain assignment

tmpelm[first] = emp[secound]; 

this problematic if struct contains members pointers, not case.


Comments

Popular posts from this blog

android - Spacing between the stars of a rating bar? -

aspxgridview - Devexpress grid - header filter does not work if column is initially hidden -

c# - How to execute a particular part of code asynchronously in a class -