Заменить cout и cin на printf и scanf - C (СИ) (149322)

Узнай цену своей работы

Формулировка задачи:

#include <iostream>
using namespace std;
 
struct elem
{ 
  int info; // данные
  elem *next; // указатель на следующий элемент
};
 
elem *first=NULL; // указатель на начало списка
 
// добавляет элемент в список с учетом сортировки
void add_sort(int data)
{
  if (first==NULL)              // проверяем существует ли список
  {                             // если нет
    first=new (elem);           // выделяем память для элемента списка
    first->info=data;           // записываем в поле info данные
    first->next=first;          // указатель на следующий элемент = first
  }                             // first теперь указывает на первый элемент
  else                          // списка
  {                             // если список уже существует
    if (data < first->info)     // если элемент нужно вставить в начало
    {
      elem *adr,*adr1;          // объявляем вспомогательныe указатели
      adr1=first;               // записываем в adr адрес первого элемента
      while (adr1->next!=first) // до тех пор пока поле next по адресу adr
        adr1=adr1->next;        // переходим к следующему полю списка
      adr=new(elem);             // выделяем память для элемента списка
      adr->next=first;           // next нового элемента направляем на старый first
      first=adr;                 // переходим к новому элементу списку (новый first)
      first->info=data;          // записываем в поле info данные
      adr1->next=first;
    }
    else
    {
      elem *adr,*adr1;            // объявляем вспомогательные указатели
      adr=first;                  // записываем в adr адрес первого элемента
      while(adr->next!=first)     // до тех пор пока поле next по адресу adr
      {                           // не содержит first
        if (data < adr->next->info) // если data меньше adr->next->info
          break;                  // выходим из цикла
        adr=adr->next;            // переходим к следующему полю списка
      }
      // adr теперь указывает на элемент, после которого нужно вставить новый
 
      adr1=adr->next;           // запоминаем адрес элемента, следующего за вставляемым
      adr->next=new(elem);      // выделяем память для нового элемента списка
      adr=adr->next;            // переходим к новому элементу списку
      adr->info=data;           // записываем в поле info данные
      adr->next=adr1;           // указатель на следующий элемент = адрес следующего за вставляемым
    }
  }
}
 
// выводит список на экран
void print()
{
  if (first==NULL)              // проверяем существует ли список
  {                             // если нет
    cout << "Список пустой";
  }
  else
  {                             // если список уже существует
    elem *adr;                  // объявляем вспомогательный указатель
    adr=first;                  // записываем в adr адрес первого элемента
    while(adr->next != first)   // до тех пор пока поле next по адресу adr
    {                           // не равно first
      cout << adr->info << " "; // выводим на экран данные из поля info
      adr=adr->next;            // переходим к следующему полю списка
    }
    cout << adr->info << " ";   // выводим на экран данные из поля info последнего элемента
  }
  cout << endl;
}
 
// удаляет элемент из списка
void del(int data)
{
  if (first==NULL) return;            // если список не существует, выходим из функции
  elem *adr,*adr1;                    // объявляем вспомогательные указатели
  adr=first;                          // записываем в adr адрес первого элемента
  if (adr->info==data)                // если искомое поле находится в начале
  {                                   // списка, то
    adr1=first;                       // начиная с начала списка
    while (adr1->next!=first)         // в цикле 
      adr1=adr1->next;                // смещаемся к последнему элементу
    if (first==adr->next)             // если это единственный элемент в списке
    {
      first = NULL;                   // обнуляем указатель на начало списка
    }
    else                              // иначе
    {
      first=adr->next;                // записываем в first адрес следующего эл-а
      adr1->next=first;               // next последнего перенаправляем на новый first
    }
    delete adr;                       // удаляем первый элемент из памяти
  }
  else                                // если искомое поле находится не в начале
  {                                   // списка
    if (adr->next == first) return;   // если искать больше негде, то выходим из функции
    while(adr->next->info!=data)      // перебираем элементы списка до тех пор
    {                                 // пока adr->next->info не будет равно data
      adr=adr->next;                  // переходим к следующему полю списка
      if (adr->next == first) return; // если ничего не нашли, то выходим из функции
    }
    adr1=adr->next;                   // запоминаем адрес удаляемого элемента
    adr->next=adr->next->next;        // перезаписываем указатели
    delete adr1;                      // удаляем требуемый элемент
  }
}
 
int main()
{
  setlocale(LC_CTYPE, "russian_Russia.1251"); // для корректного вывода кириллицы на экран
  int v, a;
  while (1)
  {
    cout << "Сделайте выбор:" << endl;
    cout << "1 - добавление элементов" << endl;
    cout << "2 - просмотр содержимого" << endl;
    cout << "3 - удаление элементов" << endl;
    cout << "0 - выход" << endl;
    cin >> v;
 
    switch (v)
    {
      case 1: 
        cout << "Введите число: ";
        cin >> a;
        add_sort(a); // добавление элементов
        break;
      case 2:
        print(); // просмотр содержимого
        system("pause");
        break;
      case 3:
        cout << "Введите число для удаления из списка: ";
        cin >> a;
        del(a); // удаление элементов
    }
    if (v == 0) break;
  }
  // system("pause");
  return 0;
}

Решение задачи: «Заменить cout и cin на printf и scanf»

textual
Листинг программы
scanf("%d", &a);

Объяснение кода листинга программы

В данном коде происходит следующее:

  1. Используется функция scanf для ввода значения переменной a с помощью устройства ввода.
  2. Тип данных переменной a должен быть int (целое число).
  3. Функция scanf пытается считать значение из устройства ввода и сохранить его в переменной a.
  4. Если ввод корректен, то значение переменной a будет равно введенному числу.
  5. Если ввод некорректен или введенное значение не является числом, то переменная a будет не определена или будет содержать некорректное значение.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.556 из 5