Список студентов и отмена набора - C (СИ)
Формулировка задачи:
Всем привет! Задача такая - сформировать список студентов, используя функцию, но так чтобы при нажатии клавиши ESC. формирование списка прекратилось.
Прошаренные помогите пожалуйста).
P.S.: Не пойму как совместить scanf(или getchar) и код клавиши getch() так чтобы не было дополнительного запроса на клавишу.
то есть вводишь студента, нажимаешь Enter (код 010 если помните по таблицам кодировки символов) и сразу цифра второго студента. Нужно нажать ESC(кода в таблице кодировки символов нет). чтобы ввод прекратился.
#include<stdio.h> #include<locale.h> #include<string.h> #include<windows.h> #define N 3 #define M 25 char spisok_studentov(); int main() { setlocale(0,""); system("chcp 1251 > nul"); spisok_studentov(); return 0; } char spisok_studentov() { char a[N][M]; int s=0, i=0, b[N][3]; printf("Введите список студентов\n"); while(i<N) { i++; printf("%d - ",i); scanf("%s",&a[i-1][0]); // printf(" Для продолжения нажмите любую клавишу\n для выхода нажмите ESC!\n"); - этот кусок требует дополнительного запроса. // if (getch()==0x00001b) break; }
собственно вопрос давно меня интересовал и актуален для любой программы. просто на примере этой спрашиваю
вопрос ещё актуален. как можно прервать цикл клавишей ESC запрашивающий ввод списка с клавиатуры?
ап!
Решение задачи: «Список студентов и отмена набора»
textual
Листинг программы
#include<stdio.h> #include<windows.h> #define N 10 #define M 27 int main() { int i=0, j; char a[N][M]; system("chcp 1251 > nul"); printf("Введите слово\n"); do { for(i=0;i<M;i++) { a[j][i]=getchar(); if(a[j][i]==10) break; } j++; printf("%s\n",a[i][0]); printf("Введите следующее слово: "); } while(a[j][i]!=27); return 0; }
Объяснение кода листинга программы
Вывод списка с номерами до 20 элементов:
- Включаются необходимые заголовочные файлы
- Определяются константы N и M (размер массива)
- Объявляется переменная i для итерации по массиву и переменная j для индекса
- Создается массив a[N][M] для хранения введенных символов
- Команда system(
chcp 1251 > nul
) меняет кодировку консоли на CP-1251 - Выводится сообщение
Введите слово
- Запускается цикл do-while, который выполняется до тех пор, пока не будет введено слово
27
- Внутри цикла do-while, используется вложенный цикл for для заполнения массива a[j][i] значениями, введенными пользователем
- Значение 10 в цикле for используется для прерывания цикла, когда вводится символ новой строки
- Значение 27 в цикле do-while используется для прерывания цикла, когда вводится слово
27
- После каждой итерации цикла do-while выводится текущее слово, введенное пользователем
- После каждой итерации цикла do-while выводится сообщение
Введите следующее слово:
- По завершении цикла do-while программа возвращает 0, что означает успешное завершение
- Ввод списка символов и команд обрабатывается в соответствии с кодировкой CP-1251 Список переменных и их значений:
- i - индекс для итерации по массиву (0)
- j - индекс для итерации по массиву (0)
- a[N][M] - массив символов (размер N на M)
- getchar() - функция для получения ввода пользователя (значение введенного символа)
- a[j][i] - текущее значение введенного символа
- 10 - символ новой строки (или ASCII 10)
- 27 - символ
27
(или ASCII 27) - printf() - функция для вывода информации на консоль
- system() - функция для выполнения системных команд
chcp 1251 > nul
- системная команда для изменения кодировки консоли на CP-1251Введите слово
- сообщение, выводимое на консольВведите следующее слово:
- сообщение, выводимое на консоль после каждого введенного слова27
- слово, которое пользователь должен ввести для выхода из программы- CP-1251 - кодировка, используемая для ввода и вывода символов
- ASCII 10 - числовое значение символа новой строки
- ASCII 27 - числовое значение символа
27
- 0 - значение, которое возвращает функция main() в случае успешного завершения
- N - размер первого измерения массива (10)
- M - размер второго измерения массива (27)
Размер массива
- количество элементов в массиве (N на M)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д