ovako, program čita podatke iz datoteke sa diska i on te program treba sortirati, ali ne znam kako bih sortirao jedan dio.
KOD:
imam za sortirati 2-D int polje(u kodu se zove brojproizvoda) i javlja mi gresku "forbids assignments of arrays", pa ako netko zna kako to sortirati bio bih zahvalan. pokusao sam sa pomocnim poljem ali nije islo.
#include <cstdlib>
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char *argv[])
{
ifstream d("Proizvodi.txt");
char imeproizvoda[100][50];
char proizvodzac[100][50];
char godinaproizvodnje[100][6];
int brojkutija;
int brojproizvoda[100][100]; //broj proizvoda[komada] po kutijama -> promjenjiv dio
char nista[100];int i=0; // i predstavlja broj redova odnosno broj proizvoda
int sum[100];
//int tsuma=0;
while(!d.eof())
{
d.getline(imeproizvoda[i],49,'\t');
d.getline(proizvodzac[i],49,'\t');
d.getline(godinaproizvodnje[i],5,'\t');
d>>brojkutija;
for(int j=0; j<brojkutija; j++)
{
d>>brojproizvoda[i][j];
}
d.getline(nista,99);
sum[i]=0;
for(int j=0; j<brojkutija; j++)
{
sum[i]=sum[i]+brojproizvoda[i][j];
}
//sum[i]=tsuma;
if(strlen(imeproizvoda[i])>0) //zadnji red je prazan pa ga ignoriramo
{ i++;
}
}
d.close();
int n;
n=i;
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if((godinaproizvodnje[i]<godinaproizvodnje[j]) || ( (godinaproizvodnje[i]==godinaproizvodnje[j]) && (sum[i]<sum[j])))
{
char timeproizvoda[49];
strcpy(timeproizvoda,imeproizvoda[i]);
strcpy(imeproizvoda[i],imeproizvoda[j]);
strcpy(imeproizvoda[j],timeproizvoda);
char tproizvodzac[49];
strcpy(tproizvodzac,proizvodzac[i]);
strcpy(proizvodzac[i],proizvodzac[j]);
strcpy(proizvodzac[j],tproizvodzac);
char tgodinaproizvodnje[5];
strcpy(tgodinaproizvodnje,godinaproizvodnje[i]);
strcpy(godinaproizvodnje[i],godinaproizvodnje[j]);
strcpy(godinaproizvodnje[j],tgodinaproizvodnje);
int tbrojproizvoda[100]; //PROBLEM->kako ovo ispravno sortirati
tbrojproizvoda=brojproizvoda[i];
brojproizvoda[i]=brojproizvoda[j];
brojproizvoda[j]=brojproizvoda;
int tsum;
tsum=sum[i];
sum[i]=sum[j];
sum[j]=tsum;
}
}
}
//ispis zaglavlja tablice
cout<<"#"<<'\t'<<"Imeproizvoda"<<'\t'<<"Proizvodzac"<<'\t'<<"Godina"<<'\t'<<"Broj kutija"<<'\t'<<"Broj proizvoda"<<'\t'<<endl;
int m;
m=n;
for(int i=0;i<m;i++)
{
//ispis podataka u tablicnom obliku na nivou reda
cout<<i+1<<"."<<'\t'<<imeproizvoda[i]<<'\t'<<'\t'<<proizvodzac[i]<<'\t'<<'\t'<<godinaproizvodnje[i]<<'\t'<<brojkutija<<'\t'<<'\t';
for(int j=0; j<brojkutija; j++)
{
cout<<brojproizvoda[i][j]<<" ";
}
cout<<'\t';
cout<<i+1<<"."<<'\t'<<"Zbroj proizvoda za "<<i+1<<".kutiju: "<<endl;
cout<<'\t'<<'\t'<<'\t'<<sum[i];
cout<<endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}