Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
15 / 15 / 1
Регистрация: 19.10.2012
Сообщений: 570

Задание размера массива символов

12.10.2014, 01:36. Показов 1269. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Суть такая-нужно создать описатель типа MPI, который будет работать с массивом символов, т.к. вроде в MPI нет строк.
Этот описатель должен быть шаблоном со следующим свойство-должен при пересылке данных дублировать триады символо- abcdef -> abcabcdefdef. Для этого надо адрес начала массива символов(чтобы отправку осуществлять). Но его(массива) длина заранее неизвестна, а задавать длину массива переменной нельзя.
Можно ли обойти эту ситуевину? Функция malloc что то подобное делает, но я еще не разобрался как.
Заранее спасибо

Добавлено через 29 минут
ну, как иногда бывает, после создания темы на форуме решение пришло само...
теперь ошибки остались только в вызовах нужных функций. вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <stdio.h>
#include <string>
#include <iostream>
#include <mpi.h>
#include <stdlib.h>
 
using namespace std;
 
int strlen(string s)
{
    int res = 0;
    while (s[res])
    {           
        res++;
    }   
    return res;
}
 
int block_count(int i)
{
    int ost = i % 3, result = i / 3;
    if (ost != 0)
        result += ost;
    return result;
}
 
int main(int argc, char *argv[])
{
    string s;
        cin >> s;//символы-операнды
        
  int len = 0, block_size = 3, 
str_length = strlen(s), 
block_number = block_count(strlen(s)); /*определения будущего поличества блоков*/
char *streeng_for_send =  (char*)malloc(str_length);/* тут объявляем массив для передачи*/
    int rank, size, i;
    
    while (s[len])
    {
        streeng_for_send[len] = s[len];
        len++;
    }   
 
  MPI_Init (&argc, &argv);
  MPI_Comm_rank (MPI_COMM_WORLD, &rank);
  MPI_Comm_size (MPI_COMM_WORLD, &size);    
  MPI_Status *status;
/*1*/   MPI_Datatype *mychar;//три пронумированные строки по идее должны создать "пользовательский тип" для работы. как //правильно?
/*2*/   MPI_Type_vector (int count, int 3, int 2, MPI_Data_type, MPI_Char, MPI_Datatype *mychar);
/*3*/   MPI_Type_commit(*mychar);
        /*а вот Sendresv самое сложное-я толком не могу понять откуда прать туда параметры.  */
    MPI_Sendrecv (void *streeng_for_send, int str_length, MPI_Datatype *mychar, int 0, int 1, 
    void *streeng_for_send, int str_length * 2, MPI_Datatype *mychar, int *, int 1, 
    MPI_Comm comm, MPI_Status *status);
        
    /*cout << str_length << "\n";
    cout << block_number << "\n";*/
    
    MPI_Finalize();
    return 0;
}
Добавлено через 2 минуты
если кто то вообще глянет эту тему, то вот задание само-
Создать описатель типа и использовать его при передаче данных в качестве шаблона для следующего преобразования: при передачестроки дублируются последовательные триады символов.
если с кодом совсем плохо все-буду благодарен за пинок в нужную сорону
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.10.2014, 01:36
Ответы с готовыми решениями:

Задание размера массива на этапе исполнения
Qt 5.4.1, MinGW 32bit... спокойно кушает такой код: #include &lt;iostream&gt; int main () { int i; std::cin &gt;&gt; i; ...

Задание размера и инициализация массива указателей в конструкторе
1) h: SDL_Texture *textures; Как задать размер и инициализировать в конструкторе? Если пишу так: SDL_Texture *textures; ...

Задание размера числа
Добрый день. Подскажите пожалуйста как можно задать целое положительное число в С++ длиною ровно 39 бит. Заранее благодарю.

2
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
12.10.2014, 01:42
Это-то зачем?
C++
1
int strlen(string s);
У string есть метода size().
0
15 / 15 / 1
Регистрация: 19.10.2012
Сообщений: 570
12.10.2014, 09:45  [ТС]
alsav22, спасибо, буду знать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.10.2014, 09:45
Помогаю со студенческими работами здесь

Задание размера матрицы
Подскажите, плз, как грамотно задать размер матрицы в следующем листинге. #include &lt;iostream&gt; #include &lt;windows.h&gt; ...

Укоротить длинные имена до размера K символов, а те имена, которые короче K символов дополнить восклицательными знаками
Дан список из N имён. Необходимо укоротить длинные имена до размера K символов, а те имена, которые короче K символов дополнить...

Задание размера массива
Понадобилось создать массив размером, равным значению, которое записано в numericUpDown1. Пишу так: public bool Res = new bool; ...

Задание размера массива вручную
как задать размеры массива вручную, с экрана консоли? int size; int a = new int ; с объявлением массива всё понятно. так...

Задание размера массива после его объявления во время выполнения программы
Ребята, подскажите, как задать размер массиву во время выполнения. Я напишу пример на java - нужно по аналогии сделать на Си class C...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru