Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: orase  (Citit de 1367 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
toxikal
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 1



Vezi Profilul
« : Octombrie 06, 2012, 19:37:12 »

urmatoarelel date se citesc din fisier,fiind nominalizat un oras de la tastatura,sa se determine cel mai apropiat oras de acesta:

in fisierul "in.txt" avem:
15
Timisoara 45.7494 21.2272
Lugoj 45.6886 21.9031
Cluj 46.7667 23.6
Bucuresti 44.4226 26.1237
Craiova 44.3167 23.8
Constanta 44.18 28.63
Iasi 47.17 27.57
Deva 45.8833 22.9
Arad 46.19 21.32
Sibiu 45.79 24.13
Oradea 47.0667 21.9333
Bacau 46.5667 26.9
Galati 45.44 28.04
Pitesti 44.85 24.8667
//primul nr este latitudinea, al doilea longitudinea

#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
struct oras
{
   char nume[20];
   float lat,longi;
};
oras x[26];
int main()
{
   ifstream in("in.txt");
   int n,i,sw;
   float aux,m1lat,m2lat,m1longi,m2longi,z1,z2;
   char s[50],*p,q[10],w[10];
   in>>n;
   for(i=1;i<=n;i++)
   {
      in.getline(s,50);
      p=strchr(s,' ');
      strncpy(x.nume,s,p-s);
      x.nume[p-s]=0;
      strcpy(s,s+p+1);//<---
      p=strchr(s,' ');
      strncpy(q,s,p-s);
      q[p-s]=0;
      x.lat=atoi(q);
      strcpy(s,s+p+1);
      p=strchr(s,0);
      strncpy(w,s,p-s);//<---
      w[p-s]=0;
      x.longi=atoi(w);
   }
   do
   {
      sw=0;
      for(i=1;i<=n;i++)
         if(x.lat>x[i+1].lat)
         {
            aux=x.lat;
            x.lat=x[i+1].lat;
            x[i+1].lat=aux;
            sw=1;
         }
         else
            if(x.longi>x[i+1].longi)
            {
               aux=x.longi;
               x.longi=x[i+1].longi;
               x[i+1].longi=aux;
               sw=1;
            }
   }while(sw==1);
   cout<<"introduceti oras:";
   cin.getline(s,50);
   for(i=1;i<=n;i++)
      if(strcmp(s,x.nume)==0)
      {
         if(i==1)
            cout<<x[i+1].nume;
         else
         {
            m1lat=x[i+1].lat-x.lat;
            m1longi=x[i+1].longi-x.longi;
            z1=m1lat+m1longi;
            m2lat=x.lat-x[i-1].lat;
            m2longi=x.longi-x[i-1].longi;
            z2=m2lat+m2longi;
            if(z1<z2)
               cout<<x[i+1].nume;
            else
               cout<<x[i-1].nume;
         }
      }
}

erorile care apar la compilare:
invalide operands of types `char[50]' and `char*' to binary `operator+'(randurile insemnate cu sageata)
in plus, nu stiu daca lat si longi sunt float cand le extrag din sir.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines