0 / 0 / 0
Регистрация: 27.09.2021
Сообщений: 18
|
|
1 | |
Из массива выходят странные числа18.04.2023, 18:12. Показов 1032. Ответов 4
Здравствуйте у меня проблема, при создании массива генерируются правильные числа, а при взятии этих чисел в другой файл выводится всякая фигня. Помогите пожалуйста исправить, вот мой код:
#include <iostream> #include <fstream> #include <vector> #include <string> #include <stdlib.h> #include <pthread.h> #include <unistd.h> #include <sys/syscall.h> void swap (int & num_1, int & num_2){ int temp { num_1}; num_1 = num_2; num_2 = temp; } typedef struct{ std::string file_input; int num_string; std::string file_out; } pthrData; void generate_array (std::string file_name_arr , int max_num){ std::ofstream out {file_name_arr}; for (int i = 0; i < 5; ++i){ for (int j = 0; j < 25; ++j) { out << rand() % (max_num + 1) + 1 <<" "; } out << std::endl; } out.close(); } void expand (std::string file_name_arr, int num_string, std::string file_name_res){ std::ifstream in {file_name_arr}; int arr [5][25]; for (int i= 0; i < 5; ++i) { for (int j = 0; j < 25; ++j) { in >> arr[i][i]; } } in.close(); for (int i = 0; i < 12; ++i) { swap(arr[num_string][i], arr[num_string][24 - i]); } std::ofstream out {file_name_res}; for (int j = 0; j < 25; ++j) { out << arr[num_string][j] << " "; } out.close(); } void* threadFunc(void* thread_data){ pthrData *data = (pthrData*) thread_data; expand(data->file_input, data->num_string, data->file_out); std::cout << " Stream number " << data->num_string + 1 << " ID: " << gettid() << std::endl; return NULL; } int main() { generate_array("array.txt", 100); pthrData threadData[5]; pthread_t threads [5]; for(int i = 0; i < 5; i++){ int status; threadData[i].num_string = i; threadData[i].file_input = "array. txt"; threadData[i].file_out = "out"+ std::to_string (i + 1)+ ".txt"; status = pthread_create(&(threads[i]), NULL, threadFunc, &threadData[i]); if (status != 0) { std::cout<< "main error: can't create thread, status = "<< status << std::endl; exit(-11); } } for(int i = 0; i < 5; i++){ int status; int status_addr; status = pthread_join(threads[i], (void**)&status_addr); if (status != 0) { std::cout << "main error: can't join thread, status = " << status << std::endl; exit(-12); } } return 0; }
0
|
18.04.2023, 18:12 | |
Ответы с готовыми решениями:
4
Выводятся странные числа в качестве элементов массива Из массива выходят странные числа Выводятся странные числа в качестве элементов массива Почему по итогу выходят не те числа? |
118 / 86 / 35
Регистрация: 07.11.2022
Сообщений: 355
|
|
18.04.2023, 23:15 | 2 |
1) Добавьте проверку, что файл открылся.
Вот тут пробел в названии, файл не открылся и массив поэтому забит мусором. Похоже что так. 2) Зачем каждый из потоков читаете весь массив целиком, а использует только одну строку из массива? Не лучше скачать массив, потом запустить потоки и обработать массив, по строке на поток?
0
|
0 / 0 / 0
Регистрация: 27.09.2021
Сообщений: 18
|
|
19.04.2023, 09:16 [ТС] | 3 |
К сожалению не помогло
0
|
118 / 86 / 35
Регистрация: 07.11.2022
Сообщений: 355
|
|
19.04.2023, 10:31 | 4 |
Сообщение было отмечено Niki4Pro как решение
Решение
0
|
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
|
|
19.04.2023, 16:48 | 5 |
0
|
19.04.2023, 16:48 | |
19.04.2023, 16:48 | ||||||
Помогаю со студенческими работами здесь
5
Не выходят значения массива на экран Вывод массива: выходят нули и одно число Найти номера элементов массива, значения которых выходят за пределы интервала Странные числа Откуда берутся странные числа? Компилятор выводит странные числа Странные числа при складывания float Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи | |||||
NoSQL базы данных: что это такое и какие существуют
bytestream 22.01.2025
В современную эпоху цифровой трансформации объемы данных растут экспоненциально, создавая новые вызовы для традиционных систем управления базами данных. NoSQL (Not Only SQL) представляет собой. . .
|
Обновление исследования от команды MCM (январь 2025 г.)
Programma_Boinc 22.01.2025
Обновление исследования от команды MCM (январь 2025 г. )
Мы продолжаем изучать молекулярные сигнатуры, связанные с раком легких, с текущим фокусом на GCM1, факторе транскрипции, участвующем в. . .
|
Как работать с Kafka в Go (Golang)
bytestream 22.01.2025
Apache Kafka представляет собой распределенную платформу потоковой передачи данных, которая произвела революцию в области обработки событий и интеграции микросервисов. Эта система, изначально. . .
|
Как использовать RabbitMQ в Go (Golang)
bytestream 22.01.2025
RabbitMQ представляет собой надежный и широко используемый брокер сообщений, который играет ключевую роль в построении современных распределенных систем и микросервисной архитектуры. В основе работы. . .
|
Как преобразовать список списков в простой список в Python
bytestream 22.01.2025
При работе с Python разработчики часто сталкиваются с необходимостью обработки сложных структур данных, среди которых особое место занимают вложенные списки. Эти структуры представляют собой списки,. . .
|
Что такое GUID / UUID и как их создать
bytestream 22.01.2025
В мире разработки программного обеспечения существует постоянная потребность в уникальной идентификации объектов, записей и ресурсов. Эта задача становится особенно актуальной в распределенных. . .
|
Как добавить пустую директорию в репозиторий Git
bytestream 22.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с ситуацией, когда необходимо сохранить пустую директорию в репозитории. Данная задача может показаться простой на первый. . .
|
Как валидировать адрес email в JavaScript
bytestream 22.01.2025
JavaScript, как основной язык веб-разработки, предоставляет разработчикам множество инструментов для реализации эффективной валидации email-адресов. От простых встроенных решений до сложных. . .
|
Как заменить все вхождения подстроки в JavaScript
bytestream 22.01.2025
Строки в JavaScript представляют собой неизменяемые последовательности символов, что делает их обработку особенно интересной с точки зрения оптимизации и выбора правильного подхода к решению задач.
. . .
|
Управление версиями пакетов в Node.js. В чем разница между тильдой (~) и кареткой (^) в package.json
bytestream 22.01.2025
В современной разработке программного обеспечения управление версиями пакетов играет ключевую роль в обеспечении стабильности и надежности проектов. Node. js, как одна из самых популярных платформ для. . .
|
Аутентификация на сайте с помощью формы
bytestream 21.01.2025
В современном цифровом мире безопасная аутентификация становится краеугольным камнем защиты веб-приложений и пользовательских данных. Каждый день миллионы людей используют различные онлайн-сервисы,. . .
|
Как получить индекс в цикле for в Python
bytestream 21.01.2025
При работе с коллекциями данных в Python часто возникает необходимость не только получить доступ к элементам последовательности, но и знать их позицию в процессе итерации. Индексация в циклах. . .
|