Galbūt kas nors esat dare 2013m Miestai ir apskritys užduotį ir galėtumet pasidalinti, ką daryti su tom pasikartojančiom apsikritim jokio sprendimu nesugebu rast, lūžinėja programa...
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct pradiniai{
string miestas;
string aps;
int gyventojuskaicius;
};
struct rezultatas{
string aps;
int gyventojusuma;
int mingyventoju;
};
void ivedimas(pradiniai Duomenys[], int n);
void apskritiesieskojimas(pradiniai Duomenys[], rezultatas Rezultatas[], int n, bool yra, int &apskr);
void salink(int m, int n);
int main()
{
pradiniai Duomenys[103];
rezultatas Rezultatas[103];
int n; int m;
bool yra;
int apskr=0;
ivedimas(Duomenys, n);
apskritiesieskojimas(Duomenys, Rezultatas, n, yra);
return 0;
}
void ivedimas(pradiniai Duomenys[], int n){
ifstream fd("U1.txt");
fd >> n;
for(int i=1; i<=n; i++){
fd >> Duomenys[i].miestas >> Duomenys[i].aps >> Duomenys[i].gyventojuskaicius;
}
}
void apskritiesieskojimas(pradiniai Duomenys[], rezultatas Rezultatas[], int n, bool yra, int &apskr){
for(int i=1; i<=n; i++){
yra=false;
for(int j=i; j<=n; j++){
if(Duomenys[i].aps.compare(Rezultatas[j].aps) == 0){
yra=true;
}
if(!yra){
Rezultatas[apskr].aps= Duomenys[i].aps;
Rezultatas[apskr].gyventojusuma=0;
Rezultatas[apskr].mingyventoju = 600000;
apskr++;
}
}
}
}
Pastebejimai:
į masyvą rašyk/skaityk duomenis nuo 0-intosios pozicijos: for(int i=0; i<n; i++)
if(Duomenys[i].aps.compare(Rezultatas[j].aps) == 0) //gali keisti į
if(Duomenys[i].aps == Rezultatas[j].aps) // čia dėl patogumo tik
Tau derėtų patobulinti apskrities ieškojimo funkciją. Aš tą funkciją rašyčiau taip: http://pastebin.com/YHwW6r8q. Jeigu darysi mano algoritmu, tau, turbūt, reiks rezultatų struktūros masyve turėti miestų masyvą su gyventojais.
Šiaip dar šios VBE užduoties nedaręs, nes tolokai man iki VBE.
šiek tiek paveluotai, bet gal kitiems pravers.
#include <iostream>
#include <fstream>
using namespace std;
struct Miestai
{
string miestas;
string apskritis;
int maziausi;
int kiekis;
};
void Skaitymas(Miestai A[], int &n, Miestai B[]);
void Veiksmai(Miestai A[], Miestai B[], int n, int &m);
int Radimas(Miestai B[], string apskr, int n);
void Minimum(Miestai A[], int n, Miestai B[], int m);
void Rikiavimas(Miestai B[], int m);
void Rasymas(Miestai B[], int m);
int main()
{
Miestai A[300];
Miestai B[300];
int n, m; /// n - kiekis miestu; m - keikis apskriciu;
Skaitymas(A, n, B);
Veiksmai(A, B, n, m);
Minimum(A, n, B, m);
Rikiavimas(B, m);
Rasymas(B, m);
return 0;
}
void Skaitymas(Miestai A[], int &n, Miestai B[])
{
ifstream fd("u2.txt");
fd >> n;
///cout << n;
char name[21];
char name1[14];
for(int i = 0; i < n; i++)
{
fd.ignore(80, '\n');
fd.get(name, 21);
A[i].miestas = name;
fd.get(name1, 14);
A[i].apskritis = name1;
fd >> A[i].kiekis;
///cout << A[i].miestas << " " << A[i].apskritis << " " << A[i].kiekis << endl;
B[i].kiekis = 0;
B[i].maziausi = 0;
}
fd.close();
}
void Veiksmai(Miestai A[], Miestai B[], int n, int &m) /// apkriciu radimas ir gyventoju skaicius radimas
{
m = 0; /// naujas kiekis;
int k; /// reiksmei;
int l; /// minimalei reiksmei;
for(int i = 0; i < n; i++)
{
k = Radimas(B, A[i].apskritis, n);
if(k >= 0)
{
B[k].kiekis += A[i].kiekis;
} else{
B[m] = A[i];
m++;
}
}
}
int Radimas(Miestai B[], string apskr, int n)
{
for(int i = 0; i < n; i++)
{
if(B[i].apskritis == apskr)
{
return i;
}
}
return -1;
}
void Rasymas(Miestai B[], int m)
{
ofstream fr("u2rez.txt");
for(int i = 0; i < m; i++)
{
fr << B[i].apskritis << " " << B[i].maziausi << " " << B[i].kiekis << endl;
cout << B[i].apskritis << " " << B[i].maziausi << " " << B[i].kiekis << endl;
}
fr.close();
}
void Minimum(Miestai A[], int n, Miestai B[], int m)
{
int j = 0;
for(int i = 0; i < m; i++)
{
j = 0;
for(int l = 0; l < n; l++)
{
if(B[i].apskritis == A[l].apskritis)
{
if(A[l].kiekis < A[j].kiekis)
{
j = l;
}
}
}
B[i].maziausi = A[j].kiekis;
}
}
void Rikiavimas(Miestai B[], int m)
{
Miestai pagalbinis;
for(int i = 0; i < m; i++)
{
for(int j = i+1; j < m; j++)
{
if(B[i].maziausi >= B[j].maziausi)
{
pagalbinis = B[i];
B[i] = B[j];
B[j] = pagalbinis;
}
}
}
}