Пишу программу выводящую на экран таблицу с данными учеников.(ФИО, дата рождения, возраст). Программа работает, но при завершении выдает ошибку
Вызвано исключение: нарушение доступа для чтения. _Pnext было 0xC.
#include "stdafx.h"
#include <iostream>
#include <string>
#include <stdio.h>
#include <windows.h>
#include <conio.h>
using namespace std;
int p[4];
void space(int *x1, int *x2, int *x3, int *x4, int x5) { //Вычисление кол-ва пробелов в таблице
if ((*x1 >= *x2) && (*x1 >= *x3) && (*x1 >= *x4) && (*x1 >= x5)) {
p[0] = 3;
for (p[1] = 1; p[1] < *x1 + 3 - *x2; p[1]++);
for (p[2] = 1; p[2] < *x1 + 3 - *x3; p[2]++);
for (p[3] = 1; p[3] < *x1 + 3 - *x4; p[3]++);
for (p[4] = 1; p[4] < *x1 + 3 - x5; p[4]++);
}
if ((*x2 >= *x1) && (*x2 >= *x3) && (*x2 >= *x4) && (*x2 >= x5)) {
p[1] = 3;
for (p[0] = 1; p[0] < *x2 + 3 - *x1; p[0]++);
for (p[2] = 1; p[2] < *x2 + 3 - *x3; p[2]++);
for (p[3] = 1; p[3] < *x2 + 3 - *x4; p[3]++);
for (p[4] = 1; p[4] < *x2 + 3 - x5; p[4]++);
}
if ((*x3 >= *x1) && (*x3 >= *x2) && (*x3 >= *x4) && (*x3 >= x5)) {
p[2] = 3;
for (p[0] = 1; p[0] < *x3 + 3 - *x1; p[0]++);
for (p[1] = 1; p[1] < *x3 + 3 - *x2; p[1]++);
for (p[3] = 1; p[3] < *x3 + 3 - *x4; p[3]++);
for (p[4] = 1; p[4] < *x3 + 3 - x5; p[4]++);
}
if ((*x4 >= *x1) && (*x4 >= *x3) && (*x4 >= *x2) && (*x4 >= x5)) {
p[3] = 3;
for (p[0] = 1; p[0] < *x4 + 3 - *x1; p[0]++);
for (p[2] = 1; p[2] < *x4 + 3 - *x3; p[2]++);
for (p[1] = 1; p[1] < *x4 + 3 - *x2; p[1]++);
for (p[4] = 1; p[4] < *x4 + 3 - x5; p[4]++);
}
if ((x5 >= *x1) && (x5 >= *x3) && (x5 >= *x2) && (x5 >= *x4)) {
p[4] = 3;
for (p[0] = 1; p[0] < x5 + 3 - *x1; p[0]++);
for (p[2] = 1; p[2] < x5 + 3 - *x3; p[2]++);
for (p[1] = 1; p[1] < x5 + 3 - *x2; p[1]++);
for (p[4] = 1; p[4] < x5 + 3 - *x4; p[3]++);
};
}
struct man //Структура для хранения информации о людях
{
string fname;
string sname;
string fathername;
int d, m, y, a;
} ch[4];
int a2(int year, int day, int mounth) { //Вычисление возраста
SYSTEMTIME st;
GetSystemTime(&st);
int age = st.wYear - year;
if (mounth > st.wMonth)
if (day > st.wDay)
age--;
return age;
}
void out(string *name, string *sname, string *fname, int o, int f, int s, int *d, int *y, int *m, int *a) { //Вывод таблицы на экран
setlocale(LC_ALL, "rus");
cout << *sname;
for (int i = 0; i < s; i++)
cout << " ";
cout << *name;
for (int i = 0; i < f; i++)
cout << " ";
cout << *fname;
for (int i = 0; i < o; i++)
cout << " ";
printf("%02u.%02u.%u %u\n", *d, *m, *y, *a);
}
void in(int d, int m, int y, int i) { //Передача данных о дате рождения в структуру и вычисление возраста
ch[i].d = d;
ch[i].m = m;
ch[i].y = y;
ch[i].a = a2(ch[i].y, ch[i].d, ch[i].m);
};
int main()
{
int n[4], f[5], o[5], s[5];
setlocale(LC_ALL, "rus");
ch[0].fname = "Иван";
ch[0].sname = "Гармашев";
ch[0].fathername = "Юрьевич";
ch[1].fname = "Андрей";
ch[1].sname = "Крикливый";
ch[1].fathername = "Николаевич";
ch[2].fname = "Илья";
ch[2].sname = "Ковалев";
ch[2].fathername = "Александрович";
ch[3].fname = "Владислав";
ch[3].sname = "Дмитриев";
ch[3].fathername = "Артёмович";
in(04, 04, 2000, 0);
in(29, 11, 1999, 1);
in(12, 02, 1998, 2);
in(30, 10, 2000, 3);
for (int i = 0; i < 4; i++)
n[i] = ch[i].fname.size();
space(&n[0], &n[1], &n[2], &n[3], 3);
for (int i = 0; i < 5; i++)
f[i] = p[i];
for (int i = 0; i < 4; i++)
n[i] = ch[i].sname.size();
space(&n[0], &n[1], &n[2], &n[3], 7);
for (int i = 0; i < 5; i++)
s[i] = p[i];
for (int i = 0; i < 4; i++)
n[i] = ch[i].fathername.size();
space(&n[0], &n[1], &n[2], &n[3], 8);
for (int i = 0; i < 5; i++)
o[i] = p[i];
printf("Бригада №3\n\nКоличество членов бригады: 4\n\nФамилия");
for (int i = 0; i < s[4]; i++)
cout << " ";
cout << "Имя";
for (int i = 0; i < f[4]; i++)
cout << " ";
cout << "Отчество";
for (int i = 0; i < o[4]; i++)
cout << " ";
cout << "Дата Возраст";
cout << endl;
for (int i = 0; i < 4; i++)
out(&ch[i].fname, &ch[i].sname, &ch[i].fathername, o[i], f[i], s[i], &ch[i].d, &ch[i].y, &ch[i].m, &ch[i].a);
system("pause");
return 0;
}
int p[4];
...
for (int i = 0; i < 5; i++)
o[i] = p[i];
И радостно выход за границы массива при чтении, о чем вам Runtime и говорит.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Привожу код заготовки реализации идиомы pImpl с этого сайта
Здравствуйте, задача состоит в следующем : Изначально нам дан массив double, который нужно зашифровать xor-ом, я привожу массив double к char массиву...
Для формирования отчетов использую QWebEnginePage, из которого можно производить печать в PDF, все очень удобно, но присутствует проблема с печатью...
Изучаю Opengl 3x в исходном коде урока произошла ошибка gl