Форум программистов, компьютерный форум CyberForum.ru

Массив с одинаковыми значениями - C++

Восстановить пароль Регистрация
 
ror6ax
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 5
15.05.2013, 11:52     Массив с одинаковыми значениями #1
Почему, если скормить "a","b","c" получается "ccc" а не "abc" ?



C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 #include <iostream>
    #include <string.h>
    #include <stdio.h>
    int main(){
    const int n_str=3;
    const int str_size=9;
    char list_2[n_str][str_size];
    char *addr[n_str];
    for (int j=0; j<n_str; j++) {
            addr[j]=list_2[j];
    }
    
    for (int w=0;w<n_str;w++){
        char word[4];
        scanf("%s",&word);
        addr[w]=word;
    }
    
    
    std::cout<<addr[0]<<addr[1]<<addr[2];
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2013, 11:52     Массив с одинаковыми значениями
Посмотрите здесь:

Есть ли во введенном с клавиатуры массиве элементы с одинаковыми значениями C++
C++ Подсчитать количество пар соседних элементов массива с одинаковыми значениями
Подсчитать количество пар соседних элементов массива с одинаковыми значениями C++
Массив: Разместить все элементы с положительными значениями в левой части массива, элементы с отрицательными значениями - в правой C++
Файлы и массив (сделать так, чтобы массив заполнялся значениями из этого же файла) C++
Массивы. Подсчитать количество пар соседних элементов с одинаковыми значениями C++
C++ Из группы подряд идущих элементов с одинаковыми значениями оставить только первый
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,164
Завершенные тесты: 2
15.05.2013, 11:54     Массив с одинаковыми значениями #2
а если сделать
C++
1
2
scanf("%s",&word[w]);
addr[w]=word[w];
ror6ax
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 5
15.05.2013, 11:59  [ТС]     Массив с одинаковыми значениями #3
То будет кушать одну букву, там word не зря [4].
Самое смешное что работало, потом я что-то добавил и теперь не знаю уже что может быть не так.
Нужен свежий взгляд
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,164
Завершенные тесты: 2
15.05.2013, 13:29     Массив с одинаковыми значениями #4
вот чудак человек)) смотри - ты записываешь в word свои числа, потом в addr[0] записываешь указатель на word, потом считываешь опять word и записываешь его в addr[2] и с третьей ячейкой тоже самое - в итоге - каждая ячейка addr указывает на один и тот же word

Добавлено через 1 минуту
Цитата Сообщение от ror6ax Посмотреть сообщение
там word не зря [4].
а нафиг? если ты кормишь по одной букве
ror6ax
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 5
15.05.2013, 13:53  [ТС]     Массив с одинаковыми значениями #5
ок. ладно, логику вижу. хотя почему мой вариант работал вопрос остался.

addr[w]=word[w]; ->>> error: invalid conversion from 'char' to 'char*' [-fpermissive]|

как теперь обойти еррор, не подскажете?

Добавлено через 11 минут
если сделать

C++
1
2
scanf("%s",&word[w]);
    addr[w]=&word[w];
то все введенное лепится в первое слово, а мне будет нужен доступ к ним по указателю
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,164
Завершенные тесты: 2
15.05.2013, 13:53     Массив с одинаковыми значениями #6
на самом деле какая то кривая реализация получается...

можешь задачу описать конкретно - что ты хочешь сделать?
ror6ax
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 5
15.05.2013, 14:05  [ТС]     Массив с одинаковыми значениями #7
Мне нужно заполнить двумерный массив строками и потом сортировать их с помощью strcmp.
Смотри, я обьявляю пустой массив. Пробегаю циклом - делаю на него указатели.
И пытаюсь по указателю итеративно забить в массив данные.

>ты записываешь в word свои числа,
я хоч узаписать в ворд одну строку.
потом в addr[0] записываешь указатель на word,
а я хочу по адресу addr[0] положить word

надо бы вроде &addr[w]=word; т.е найти адрес addr[w] и туда записать. но - lvalue required as left operand of assignment
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
12077 / 6938 / 782
Регистрация: 27.09.2012
Сообщений: 17,197
Записей в блоге: 2
Завершенные тесты: 1
15.05.2013, 14:08     Массив с одинаковыми значениями #8
Цитата Сообщение от ror6ax Посмотреть сообщение
хотя почему мой вариант работал вопрос остался.
потому что у Вас все указатели указывают на один массив word[4]. Который вообще не доступен после выхода из цикла и обращение к нему по его адресу может обернуться вообще по другому.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2013, 14:18     Массив с одинаковыми значениями
Еще ссылки по теме:

Определить, есть ли в массиве элементы с одинаковыми значениями C++
C++ Заполнить квадрат одинаковыми значениями по диагоналям
C++ Из группы подряд идущих элементов массива с одинаковыми значениями оставить только первый
Подсчитать количество пар соседних элементов массива с одинаковыми значениями C++
Рандомно заполнить двумерный массив одинаковыми символами C++

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

Или воспользуйтесь поиском по форуму:
ror6ax
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 5
15.05.2013, 14:18  [ТС]     Массив с одинаковыми значениями #9
решил так:

C++
1
2
3
for (int w=0;w<n_str;w++){
scanf("%s",addr[w]);
}
работает так как мне нужно


пойду еще раз перечитаю маны по указателям.
хотя в предыдущий раз я тоже думал что поможет))
Yandex
Объявления
15.05.2013, 14:18     Массив с одинаковыми значениями
Ответ Создать тему
Опции темы

Текущее время: 18:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru