C++

Тема в разделе "C/C++/C#", создана пользователем kolya, 8 фев 2010.

Статус темы:
Закрыта.
  1. kolya

    kolya Гость

    Всем привет:
    Задача:Дан файл, содержащий информацию о движении пригородных поездов. Структура записи файла:
    - номер поезда;
    - время отправления;
    - станция назначения;
    - время прибытия;
    - дни недели движения (е - ежедневно, р - рабочие дни, с - субботние и воскресные дни).
    Написать программу, выдающую
    - информацию о поездах, следующих до заданной станции по выходным дням, с указанием времени в пути (в порядке возрастания времени отправления);
    Входная таблица
    101 14:34 vnukovo 15:30 e
    112 14:40 pulkovo 16:23 c
    115 13:00 odincovo 15:00 p
    205 15:00 moskva 19:00 e
    132 12:05 vnukovo 14:20 c
    345 15:00 vnukovo 17:00 p
    234 16:45 kazan 18:50 p
    567 16:40 vnukovo 17:55 e
    Вызов:
    Код (C++):
    int main()
    ...
    clrscr();
    poiskST(ms, &n);
    sort(ms, n);
    vyvod(ms,n);
    ....

    void poiskST(struct POEZD ms[NMAX], int *n)
    {
    FILE *f;
    char zstnaz[15];    /* zadannui pynkt otpravlenia*/
    int a=0;                  /*nomer*/
    int p=0;//min
    int k=0; //perevod v sec
    int c=0;//chas
    int u=0;//perevod v sec
    int n1=0;//perevod v sec
    int i1=0;//perevod v sec
    int i=0;
    int j=0;
    struct POEZD tz;         /* tekyshaia zapis faila*/
    clrscr();
    f=fopen("F1.txt", "r");
    if (f==NULL)
    {
    puts ("Fail poezda.txt ne naiden");
    getch();
    return;
    }
    puts("\nVvedite pynkt naznachenia:");
    gets(zstnaz);
    u=strlen(zstnaz);
    rewind(f);
    *n=0;
    while (fgets(&tz,sizeof(struct POEZD),f)!= NULL)
    { if ((strncmp(tz.stnaz, zstnaz ,u)==0) && (tz.den[0]=='c' || tz.den[0] =='e') )
    {
    n1=atoi(&tz.prib);// просчет времени в пути
    i1=atoi(&tz.prib[3]);
    k=atoi(&tz.otpr);
    j=atoi(&tz.otpr[3]);
    n1=(n1*60)+i1;
    k=(k*60)+j;
    p=n1-k;
    c=0;
    while (p>=60)
    { p=p-60;
    c=c+1;
    }
    tz.nom[3]='\0';
    tz.stnaz[14]='\0';
    tz.den[2]='\0';
    strcpy(ms[*n].nom, tz.nom); //запись в массив
    strcpy(ms[*n].otpr, tz.otpr);
    strcpy(ms[*n].prib, tz.prib);
    strcpy(ms[*n].stnaz, tz.stnaz);
    (*n)++;
    }
    }//while
    fclose(f);
    }

    //  Funkcia sortirovki po nomeru
    void sort (struct POEZD ms[NMAX], int n)
    {
    int k,i; // parametry ciklov
    struct POEZD s; //dlia perestanovki elementov
    for (k=n-1; k>0; k--)
    for (i=0; i<k; i++)
    if (atof(ms[i].otpr) > atof(ms[i+1].otpr))
    {
    // perestanovka elementov
    s=ms[i];
    ms[i]=ms[i+1];
    ms[i+1]=s;
    }
    }
    void vyvod (struct POEZD ms[NMAX], int n)
    {int i;
    for ( i=0; i<n; i++)
    {
    printf("%s %s \n",ms[i].nom, ms[i].otpr);
    if ((i+1)%20 == 0)
    {
    puts("\nDlia prodolgenia nagmite lubuu klavishu");
    getch();
    }
    }
    }
    Проблема в том что я не могу вывести правильно таблицу результатов
    сейчас он выводит
    132 12:05 vnukovo
    101 14:34 vnukovo
    567 16:40 vnukovo а надо

    132 12:05 vnukovo 2с15m
    101 14:34 vnukovo 0c56m
    567 16:40 vnukovo 1c15m
     
  2. Sekt

    Sekt Гость

    а где запись после сортировки?
     
Загрузка...
Похожие Темы - C++
  1. Nadia_IT
    Ответов:
    0
    Просмотров:
    24
  2. kmm96
    Ответов:
    1
    Просмотров:
    25
  3. TriXel_01
    Ответов:
    5
    Просмотров:
    104
  4. acs-nexus
    Ответов:
    0
    Просмотров:
    93
  5. Ramzay
    Ответов:
    3
    Просмотров:
    135
Статус темы:
Закрыта.

Поделиться этой страницей