Results 1 to 6 of 6

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Registered User marto96's Avatar
    Join Date: May:2008
    Location: Ñîôèÿ
    Posts: 2,211

    Ïðîáëåì ñúñ string

    Çäðàâåéòå. Òîâà å ÷àñò îò ïðîãðàìà (ñòðóêòóðà çà òóðèñòè÷åñêà ôèðìà), êúäåòî òðÿáâà äà ñå èçêàðà èìåòî íà íàé-âúçðàñòíèÿ òóðèñò. Ñðàâíÿâàì ãîäèíèòå, íî íå ìîãà äà èçêàðàì èìåòî íà íàé-âúçðàñòíèÿ òóðèñò.

    Åòî êîäà:
    Code:
    #include <iostream>
    using namespace std;
    
        struct Tourist
               {
                      char names[50];
                      int age;
               };
               
        int main()
            {
                  Tourist tourists[30];
    
                  int n;
                  cout<<"Enter number of tourists: ";
                  cin>>n;
                  cout<<endl;
                         
                         int i;
                         for(i=0;i<n;i++)
                                        {               
                                         cout<<"Enter three names: ";
                                         cin>>tourists[i].names;
                                         cout<<"Enter age: ";
                                         cin>>tourists[i].age;
                                         cout<<endl;            
                                        }
                         
                                          
                         int max=tourists[0].age;
                         string nmp;
                         for(i=0;i<n;i++)
                                          {
                                           if(tourists[i].age>max)
                                           {
                                            max=tourists[i].age;
                                            nmp=tourists[i].names;
                                           }
                                          }
                                          cout<<"The oldest person is: "<<nmp;
                                          cout<<endl;
                                          
                                          
                                          
        system("pause>nul");
        return 0;
            }
    Ïîëçâàì Dev C++, ïîíåæå èìàì ïðîáëåìè ñ Code Blocks. Èìà íÿêàêâà ãðåøêà â óñëîâèåòî, äîáàâèõ è "else nmp=tourists[0].names;", íî ðàáîòè ñàìî àêî ñå âúâåäàò äâàìà òóðèñòè.
    ASRock B450M Pro4 / 5700X@4.5GHz / MSI RX 6600 XT Mech 2X / be quiet! Dark Rock 4 / 2x16GB FlareX 3200MHz CL16 / FSP Hydro G Pro 1000W / Samsung Odyssey G5 S27AG50

  2. #2
    Âåãàí íà ìåñíà äèåòà XaMaB's Avatar
    Join Date: Nov:2001
    Location: Ñîôèÿ
    Posts: 20,387
    Âìåñòî nmp, ìîæå äà ïàçèø ñàìî èíäåêñà íà íàé-äúðòèÿ.
    Ïî-ìàëêî ïàìåò, à è ñè çàîáèêàëÿø ïðîáëåìà ñúñ string-a
    Ïîñëåäíà ðåäàêöèÿ: èçâúðøåíà îò XaMaB; íà äíåøíà äàòà. 0.42 ñåêóíäè ñëåä ïóñêàíå íà ïîñòà

    In God we Trust (all others must submit a X.509 certificate). Àêî ñïîðèø ñ èäèîò, âåðîÿòíî è òîé ïðàâè ñúùîòî èëè ñè ïîïàäíàë íà ïàðòèåí (íåïúëåí) ÷ëåí

  3. #3
    Registered User
    Join Date: Sep:2013
    Location: Bulgaria
    Posts: 59
    Àç ñúì ñ VS 2013 Express è ïðè ìåí ðàáîòè äîíÿêúäå. Ñàìî ÷å òàì êúäåòî âúâåæäàø èìåíàòà ñè íàïèñàë "Enter three names: " è êàòî íàïèøà 3 èìåíà ðàçäåëåíè ñ èíòåðâàëè ñå ðàçâàëÿ ïðîãðàìàòà. Êîãàòî èçïîëçâàø cin, çíàé ÷å âúâåæäàø ñèìâîëè äîêàòî íå íàòèñíåø enter èëè space è òàêà êàòî âúâåäåø 3 èìåíà ðàçäåëåíè ñ èíòåðâàë ïðîãðàìàòà ñå îáúðêâà. Ìèñëÿ ÷å òîâà òè å ïðîáëåìà. Àç áèõ çàìåíèë char ìàñèâà ñ îáèêíîâåí string è áèõ âúâåæäàë ñ ôóíêöèÿòà getline.
    Íåùî òàêîâà:

    Code:
    struct Tourist
               {
                      string names;
                      int age;
               };
    // ....
    
    int main()
    {
    // .....
    
    getline(cin, names);
    
    //....
    }
    Ï.Ï.: Äà çíàåø ÷å àêî ïðåäè òàçè ôóíêöèÿ getline ñè íàòèñíàë Enter, òî â string-à òè äèðåêòíî ñå çàïèñâà "\n". Ïðèìåð:

    Code:
    //...
    int n;
    string names;
    //...
    cin>>n; /* Òóê íàòèñêàø Enter çà äà âúâåäåø ñòîéíîñò, íî àêî íÿìàø ñëåäâàùèÿ ðåä, â names ñå çàïèñâà "\n" */
    
    cin.ignore(1, '\n'); //ÎÊ. Â names íå ñå çàïèñâà "\n"
    getline(cin,names);
    
    //...

  4. #4
    Registered User marto96's Avatar
    Join Date: May:2008
    Location: Ñîôèÿ
    Posts: 2,211
    Ïúðâîíà÷àëíî ãî áÿõ íàïðàâèë ñúñ cin.getline, íî ïîñëå ðåøèõ äà ãî ìàõíà è ñúì çàáðàâèë äà ïðîìåíÿ òåêñòà. Ùå ïðîáâàì ñúñ string äàëè ùå ñòàíå.
    ASRock B450M Pro4 / 5700X@4.5GHz / MSI RX 6600 XT Mech 2X / be quiet! Dark Rock 4 / 2x16GB FlareX 3200MHz CL16 / FSP Hydro G Pro 1000W / Samsung Odyssey G5 S27AG50

  5. #5
    Registered User
    Join Date: Dec:2007
    Location: Sofia
    Posts: 366
    Àêî íàé-âúçðàñòíèÿò òóðèñò å ïúðâèÿ âúâåäåí, ñòðèíãà ùå ñè îñòàíå ïðàçåí (ïîíåæå íèêîãà íÿìà äà âëåçåø â 'if' áëîêà).

  6. #6
    Registered User ined's Avatar
    Join Date: Nov:2006
    Location: Varna
    Posts: 1,078
    Àìè àêî èìà ïîâå÷å îò åäèí òóðèñò ñ max ãîäèíè, èçâåæäàìå ïúðâèÿ èëè ãè èçâåæäàìå âñè÷êèòå?

    Code:
    #include <iostream>
    
    using namespace std;
    
    #define MAXT 30
    #define MAXN 50
        
        struct Tourist
               {
                      char names[MAXN];
                      int age;
               };
               
        int main()
            {
                  Tourist tourists[MAXT];
    
                  int i, n, max=-1;
                  
                  do {
                       cout<<"Enter number of tourists[1.."<<MAXT<<"]: ";
                       cin>>n;
                       cout<<endl;
                       } while ((n<1)||(n>MAXT));
                         
                  for(i=0;i<n;i++) {
                                                       
                       cout<<"Enter three names: ";
                       cin.ignore(1, '\n');
                       cin.getline(tourists[i].names,999,'\n');
                       tourists[i].names[MAXN-1] = '\0';
                                                 
                       cout<<"Enter age: ";
                       cin>>tourists[i].age;
                       cout<<endl;  
                       if (max<tourists[i].age) 
                             max = tourists[i].age;          
                  }
                                                               
                  cout<<"The oldest person(s) is: \n";
                  for (i=0;i<n;i++) 
                      if (tourists[i].age==max) 
                           cout<<tourists[i].names<<endl;
                  
                  system("pause>nul");
                  return 0;
            }
    [edit] Äíåñ íàïðàâèõ íÿêîè ïðîìåíè â êîäà òàêà, ÷å äà íÿìà ãðåøêè îò âúâåæäàíåòî íà ïðåêàëåíî
    ãîëÿì áðîé òóðèñòè èëè ïúê ïðåêàëåíî äúëãè èìåíà.
    Last edited by ined; 7th December 2013 at 23:16.
    ASRock B85 Pro4, Pentium G3240, DD3 8GB/1333MHz, 120GB SSD + 1TB + 640GB HDD
    Gigabyte GV-R657OC-1GI, CM B500, ASUS 24B1S1, LCD SAMSUNG SM931BW, ÌÅ173Õ

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Copyright © 1999-2011 Õàðäóåð ÁÃ. Âúçìîæíî å ñúäúðæàíèåòî íà òàçè ñòðàíèöà äà å îáåêò íà àâòîðñêè ïðàâà.
iskamPC.com | mobility.BG | Bloody's Techblog | Êðèïòîâàëóòè è ìàéíèíã | 3D Vision Blog | Ìàãàçèí çà åëåêòðîííè öèãàðè