Size: a a a

2020 December 15

РО

Ростислав Овдий... in pro.cxx
Konstantin
какой ответ ты ожидаешь услышать не задав вопрос?
Секунду, щас скину, делал скрин ошибки
источник

РО

Ростислав Овдий... in pro.cxx
#include <iostream>
#define N 9
using namespace std;

struct Film
{
   string name;
   string genre;
   string time;
};

struct Queue
{
   int head = 0, tail = 0;
   Film Films[N];
};

bool empty(Queue* m)
{
   if (m->head == m->tail)
   {
       return true;
   }
   else
   {
       return false;
   }
}

int size(Queue* m)
{
   return (m->head - m->tail + 1 + N) % N;
}

Film front(Queue* m)
{
   if (!empty(m)) return m->Films[m->head];
}

void push(Film element, Queue* m)
{
   if ((m->tail + 1) % (N + 1) != m->head)
   {
       m->Films[m->tail] = element;
       m->tail = (m->tail + 1) % (N + 1);
   }
   else
   {
       cout << "STACKOVERFLOW" << endl;
   }
}

void pop(Queue* m)
{
   if (!empty(m)) m->head = (m->head + 1) % (N + 1);
   else cout << "STACKUNDERFLOW" << endl;
}

void print(Queue* m)
{
   Queue new_m = *m;
   Film new_message;

   if (empty(&new_m))
   {
       cout << "The stack is empty." << endl;
   }
   else while (!empty(&new_m))
   {
       new_message = front(&new_m);
       cout << "Massage (Name: " << new_message.name << ", Genre: " << new_message.genre << ", Time: " << new_message.time << ")" << endl;
       pop(&new_m);
   }
   cout << endl;
}

int main()
{
   Queue messages;
   Film new_message;

   cout << "---Task 1---" << endl;
   cout << "Messages:" << endl;
   for (int i = 0; i < 7; i++)
   {
       cout << "Enter new message Name/Genre/Time: ";
       cin >> new_message.name >> new_message.genre >> new_message.time;
       push(new_message, &messages);
   }
   cout << "Result:" << endl;
   print(&messages);

   cout << "---Task 2---" << endl;
   cout << "Messages:" << endl;
   for (int i = 0; i < 4; i++)
   {
       cout << "Enter new message Name/Genre/Time: ";
       cin >> new_message.name >> new_message.genre >> new_message.time;
       push(new_message, &messages);
   }
   cout << "Result:" << endl;
   print(&messages);

   cout << "---Task 3---" << endl;
   cout << "Messages:" << endl;
   for (int i = 0; i < 6; i++) pop(&messages);
   cout << "Result:" << endl;
   print(&messages);

   cout << "---Task 4---" << endl;
   cout << "Messages:" << endl;
   for (int i = 0; i < 2; ++i) {
       new_message = front(&messages);
       new_message.time;
       push(new_message, &messages);
   }
   cout << "Result:" << endl;
   print(&messages);

   cout << "---Task 5---" << endl;
   cout << "Messages:" << endl;
   for (int i = 0; i < 6; i++) pop(&messages);
   cout << "Result:" << endl;
   print(&messages);
}
источник

РО

Ростислав Овдий... in pro.cxx
ошибка в 45 строке
источник

Е

Егор in pro.cxx
Ростислав Овдий
ошибка в 45 строке
считать сверху или снизу?
источник

РО

Ростислав Овдий... in pro.cxx
ахах
источник

РО

Ростислав Овдий... in pro.cxx
сорян
источник

РО

Ростислав Овдий... in pro.cxx
ошибка в этой функции: void push(Film element, Queue* m)
{
   if ((m->tail + 1) % (N + 1) != m->head)
   {
       m->Films[m->tail] = element;
       m->tail = (m->tail + 1) % (N + 1);
   }
   else
   {
       cout << "STACKOVERFLOW" << endl;
       
   }
}
источник

РО

Ростислав Овдий... in pro.cxx
а звучит вот так: Вызвано исключение по адресу 0x7BAA411F (vcruntime140d.dll) в файл.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x5712D5AE.
источник

K

Konstantin in pro.cxx
вероятно, ты вышел за пределы массива. Лучше задай этот вопрос в @supapro
источник

РО

Ростислав Овдий... in pro.cxx
Спасибо)
источник

AM

Anton Mikhaliou in pro.cxx
Всем привет, может кто-то с опенмп работал, очень нужно помощь
Есть лаба на тему метода гаусса и по каким-то магическим причинам, с openmp работает в 10 раз медленее, чем без него
Я уже просто не знаю куда кидаться
https://www.onlinegdb.com/SJT17zB2P
источник

A

Alex in pro.cxx
я бы проверил на паре машин с разными ЦП, по возможности. Если нет ошибки в коде, то могу думать только на хитрости кэша (взаимовытеснение потоками линий кэша, в т. ч. false sharing).
Результат правильный с omp?
Нужно добавить валидацию результата вычислений
источник

AM

Anton Mikhaliou in pro.cxx
Alex
я бы проверил на паре машин с разными ЦП, по возможности. Если нет ошибки в коде, то могу думать только на хитрости кэша (взаимовытеснение потоками линий кэша, в т. ч. false sharing).
Результат правильный с omp?
Нужно добавить валидацию результата вычислений
Да, результат одинаковый, проблема именно во времени
К сожалению нет возможности запустить еще где-то, так как еле получилось запустить хоть как-то в онлайне(долбаный мак с 10 либами никак не хавает)
источник

D

Dmitriy in pro.cxx
Anton Mikhaliou
Всем привет, может кто-то с опенмп работал, очень нужно помощь
Есть лаба на тему метода гаусса и по каким-то магическим причинам, с openmp работает в 10 раз медленее, чем без него
Я уже просто не знаю куда кидаться
https://www.onlinegdb.com/SJT17zB2P
Уже на выделении матрицы слово "оптимизация" в прах рассыпалось...
источник

AM

Anton Mikhaliou in pro.cxx
Dmitriy
Уже на выделении матрицы слово "оптимизация" в прах рассыпалось...
чукча не мастер плюсов, код был честно стыбжен на cyberforum и сейчас нахожусь в попытке понять как же так
источник

ПК

Побитый Кирпич... in pro.cxx
fulcanelly
как минимум в работе с json используют
Там не any будет, а вариант, полагаю. А any нужен чтоб со скриптами стыковаться (где дин. типизация)
источник

D

Dmitriy in pro.cxx
Побитый Кирпич
Там не any будет, а вариант, полагаю. А any нужен чтоб со скриптами стыковаться (где дин. типизация)
Поддерживаю
источник

f

fulcanelly in pro.cxx
Побитый Кирпич
Там не any будет, а вариант, полагаю. А any нужен чтоб со скриптами стыковаться (где дин. типизация)
tagged union больше памяти занимет))
источник

f

fulcanelly in pro.cxx
а any на rtti работает
источник

f

fulcanelly in pro.cxx
Побитый Кирпич
Там не any будет, а вариант, полагаю. А any нужен чтоб со скриптами стыковаться (где дин. типизация)
так что во всех реализациях
источник