Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2014, 21:44   #1
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию Как правильно переписать программу на чистый C

Написал на С++, нужно было на чистом си.Можно просто по новому инициализировать переменные, в си типа string нет?Некоторые функции убрал, слишком большой код, полный на сайт кинул http://ideone.com/Jg8ZNw
Код:
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <windows.h>
using namespace std;
struct city
{
    string name_f;
    string name_p;
    string date;
    string genre;
    struct city *next;
    struct city *previous;
};
city *head=NULL;
city *last=NULL;
city *current=NULL; //текущий элемент
city *temp=NULL;
city *newList=NULL     ;
/* Процедура создания добавления в список */
void add_name(string namef_,string namep_, string date_, string genre_)
{
    if(head!=NULL)
     {
        newList=new city;
        newList->name_f=namef_;
        newList->name_p=namep_;
        newList->date=date_;
        newList->genre=genre_;
        newList->next=NULL;
        newList->previous=current;
        current->next=newList;
        last=newList;
        current=newList;               
     }
     else
     {  
         newList=new city;
         newList->name_f=namef_;
         newList->name_p=namep_;
         newList->date=date_;
         newList->genre=genre_;
         head=newList;
         newList->next=NULL;
         newList->previous=NULL;
         current=newList;
         last=head;//Забыли установить!!!
     }
}
  
/* Процедура удаления узла */
void delete_unit()
{                       newList=head;
                        if(newList == head->next)
                        {
                            delete head; //удаление элемента
                            head=NULL;
                        }
                        else
                        {
                            head=head->next;
                            head->previous=NULL;
                            delete newList;
                        }
}

/* Тело основной программы */
int main(void)
{
    setlocale(LC_ALL,"Russian"); 
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    string name_f;
    string name_p;
    string date;
    string genre;
    int key=-1;
        while(key)
        {
        cout<<"1. Enter name\n";
        cout<<"2. Delete name\n";
        cout<<"3. Show names\n";
        cout<<"4. Show names from end\n";
        cout<<"0. Exit\n";
        cin>>key;
        switch (key)
                    {
                    case 1: 
                        {
                            cout<<"Введите название театра\n";
                            cin>>name_f;
                            cout<<"Ведите название представления\n";
                            cin>>name_p;
                            cout<<"Ведите дату представления\n";
                            cin>>date;
                            cout<<"Ведите жанр  представления\n";
                            cin>>genre;
                            add_name(name_f,name_p,date,genre);
                            break;
                        }
                    case 2: 
                        {   
                            int n = count_L();
                            if(n == 0)
                            {
                                cout<<"Невозможноу удалить элементы в стеке 0 элементов";
                            }
                            else if (n == 1)
                            {
                                cout<<"Невозможноу удалить элементы в стеке 1 элемент";
                            }
                            else if (n > 2)
                            {
                                delete_unit();
                                delete_unit();
                            }
                            break;
                        }
                    case 3: 
                        {
                            cout<<"Список с лева на право\n";
                            show_list();
                            break;
                        }
                    case 4:
                        {
                            cout<<"Список с права на лево\n";
                            show_list_1();
                            break;
                        }
                    case 0: 
                        {
                            cout<<"Пока\n";
                            getch();
                            break;
                        }
                    default:
                        {
                            cout<<"Error\n";
                            getch();
                            break;
                        }
                    if (key==0) break;
                    }
        }
  return 0;
}

Последний раз редактировалось Stilet; 23.03.2014 в 23:01.
East Undia Trading вне форума Ответить с цитированием
Старый 23.03.2014, 22:00   #2
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Для начала - использовать char* вместо string, убрать using namespace, заменить cout/cin на printf/scanf, new/delete на malloc/free. Ну а дальше смотреть, на что компилятор материться будет.
Son Of Pain вне форума Ответить с цитированием
Старый 23.03.2014, 23:21   #3
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

Для начала он не определяет тип структуры вот тут city
Код:
*head=NULL;
и далее
Код:
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <windows.h>
typedef int DataType;
void print (DataType x)
{
     printf ("%d ", x);
}
struct city
{
    char name_f;
    char name_p;
    char date;
    char genre;
    struct city *next;
    struct city *previous;
};
city *head=NULL;
city *last=NULL;
city *current=NULL; //текущий элемент
city *temp=NULL;
city *newList=NULL     ;
East Undia Trading вне форума Ответить с цитированием
Старый 24.03.2014, 00:24   #4
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

Я все исправил, но не понимаю как мне выводить, если в Си нет string.У меня работает меню, но не выводит в прямом и обратном виде.
East Undia Trading вне форума Ответить с цитированием
Старый 24.03.2014, 01:36   #5
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

В общем вот что получилось http://ideone.com/Z5kY2e , зависает после ввода данных, кто хочет, может посмотреть.
East Undia Trading вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно сделать программу обновлений? Dux Работа с сетью в Delphi 13 13.06.2013 13:30
Как правильно переписать на квери Gefo JavaScript, Ajax 2 25.01.2013 22:34
Как правильно дописать программу на работу с текстовыми последовательностями? wuncshpuncsh Помощь студентам 0 19.12.2011 22:04
Как правильно запустить внешнюю программу с ожиданием ? oren_yastreb Общие вопросы Delphi 1 22.11.2010 18:26
Как правильно скомпилировать программу ГОСЕАН БД в Delphi 14 26.07.2007 13:18