Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не могу исправит ошибку 
:(
    Опции темы
Jeronymo
Дата 17.5.2010, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 9.5.2010

Репутация: нет
Всего: нет



при выводе всего списка не выдает верную информацию.
Не могу понять что не так, помогите. Заранее спасибо.

#include <stdio.h>
#include <tchar.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>

//Основная структура списка
typedef struct bus
{
    unsigned int id;//Идентификатор элемента
    unsigned int next;//Идентификатор следующего элемента
    unsigned int number;//Номер автобуса
    unsigned int Notrack[20];//Станция назначения
    char nam[15]; // Имя водителя
    char fam[20]; // Фамилия водителя
    };
bus * buss;//Список
unsigned int num_buss;//Кол-во элементов списка

//Процедура ввода данных
void InputData()
{
    int result;
    unsigned int num;

    //Запрашиваем кол-во автобусов
    //Далее используем подобные циклы для возращения к вводу при некорректных данных
    do
    {
        printf("\nВведите количество поездов:");
        result=scanf("%u",&num);
        if(!result)
        {
            printf("\nОшибка!\n");
            //Чистим буфер ввода
            fflush(stdin);
        }
    }while(!result);
    //Цикл ввода автобусов
while(num)
    {
    
        //динамически меняем размер списка при добавлении нового элемента
        buss=(bus*)realloc(buss,(num_buss+1)*sizeof(bus)+1);
        if(buss!=NULL)
        {
            //присваеваем идентификатор элементу
            buss[num_buss].id=num_buss;
            //связываем список
            if(num_buss)buss[(num_buss-1)].next=buss[num_buss].id;

            //увеличиваем количество записей
            num_buss++;            
        
            //ввод номера автобуса
            //зацикливаем если некорректный ввод
            do
            {
                printf("\nВведите номер автобуса:");
                result=scanf("%u",&buss[(num_buss-1)].number);
                if(!result){printf("\nНеверный номер!\n");fflush(stdin);}
            }while(!result);

            //ввод номере маршрута
            printf("Введите номер маршрута:");
            scanf("%u",&buss[(num_buss-1)].Notrack);

            //ввод имени и фамилии водителя
                printf("Введите имя водителя:");
            scanf("%s",&buss[(num_buss-1)].nam);
            printf("Введите фамилию водителя:");
            scanf("%s",&buss[(num_buss-1)].fam);
            
        }
        num--;
    }
}

//Процедура вывода всех элементов списка
void ListAll()
{
    //если кол-во элементов - 0 - выводим сообщение
    if(!num_buss){printf("\nСписок пуст!\n");}
    else
    {
        unsigned int num=0;
        //иначе - вывод списка в цикле
        while(num<num_buss)
        {
            printf("\nАвтобус %u Номер маршрута %u. Имя водителя %s: Фамилия водителя %s:%u\n",buss[num].number,buss[num].Notrack,buss[num].nam,buss[num].fam);
            num++;
        }
    }
}

//Процедура вывода информации о Автобусе
void busInfo()
{
    unsigned int num_tr,num;
    int result;
    do
    {
        printf("\nВведите номер автобуса:");
        result=scanf("%u",&num_tr);
        if(!result){printf("\nНеверный номер!\n");fflush(stdin);}
    }while(!result);

    num=0;

    //пробегаем в цикле по всем элементам списка
    while(num<num_buss)
    {
        //если номер автобуса соответтвует введенному - выводим запись
        if(buss[num].number==num_tr)
        {
            printf("\nНомер маршрута:%u. Номер автобуса:%u:%u\n",buss[num].Notrack,buss[num].number);
            break;
        }
        num++;
    }
}

//Точка входа
int _tmain(int argc, _TCHAR* argv[])
{    
    //пишем по-русски
    setlocale(LC_ALL, "Russian");

    //инициализация списка
    //получаем указатель на пустой список
    num_buss=0;
    buss=(bus*)malloc(1);
    if(buss!=NULL)
    {
    
        unsigned int mItem=0;

        //Меню действий
        while(1)
        {
        
            fflush(stdin);
            printf("\nИнформационная система автовокзала\n\n");    
            printf("1.Ввод данных\n");
            printf("2.Вывод всего списка\n");
            printf("3.Вывод информации об Автобусе\n");
            printf("4.Выход\n");
            printf(">");
            scanf("%u",&mItem);

            if(mItem && mItem<5)
            {
                if(mItem==4)break;//4-выход
                switch(mItem)
                {
                    case 1:InputData();break;
                    case 2:ListAll();break;
                             case 3:busInfo();break;
                                    }
            }
            printf("\n------------------------------------\n");
        }
        //Освобождаем память списка
        if(buss!=NULL)free(buss);
    }        
    return 0;
}

PM MAIL   Вверх
mes
Дата 17.5.2010, 14:47 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Jeronymo @  17.5.2010,  13:24 Найти цитируемый пост)
Не могу понять что не так, помогите. 

ну прежде всего не так - это отсутствие  обрамления кода соответствующеми тегами.. никому неохота ломать глаза..



--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0420 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.