Pereiti prie turinio

Rekomenduojami pranešimai

Sveiki, turiu tokius duomenis

Laurynas Laurynaitis, DNB, LT123456789, 15

Mindaugas Mindaugaitis, Swedbank, LT987654321, 100

Gintautas Gintautaitis, DNB, LT87543321156, 47

Vidmantas Vidmantaitis, Sekundė, LT465484998, 55

Vilma Vilmantaitė, DNB, LT4484465415, 45

 

ir man reiktu, kad butu atrinkti tie patys banku pavadinimai ir butu isspausdinta

 

DNB: Laurynas Laurynaitis LT123456789 15 LT, Gintautas Gintautaitis LT87543321156 47, Vilma Vilmantaitė LT4484465415 45

Swedbank: Mindaugas Mindaugaitis LT987654321 100

Sekundė: Vidmantas Vidmantaitis LT 465484998 55

 

Ar yra ideju kaip tai butu imanoma padaryti?

Redagavo deividas707
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Objectas: vardas, pavardė, bankas, sąskaita, kažkoks skaičius.

Pasidarai elementarų nuskaitymą į tokius objektus. Tuomet susirandi skirtingus, ir kiekvienam išspausdini jo visą sarašą... Juk nesunku :)

As jau viska esu nuskaites, problema ta kad nezinau kaip reiktu rasti vienodus ir kaip isspausdinti viska tavrkingai.

Redagavo deividas707
Nuoroda į pranešimą
Dalintis kituose puslapiuose

2 ciklus daryk (ciklas cikle, eini per juos ir tikrini)

Man butent sito ir reikia. Darau va ka

string laik[CMAX];

	for(int i=0; i<M.ImtiSK(); i++){
	for(int j=i; j<M.ImtiSK(); j++){
		if(M.ImtiBankas(i) == bankai[j]){
			laik[i] = M.ImtiBankas(i);
		}
	}
	cout << laik[i] << endl;
}

bet cia blogai. Nelabai suprantu kaip kitaip galima atlikti norimus veiksmus.

Redagavo deividas707
Nuoroda į pranešimą
Dalintis kituose puslapiuose

o tau butinai, kad tie patys banku pavadinimai pradzioj butu? jei ne tai tiesiog surikiuok pagal banku pavadinimus

As taip noreciau kad butu pradzioj. Daug tvarkingiau programa atrodytu. Tik nezinau kaip tai padaryti. Yra vienas variantas Mapai. Su jais kolkas nesimokiau, bet manau kad patogu cia butu su jais. Kazkaip noretusi tradiciniais paprastais metodais padaryti, bet jau manau kad nelabai imanoma cia :D

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kokie galimi bankų pavadinimai žinai?

Tada galėtum:

 

cout<<"DNB: "<<endl;
for (int i=0; i<M.ImtiSK(); i++)
  if (M.ImtiBankas(i)=="DNB")
     cout<<visa informacija, išskyrus banko pavadinimas<<" ";

 

Ir taip su kiekvienu banku.

Jei nežinai, kokie bankų pavadinimai gali būti, gali juos susirast. Rasti kiek skirtingų ir kokie tie bankai yra. Skirtingus bankus susirašyt į papildomą masyvą ir tada tikrinti.

 

int b - kiek yra bankų;

string bankai[10] - bankų rūšys.

int j=0;
for (int i=0; i<b; i++) {
  cout<<bankai[i]<<": ";
  while (M.ImtiBankas[j]==bankai[i])
     cout<<informacija apie žmogų[j]<<" ";
     j++;
  cout<<endl;
}

Redagavo Mm8 Realis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kokie galimi bankų pavadinimai žinai?

Tada galėtum:

 

cout<<"DNB: "<<endl;
for (int i=0; i<M.ImtiSK(); i++)
  if (M.ImtiBankas(i)=="DNB")
     cout<<visa informacija, išskyrus banko pavadinimas<<" ";

 

Ir taip su kiekvienu banku.

Jei nežinai, kokie bankų pavadinimai gali būti, tada kaip ir sakė: susirikiuoji žmones pagal bankus ir spausdini iš eilės prie vieno banko tol, kol tie bankai vienodi. Jei nebevienodi - spausdini prie kito.

 

 

cout<<M.ImtiBankas(i)<<": ";
while (M.ImtiBankas(i+1)==M.ImtiBankas(i))
  cout<<informacija apie žmogų<<" ";

Dekui, banku pavadinimu nezinau. + Cia rikiavimas kazin ar tiks, nes as turesiu prie kiekvieno banko atspausdinti ir ta saksaitos numeri. (a ji atskirai nusiskaitau, nes destytojas taip liepe). Cia ir yra visos bedos kad dela apribojimu ir del mano ziniu trukumu nezinau nuo ko pradeti

Redagavo deividas707
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tai supratau yra du masyvai:

1)objektas M,

2)sąskaitų numeriai.

 

Abiejuose masyvuose duomenų vietos sutampa, tai rikiuodamas pagal bankus, perkilnok ir sąskaitų numerius. Pvz: Mindaugas Mindaugaitis yra 1 masyvo vietoj, o išrikiavus turėtų atsidurt 3 vietoje. Tai ir jo sąskaitos numeris taip pat keliaus iš 1 į 3 masyvo vietą.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Va kiek prisidariau...

string tikbankai[CMAX];
int cI = 0;
string bank = M.ImtiBankas(0);

bool yra = false;
while(!yra){
	cout << bank << ": " << endl;
	for(int i=0; i<M.ImtiSK(); i++){
		if(M.ImtiBankas(i) == bank){
			cout << M.ImtiVardas(i) << " " << M.ImtiNr(i) << endl;
			bool radom = false;
			for(int k=0; k<cI; ++k){
				if(tikbankai[k] == bank){
					radom = true;
				}
			}
			if(radom == false){
				tikbankai[cI++] = bank;
			}
		}
	}
	bool radom = false;
	for(int i = 0; i < M.ImtiSK(); ++i){
		for(int k = 0; k < cI; ++k){
			if(tikbankai[k] == M.ImtiBankas(i)){
				radom = true;
			}
		}
		if(radom == false){
			bank = M.ImtiBankas(i);
			break;
		}else{
			if(i == M.ImtiSK() - 1){
				yra = true;
			}else{
				radom = false;
			}
		}
	}
}

Destytojui tikrai nepatiks, o trumpiau niekaip nesugalvoju, kaip padaryti. Ir lyg nesudetingo dalyko prasau :). At imanoma kazkaip be 80 eiluciu funkcijos tai padaryti?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

šiek tiek trumpesnis variantas:

 

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;

struct Zmogus {
   string vard, bank, sask;
   int sk;
};

bool pagalBanka(const Zmogus& z1, const Zmogus& z2) {
   return (z1.bank < z2.bank);
}

int main() {
   freopen("d.txt", "r", stdin);
   //freopen("r.txt", "w", stdout);
   Zmogus z[5];
   for (int i = 0; i < 5; i++) {
       getline(cin, z[i].vard, ',');
       getline(cin, z[i].bank, ',');
       getline(cin, z[i].sask, ',');
       cin >> z[i].sk;
       cin.ignore(80, '\n');
   }
   sort(z, z + 5, pagalBanka);
   int p = 0, k = 0;
   string db = z[0].bank;
   while (p != 5) {
       if (k == 0) {
           cout << z[p].bank << ": " << endl;
           k = 1;
       }
       if (p + 1 != 5 && z[p+1].bank != db) {
           k = 0;
           db = z[p+1].bank;
       }
       cout << z[p].vard << " " << z[p].sask << " " << z[p].sk << endl;
       p++;
   }
}

 

bet čia tik šiaip, neuniversitetinio lygio programa.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

As taip noreciau kad butu pradzioj. Daug tvarkingiau programa atrodytu. Tik nezinau kaip tai padaryti. Yra vienas variantas Mapai. Su jais kolkas nesimokiau, bet manau kad patogu cia butu su jais. Kazkaip noretusi tradiciniais paprastais metodais padaryti, bet jau manau kad nelabai imanoma cia :D

Aš tai patarčiau pasižiūrėt Mapus ir pasidaryt. Nėra sudėtingas dalykas vis tik. Be to vistiek už metų teks mokytis. Bus ir lengviau, ir jau dabar būsi praplatinęs savo programavimo žinias.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Aš tai patarčiau pasižiūrėt Mapus ir pasidaryt. Nėra sudėtingas dalykas vis tik. Be to vistiek už metų teks mokytis. Bus ir lengviau, ir jau dabar būsi praplatinęs savo programavimo žinias.

Zinau. Beda ta kad ryt paskutinis atsiskaitymas. Nezinau ar sugebesiu padaryti. :D Nes as kaip ir pasidares, bet destyotjas patikrino ir sake kad sita vieta siulyciau koreguoti, nes salygoj vienas zodis skiriasi :D

Redagavo deividas707
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Aišku sugebėsi, padėsim jei ką :)

Dekui ;) matai yra labai negerai tas, kad as nesugalvoju algoritmo

void Vienodi(Matrica M, Matrica N, string bankai[]){
int k=0;
map<string, int>ban;
string elnr = M.ImtiBankas(0);
for(int i=0; i<M.ImtiSK(); i++){
	if(bankai[i] == elnr){
		// ka cia daryti, kad butu pasalinti vienodi bankai
	}
}
}

Pasirasiau ta baisini tanka, kur viskas ganetinai suprantama (nu bent man) bet kai reikia mazos f-jos man nelabai iseina. Sako destytojas kad as per sudetingai mastau, bet kitaip as nieko nesugalvoju. Va ir dabar kaip reiktu salinti is bankai masyvo pasikartojancia reiksme?

Nuoroda į pranešimą
Dalintis kituose puslapiuose


void AtrenkamSkirtingus(Duomenu_tipas Duomenys, string bankai[], int n) {
    for (int i = 0; i < Duomenys.ImtiSK(); i++)
         if (ArYra(Duomenys.ImtiBanka(i), bankai, n) == false)
            bankai[n++] = Duomenys.ImtiBanka(i);
} 

bool ArYra(string Bankas, string bankai[], int n) {
    for (int i = 0; i < n; i++)
         if (bankai[i] == Bankas) return true;
    return false;
}

void Spausdinam(Duomenu_tipas Duomenys, string bankai[], int n) {
    for (int i = 0; i < n; i++)
         cout << bankas[i] << ": ";
         for (int j = 0; j < Duomenys.ImtiSK(); j++)
              if (bankas[i] == Duomenys.ImtiBanka())
                  cout << "Cia atspausdini duomenis kazkokius apie ta zmogu";
}

maine tokie iskvietimai:
AtrenkamSkirtingus(Duomenys, bankai, n);
Spausdinam(Duomenys, bankai, n);

 

Pasireguliuok pagal save, klaidas kokias zioplas pataisyk, bet is esmes viskas turi veikt.

Redagavo hafnis1324
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Dekui ;) matai yra labai negerai tas, kad as nesugalvoju algoritmo

void Vienodi(Matrica M, Matrica N, string bankai[]){
int k=0;
map<string, int>ban;
string elnr = M.ImtiBankas(0);
for(int i=0; i<M.ImtiSK(); i++){
	if(bankai[i] == elnr){
		// ka cia daryti, kad butu pasalinti vienodi bankai
	}
}
}

Pasirasiau ta baisini tanka, kur viskas ganetinai suprantama (nu bent man) bet kai reikia mazos f-jos man nelabai iseina. Sako destytojas kad as per sudetingai mastau, bet kitaip as nieko nesugalvoju. Va ir dabar kaip reiktu salinti is bankai masyvo pasikartojancia reiksme?

 

Jei gerai supratau, tai tau reikia tiesiog:

Pasidaryt Mapą Map<String, Banko objektų vektorius>. Tada vieną kartą iteruot per bankų sąrašą ir į mepą sudėt visus objektus pagal raktą - banko pavadinimą

Redagavo Sharpaz
Nuoroda į pranešimą
Dalintis kituose puslapiuose


void AtrenkamSkirtingus(Duomenu_tipas Duomenys, string bankai[], int n) {
    for (int i = 0; i < Duomenys.ImtiSK(); i++)
         if (ArYra(Duomenys.ImtiBanka(i), bankai, n) == false)
            bankai[n++] = Duomenys.ImtiBanka(i);
} 

bool ArYra(string Bankas, string bankai[], int n) {
    for (int i = 0; i < n; i++)
         if (bankai[i] == Bankas) return true;
    return false;
}

void Spausdinam(Duomenu_tipas Duomenys, string bankai[], int n) {
    for (int i = 0; i < n; i++)
         cout << bankas[i] << ": ";
         for (int j = 0; j < Duomenys.ImtiSK(); j++)
              if (bankas[i] == Duomenys.ImtiBanka())
                  cout << "Cia atspausdini duomenis kazkokius apie ta zmogu";
}

maine tokie iskvietimai:
AtrenkamSkirtingus(Duomenys, bankai, n);
Spausdinam(Duomenys, bankai, n);

 

Pasireguliuok pagal save, klaidas kokias zioplas pataisyk, bet is esmes viskas turi veikt.

Dekui, nors sitas dalykas mane nebeveikia, bet aciu uz algoritma. Duoemnu_Tipas pas mane yra klase (Matrica M). Programa kompiliuoja, bet ji nuluzta ir raso, kad identifier "M" is undefinded. Gal bent isivaizduojat kas cia?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Su mapai's turetu buti kazkas panasaus:

include <vector>;
include <map>;

map<string, vector<Duomenu_tipas_apie_zmogu> > mapas;

for (int i = 0; i < Zmoniu_kiekis; i++)
    map[ZmoniuMasyvas.ImtiBanka(i)].push_back(ZmoniuMasyvas(i));

map<string, vector<Duomenu_tipas_apie_zmogu> >:: iterator it;
for (it = mapas.begin(); it != mapas.end(); it++)
    cout << it->first << ": "; // Atspausdina banko varda;
    (for int i = 0; i < it->second.size(); i++)
         cout << it->second[i] << endl; // Atspausdina duomenis apie zmogu, tikriausiai 
                                        // turetu buti kazkaip taip: 
                                        // it->second[i].ImtiVarda() << " " << 
                                        // it->second[i].ImtiDarKazka() ...

 

Dekui, nors sitas dalykas mane nebeveikia, bet aciu uz algoritma. Duoemnu_Tipas pas mane yra klase (Matrica M). Programa kompiliuoja, bet ji nuluzta ir raso, kad identifier "M" is undefinded. Gal bent isivaizduojat kas cia?

Siaip butu geriau kad imestum i koki pastebin pilna koda, nes dabar nelabai aisku kaip tu ten saugai tuos duomenis apie zmones, ar turi kazkoki tai zmoniu masyva, ar konteineri klase ar dar ka.

Redagavo hafnis1324
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Su mapai's turetu buti kazkas panasaus:

include <vector>;
include <map>;

map<string, vector<Duomenu_tipas_apie_zmogu> > mapas;

for (int i = 0; i < Zmoniu_kiekis; i++)
    map[Duomenys.ImtiBanka(i)].push_back(ZmoniuMasyvas(i));

map<string, vector<Duomenu_tipas_apie_zmogu> >:: iterator it;
for (it = mapas.begin(); it != mapas.end(); it++)
    cout << it->first << ": "; // Atspausdina banko varda;
    (for int i = 0; i < it->second.size(); i++)
         cout << it->second[i] << endl; // Atspausdina duomenis apie zmogu, tikriausiai 
                                        // turetu buti kazkaip taip: 
                                        // it->second[i].ImtiVarda() << " " << 
                                        // it->second[i].ImtiDarKazka() ...

 

 

Siaip butu geriau kad imestum i koki pastebin pilna koda, nes dabar nelabai aisku kaip tu ten saugai tuos duomenis apie zmones, ar turi kazkoki tai zmoniu masyva, ar konteineri klase ar dar ka.

Zinoma, kad galiu :), nors cia Jums daug laiko tikriausiai uzims http://pastebin.com/9NpSufhx

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Zinoma, kad galiu :), nors cia Jums daug laiko tikriausiai uzims http://pastebin.com/9NpSufhx

O dar klase "Matrica" pashare'ink, nes dabar bijau suklysti, nes manau, kad joje tu ten laikai vardu/numeri/banku masyvus?

 

EDIT: nvm.

Tokie pastebejimai. Pirma, funkcijos ArYra (ta, kur as parasiau) prototipa pasirasyk. Antra, funkcijoj AtrenkamSkirtingus n = 0; turetu but, o ne n = 6. Tas n rodo, kiek yra skirtingu banku, o pradzioje ju yra 0, tiesa? O siaip tai turetu veikt kaip ir viskas, tik spausdinima dar pasirasyt. Nezinau koki ten errora apie undifined kintamaji gauni, galetum visa nukopijuot gal?

Redagavo hafnis1324
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...