Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 21
1

Индексация по массиву строк обращается ко всем элементам сразу

19.07.2017, 23:07. Показов 621. Ответов 8

Author24 — интернет-сервис помощи студентам
Вроде бы всё просто, но никак не могу понять почему заполняет 36 элементов заполняет по одному индексу.

Функция принимает 2 рандомных числа и по ним выводит значения, после возвращает их конкатенацию.
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
#include <string.h>
 
 
char *arrMaps(int numOne, int numTwo)
{
    char *firstStr;
    char *secondStr;
    static char thirtStr[20];
    switch(numOne)
    {
        case 0: firstStr = "Six";break;
        case 1: firstStr = "Seven";break;
        case 2: firstStr = "Eight";break;
        case 3: firstStr = "Nine";break;
        case 4: firstStr = "Ten";break;
        case 5: firstStr = "Jack";break;
        case 6: firstStr = "Queen";break;
        case 7: firstStr = "King";break;
        case 8: firstStr = "Ace";break;
    }
    switch(numTwo)
    {
        case 0: secondStr = " hearts";break;
        case 1: secondStr = " spades";break;
        case 2: secondStr = " clubs";break;
        case 3: secondStr = " diamonds";break;
    }
    strcat(thirtStr, firstStr);
    strcat(thirtStr, secondStr);
    return thirtStr;
}
Тут вроде бы ничего особенного - просто заполняю пустой массив рандомными значениями, полученными из другого файла
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
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include "arrage.c"
#include "values.c"
 
#define N 36
 
int main(int argc, char const *argv[])
{
    char *strMap[N];
    srand(time(0));
    int strRandOne = rand() % 9;
    int strRandTwo = rand() % 4;
    for (int i = 0; i < N; i++)
    {
        if (strMap[i] != strMap[i - 1])
        {
            strMap[i] = arrMaps(strRandOne, strRandTwo);
            strRandOne = rand() % 9;
            strRandTwo = rand() % 4;
        }
        else 
        {
            --i;
            strRandOne = rand() % 9;
            strRandTwo = rand() % 4;
            continue;
        }
    }
    printf("%s\n", strMap[0]);
 
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.07.2017, 23:07
Ответы с готовыми решениями:

Как обратиться сразу ко всем элементам массива?
Доброво времени суток. Подскажите как обратится сразу ко всем элементам массива пример. На форме...

Применить стиль из словаря сразу ко всем элементам панели
Есть у меня «StackPanel» которая содержит сразу три «TextBlock» и стиль для них есть у меня в...

Обратиться сразу ко всем подобным элементам [Textbox/combobox]
Имеются 7 x 30 именованных Комбо/ТекстБоксов, подробнее: Element_type_dropdown_1 ......

Ко всем нулевым элементам массива прибавить число n, ко всем отрицательным элементам прибавить число k
Дан массив целых чисел в диапазоне от -10000 до 10000. Ко всем нулевым элементам массива прибавить...

8
Заблокирован
19.07.2017, 23:34 2
thirtStr локальная, одинаковая
0
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 21
19.07.2017, 23:39  [ТС] 3
MansMI, не совсем понял, что имеете ввиду.Можете разъяснить как новичку?
0
Заблокирован
19.07.2017, 23:50 4
так попробуйте, сам проверить не могу
C
1
2
3
4
5
        if (strMap[i] != strMap[i - 1])
        {
            strMap[i] = arrMaps(strRandOne, strRandTwo);
            printf("%d\n", strMap[i]);
            .......................
0
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 21
19.07.2017, 23:54  [ТС] 5
MansMI, вывел 36 значений 36 раз)
Миниатюры
Индексация по массиву строк обращается ко всем элементам сразу  
0
Заблокирован
19.07.2017, 23:59 6
Цитата Сообщение от MansMI Посмотреть сообщение
printf("%d\n", strMap[i]);
тут ничего не меняли? и как 36*36 из того кода что я видел?
0
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 21
20.07.2017, 00:03  [ТС] 7
MansMI, выводил только с модификатором %s с %d выводит этот адрес 4223008, так же 36 раз.
0
Заблокирован
20.07.2017, 00:08 8
Цитата Сообщение от smileinshadow Посмотреть сообщение
выводит этот адрес 4223008
Цитата Сообщение от MansMI Посмотреть сообщение
одинаковая
C
1
2
char strMap[N][30];
strMap[i] передавайте в функцию и его наполняйте
0
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 21
20.07.2017, 00:11  [ТС] 9
MansMI, спасибо за помощь
0
20.07.2017, 00:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.07.2017, 00:11
Помогаю со студенческими работами здесь

Массив: Ко всем нулевым элементам прибавить N, из всех положительных - вычесть А, ко всем отрицательным - прибавить B...
Дан массив x(10). Ко всем нулевым элементам прибавить N, из всех положительных элементов вычесть А,...

Доступ ко всем элементам на форме
Собственно вопрос в описании..

Обратиться ко всем элементам массива
Всем привет. Есть массив - var mas1 = и мне нужно обратиться сразу ко всем его элементам, чтобы...

Нужно пройтись по всем элементам
Всем привет. Возникли трудности с jQuery. Нужно пройтись по всем элементам, что бы при нажатии на...

Пройтись по всем элементам в TreeView
Здравствуйте. кинул на форму trrView, а в нее добавил кучку checkbox. подскажите как пройтись по...

Прокрутка ко всем элементам на форме
Возможно ли добавить ко всем элементам на форме в события MouseWheelUp и MouseWheeldown Строчки...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru