Informatică, întrebare adresată de MaxMic, 8 ani în urmă

Afişează pe ecran lista oraşelor, ordonate după aşezarea geografică de la nord la sud in c++. Datele despre orase sunt incluse in fisiere.

Anexe:

andrei750238: Nu inteleg ce e cu numarul de pe ultima coloana.
MaxMic: oricum ele nu conteaza , dar sunt nr de locuitori.

Răspunsuri la întrebare

Răspuns de andrei750238
0

#include <iostream>

#include <fstream>

using namespace std;

int m,n;

struct pos{

int id;

int latit;

int longit;

} a[100];

struct city{

int id;

char nume[20];

char tara[20];

int loc;

} b[100]

int convert(char text){

int numar = 0;

int i = 0;

for(i=strlen(text);i>0;i++){

 numar = numar * 10 + (text[i]-'0');

}

if (v[0] == 'S' || v[i] == 'W') return -1*numar;

else return -1

}

void citeste(){

ifstream coord("coordonate.txt");

ifstream orase("orase.txt");

char temp[20]

 

while(!coord.eof()){

 coord >> a[n].id;

 coord >> temp;

 a[n].latit = convert(temp);

 coord >> temp;

 a[n].longit = convert(temp);

 n++;

}

 

while(!orase.eof()){

 orase >> b[m].id;

 orase >> b[m].nume;

 orase >> b[m].tara;

 orase >> b[m].loc;

 m++

}

coord.close();

coord.close();

}

int main(){

citeste();

pos maxim = a[0];

       int i,j = 0;

 

//Bubble sort

int ok = 1;

while(ok){

 ok = 0;

 for(i=0;i<n-1;i++){

  if (a[i] < a[i+1]){

   swap(a[i], a[i+1])

   ok = 1;

  }

 }

}

 

for(i=0;i<n;i++)

 for(j=0;j<m;j++){

  if (b[j].id == a[i].id){

   cout << b[i].nume << endl;

  }

 }

}

Netestat, pot exista cateva greseli dar asta e ideea.


MaxMic: Ajuta-ma te rog sa-l fac sa ruleze.
andrei750238: #include
#include
#include

using namespace std;

int m,n;
int vazute[100];

struct pos{
int id;
int latit;
int longit;
} a[100];

struct city{
int id;
char nume[20];
char tara[20];
int loc;
} b[100];
andrei750238: int convert(char text[]){
int numar = 0;
int i = 0;
for(i=1;i numar = numar * 10 + (text[i]-'0');
}
if (text[0] == 'S' || text[i] == 'W') return -1*numar;
else return numar;
}
andrei750238: void citeste(){

ifstream coord("coordonate.txt");
ifstream orase("orase.txt");
char temp[20];
while(!coord.eof()){

coord >> a[n].id;
coord >> temp;
a[n].latit = convert(temp);
coord >> temp;
a[n].longit = convert(temp);
n++;
}

while(!orase.eof()){

orase >> b[m].id;
orase >> b[m].nume;
orase >> b[m].tara;
orase >> b[m].loc;
m++;
}

coord.close();
coord.close();

}
andrei750238: int maxim(){
//Returneaza indexul elementului maxim nevazut
int mx = -180;
int index = -1;
int i;
for (i=0;i if (vazute[i]) continue;
if (a[i].longit >= mx) {
index = i;
mx = a[i].longit;
//cout << "\nDBG " << index << " " << mx;
}
}
vazute[index] = 1;
//cout << "Se returneaza " << index;
return index;
}

int main(){

citeste();
int i,j = 0;
int identif;

for (i=0;i identif = a[maxim()].id;
//Cauta in b numele orasului cu id respectiv
for(j=0;j if (b[j].id == identif) cout << b[j].nume << endl;
}
}
}
andrei750238: https://pastebin.com/FqQ9Yucv
andrei750238: Intra pe link si da copy paste la tot codul odata, asa nu o sa ai nici probleme cu spatiul alb in CodeBlocks
andrei750238: Am modificat putin metoda. In loc de bubble sort (care schimba intre ele itemii cu totul ) am folosit un maxim si un vector care memoreaza elementele deja afisate. Astfel cautam mereu maximul in elementele nevazute si as zice ca e mai OK pentru ca in memorie sa pastreaza ordinea initiala.
andrei750238: Erau destul de multe greseli in raspunsul inital sa fiu sincer, asta se intampla cand te grabesti si faci programul in notepad fara sa testezi nimic.
MaxMic: Multumesc)
Alte întrebări interesante