Форум программистов, компьютерный форум, киберфорум C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 27.09.2021
Сообщений: 18
1

Из массива выходят странные числа

18.04.2023, 18:12. Показов 1032. Ответов 4

Author24 — интернет-сервис помощи студентам
Здравствуйте у меня проблема, при создании массива генерируются правильные числа, а при взятии этих чисел в другой файл выводится всякая фигня. Помогите пожалуйста исправить, вот мой код:

#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
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.04.2023, 18:12
Ответы с готовыми решениями:

Выводятся странные числа в качестве элементов массива
Программа считает 100 событий, в результате чего получаем массив из 100 чисел типа double, который...

Из массива выходят странные числа
Здравствуйте у меня проблема, при создании массива генерируются правильные числа, а при взятии этих...

Выводятся странные числа в качестве элементов массива
Есть массив MM из чисел типа float, нужно его построить частотную гистограмму из элементов массива,...

Почему по итогу выходят не те числа?
Console.WriteLine(&quot;Введите число&quot;); int b = Convert.ToInt32(Console.ReadLine()); int a = new int...

4
118 / 86 / 35
Регистрация: 07.11.2022
Сообщений: 355
18.04.2023, 23:15 2
1) Добавьте проверку, что файл открылся.
Вот тут пробел в названии, файл не открылся и массив поэтому забит мусором.
Цитата Сообщение от Niki4Pro Посмотреть сообщение
C++Выделить код
1
threadData[i].file_input = "array. txt";
Похоже что так.

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 как решение

Решение

что не помогло ?

задача какая ?
Цитата Сообщение от NEED-A-JOB Посмотреть сообщение
2) Зачем каждый из потоков читаете весь массив целиком, а использует только одну строку из массива?
зачем ??
0
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
19.04.2023, 16:48 5
Цитата Сообщение от Niki4Pro Посмотреть сообщение
К сожалению не помогло
Внимательнее надо быть:
Цитата Сообщение от Niki4Pro Посмотреть сообщение
C++Выделить код
1
in >> arr[i][i]; //<---???
0
19.04.2023, 16:48
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.04.2023, 16:48
Помогаю со студенческими работами здесь

Не выходят значения массива на экран
var myObj, i, j, x = &quot;&quot;; myObj = { &quot;name&quot;:&quot;John&quot;, &quot;age&quot;:30, &quot;cars&quot;: }, ...

Вывод массива: выходят нули и одно число
Новичок в Java. Задача была - создать массив из всех нечётных чисел от 1 до 99, вывести его на...

Найти номера элементов массива, значения которых выходят за пределы интервала
1)Ввод значений элеметов массива из N элементов и вывод массива на экран монитора. 2)В числовом...

Странные числа
print(a ** b, b ** a) 243 125 Задание узнать значение a и b

Откуда берутся странные числа?
Добрый вечер! Не можете подсказать, почему такие значения Z??? А не 1, 2, 3, 4??? Программа...

Компилятор выводит странные числа
Не пойму в чем ошибка, я в коде просто прошу вывести то, что ввела. И когда я ввожу в массив, к...

Странные числа при складывания float
Всем привет, прохожу азы python, и наткнулся на странную проблему: при выполнении данного цикла...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
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 часто возникает необходимость не только получить доступ к элементам последовательности, но и знать их позицию в процессе итерации. Индексация в циклах. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru