Вывод переменных в цикле - 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()для приостановки выполнения программы до тех пор, пока пользователь не введет данные
- Используем функцию