Вывод переменных в цикле - C (СИ)
Формулировка задачи:
Проблема в цикле :
При вводе переменной add в цикле выдает совершенно другое число :
Как решить проблему с переменной (что бы в цикле отображались те же значения, что мы и вводим) ?
#include <stdio.h> #include <conio.h> int main () { int add=1,k=0; int a[k]; printf ("add= %d \n",add); while (add!=0) { printf ("Vvedite element massiva : "); scanf ("%d",&add); add=a[k]; k++; printf ("k= %d \n",k); printf ("add= %d \n",add); } printf ("k= %d \n",k); printf ("add= %d \n",add); printf ("nylevoi element massiva: %d",a[0]); getch (); return 0; }
Решение задачи: «Вывод переменных в цикле»
textual
Листинг программы
#include <stdio.h> #include <conio.h> #include <stdlib.h> int main () { int add,k=0,size=20; int* a=(int*)malloc(size*sizeof(int)); do { if(k=size-1) { size+=20; a=(int*)realloc(a,size*sizeof(int)); } printf ("Vvedite element massiva : "); scanf ("%d",&add); a[k]=add; k++; printf ("k= %d \n",k); printf ("add= %d \n",add); }while (add!=0); printf ("k= %d \n",k); printf ("add= %d \n",add); printf ("nylevoi element massiva: %d",a[0]); getch (); return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы:
stdio.h
для работы с функциями ввода-выводаconio.h
для работы с функциейgetch()
, которая используется для приостановки выполнения программы до тех пор, пока пользователь не введет данныеstdlib.h
для работы с функциейmalloc()
иrealloc()
, которые используются для выделения памяти под массив
- Создаем переменные:
add
для хранения введенного пользователем числаk
для хранения индекса текущего элемента массиваsize
для хранения размера массива
- Выделяем память под массив:
- Используем функцию
malloc()
для выделения памяти под массив, размер которого определяется переменнойsize
- Используем функцию
- Запускаем цикл do-while:
- Внутри цикла происходит чтение числа с помощью функции
scanf()
, которое сохраняется в переменнойadd
- Число затем сохраняется в соответствующем элементе массива
a
с использованием индексаk
- Индекс
k
увеличивается на 1 после каждого добавления элемента в массив - После добавления элемента в массив выводится сообщение об успешном добавлении с использованием функции
printf()
- Внутри цикла происходит чтение числа с помощью функции
- Изменяем размер массива при необходимости:
- Если значение
k
равноsize-1
, то это означает, что массив полон, и его размер нужно увеличить - Используем функцию
realloc()
для выделения новой памяти под массив с новым размером - Значение
size
увеличивается на 20 для обеспечения достаточного размера массива
- Если значение
- Выводим сообщения об успешном добавлении и об окончании ввода данных:
- После окончания цикла
do-while
выводится сообщение с текущим значениемk
иadd
- После цикла программа выводит сообщение с первым элементом массива, используя индекс 0
- После окончания цикла
- Приостанавливаем выполнение программы до тех пор, пока пользователь не нажмет клавишу:
- Используем функцию
getch()
для приостановки выполнения программы до тех пор, пока пользователь не введет данные
- Используем функцию
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д