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++;
} } } }
pakeista prieš 10 m
purexlt (+225)
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.
pakeista prieš 10 m
alien911 (+24)
š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 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; } } } }