Размещение данных в статическом массиве байтов фиксированной размерности с контролем переполнения - C (СИ)

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

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

Всем привет. С лабой 3 не могу сообразить. Разработать две функции, одна из которых вводит с клавиатуры набор данных в произвольной последовательности и размещает в памяти в переменном формате. Другая функция читает эти данные и выводит на экран. Программа запрашивает и размещает в памяти несколько наборов данных при помощи первой функции, а затем читает их и выводит на экран при помощи второй. Размещение данных производить в статическом массиве байтов фиксированной размерности с контролем его переполнения. Вариант 10 10. Произвольная последовательность строк и целых переменных. Байт со значением 0 - обозначает начало строки (последовательность символов, ограниченная нулем). Байт со значением N является началом последовательности N целых чисел. Конец последовательности - два нулевых байта. Помогите, пожалуйста!
Вот код лабы 3
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #define N 100
  4. char a[N];
  5. void input();
  6. void print();
  7. void input()
  8. {
  9. int i;
  10. for (i = 0; i <= N; i++)
  11. {
  12. printf("Enter string and number: ");
  13. scanf_s("%s", a[i]);
  14. if (i == N)
  15. {
  16. printf("Array is full.");
  17. }
  18. }
  19. }
  20. void print()
  21. {
  22. int i;
  23. for (i = 0; i <= N; i++)
  24. {
  25. printf("%s", a[i]);
  26. }
  27. }
  28. void main()
  29. {
  30. input();
  31. print();
  32. _getch();
  33. }
Где тут ошибки? И как правильно.

Решение задачи: «Размещение данных в статическом массиве байтов фиксированной размерности с контролем переполнения»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #define N 100
  4.  
  5. char A[N];
  6. int *a;
  7. int i;
  8. char *str;
  9.  
  10.  
  11. void input();
  12. void print();
  13.  
  14. void main()
  15. {
  16.     input();
  17.     print();
  18.  
  19.     _getch();
  20. }
  21.  
  22. void input()
  23. {
  24. for(i = 0, a = (int*)A; i < N/sizeof(int); i++)
  25. {
  26.     a[i] = (int)i;
  27.     printf("Enter string and number: ");
  28.     scanf_s("%d", &a[i]);
  29. }
  30.  
  31. for(; str[i] != 0; i++)
  32. {
  33.     scanf_s("%c", &str[i]);
  34. }
  35. }
  36.  
  37. void print()
  38. {
  39.     for(i = 0; i < N; i++)
  40.     {
  41.         printf("%d ", a[i], "%s", str[i]);
  42.     }
  43. }

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

  1. Объявление переменных:
    • char A[N]; Объявление статического массива байтов (строки) фиксированной размерности N.
    • int *a; Указатель на первый элемент статического массива int (предполагается, что int занимает 4 байта).
    • int i; Переменная для контроля переполнения (предполагается, что 4 байта).
    • char *str; Указатель на первый элемент статического массива строки (предполагается, что строка занимает 1 байт).
  2. Объявление функций:
    • void input(); Функция для ввода данных в статический массив.
    • void print(); Функция для вывода данных из статического массива.
  3. В функции main() выполняются следующие действия:
    • Вызов функции input(); Ввод данных в статический массив.
    • Вызов функции print(); Вывод данных из статического массива.
  4. В функции input() выполняются следующие действия:
    • Цикл for для заполнения статического массива int.
    • Считывание строки и числа с помощью функции scanf_s().
  5. В функции print() выполняются следующие действия:
    • Цикл for для вывода данных из статического массива.
    • Вывод значения int и строки с помощью функции printf().
  6. В конце программы вызывается функция _getch() для приостановки выполнения программы до тех пор, пока пользователь не нажмет клавишу. Обратите внимание, что данный код не проверяет успешность выполнения функций scanf_s() и printf(), что может привести к возникновению неопределенного поведения.

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


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

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

14   голосов , оценка 4.286 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы