Заменить 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);
Объяснение кода листинга программы
В данном коде происходит следующее:
- Используется функция scanf для ввода значения переменной
a
с помощью устройства ввода. - Тип данных переменной
a
должен быть int (целое число). - Функция scanf пытается считать значение из устройства ввода и сохранить его в переменной
a
. - Если ввод корректен, то значение переменной
a
будет равно введенному числу. - Если ввод некорректен или введенное значение не является числом, то переменная
a
будет не определена или будет содержать некорректное значение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д