.
Отговор в тема
Резултати от 1 до 2 от общо 2
  1. #1

    Моля помогнете

    Здравейте на всички,
    в момента уча стуктури по информатика за c++.
    За домашно имам следната задача, ще приложа и решението ми, което мисля че има няколко съшествени грешки. А пък който може да помага.

    Условие:
    Да се напише програма, която създава структура Hospital с полета name, diagnose и days, указващи името на пациент в болница, диагнозата му и брой дни, прекарани там. Да се въведе число n и след него n на брой данни от тип Hospital. Да се изведат имената на тези пациенти, чиято диагноза е предварително зададена от клавиатурата. Да се изведат данните на пациента с най-дълъг престой в болницата.

    Примерен вход:
    3
    Georgi Petrov hepatit 8
    Ivailo Liliev morbili 15
    Martin Atanasov morbili 13
    morbili

    Примерен изход:
    Ivailo Liliev
    Martin Atanasov
    Ivailo Liliev morbili 15



    Ето и моят опит:

    #include<iostream.h>
    struct Hospital
    { char name[20];
    char s_name[20];
    char diagnose[20];
    double days; };
    int main()
    {
    int n,k=0;
    cin>>n;
    char your_diagnose[20];
    cin>>your_diagnose;
    Hospital a[35];
    for(int i=0;i<n;i++)
    {
    cin>>a[i].name;
    cin>>a[i].s_name;
    cin>>a[i].diagnose;
    cin>>a[i].days;
    }

    for(i=0;i<n;i++)
    {
    if(your_diagnose==a[i].diagnose) k=1;
    else k=0;
    }
    if(k==1) cout<<a[i].name;
    return 0;
    }


    Благодаря!

  2. #2
    Повече от фен
    Регистриран на
    May 2010
    Мнения
    425
    Код:
    #include<iostream>
    
    using namespace std;
    
    struct Hospital {
    
        char name[64];
        char s_name[64];
        char diagnose[64];
        int days;
    
    };
    
    int n;
    char your_diagnose[64];
    Hospital a[128];
    
    bool cmp(char c1[],char c2[]) {  //не можем да сравняваме 2 масива, затова трябва да си напишем функция, която прави това
    
        int n1=strlen(c1),n2=strlen(c2); //намираме дължината на 2те думи
    
        if(n1!=n2) return 0; //ако са с различна дължина значи нe еднакви
    
        for(int i=0;i<n1;i++) { //ако са с еднаква дължина обхождаме и двете думи и ако срещнем различна буква значи не са еднакви
            if(c1[i]!=c2[i]) return 0;
        }
    
        return 1; //ако дължините са равни и всички букви са еднакви значи 2те думи са еднакви
    
    }
    
    int main() {
    
        Hospital ans;
        int i,maxd=-1;
    
        cin>>n;
    
        for(int i=0;i<n;i++) {
            cin>>a[i].name>>a[i].s_name>>a[i].diagnose>>a[i].days;
        }
    
        cin>>your_diagnose;
    
        for(int i=0;i<n;i++) {
            if(cmp(your_diagnose,a[i].diagnose)) cout<<a[i].name<<" "<<a[i].s_name<<endl; //подаваме на горната функция 2те думи и ако върне 1 значи са еднакви
            if(a[i].days>maxd) { //проверяваме дали текущите максимални дни прекарани в болницата не са по-малки от дните прекарани от i-тия човек
                maxd=a[i].days; //ако е така на максималните дни присвояваме дните прекарани от i-тия човек
                ans=a[i]; //за да можем да изкараме накрая човека с максимални дни в болницата ни трябва ans, където ще запишем неговите данни
            }
        }
    
        cout<<ans.name<<" "<<ans.s_name<<" "<<ans.diagnose<<" "<<ans.days<<endl;
    
        return 0;
    
    }
    Ако не разбираш нещо кажи.

Правила за публикуване

  • Вие не можете да публикувате теми
  • Вие не можете да отговаряте в теми
  • Вие не можете да прикачвате файлове
  • Вие не можете да редактирате мненията си