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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ror6ax
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 5
#1

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

15.05.2013, 11:52. Просмотров 479. Ответов 8
Метки нет (Все метки)

Почему, если скормить "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];
    }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2013, 11:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Массив с одинаковыми значениями (C++):

Заполнить квадрат одинаковыми значениями по диагоналям - C++
На первой диагонали в квадрате расположены единицы, на второй диагонали – 2, на К – ой диагонали – к. Количество диагоналей у квадрата...

Определить, есть ли в массиве элементы с одинаковыми значениями - C++
Ввести массив из 20 элементов и определить, есть ли в нем элементы с одинаковыми значениями. С++

Есть ли во введенном с клавиатуры массиве элементы с одинаковыми значениями - C++
Написать программу, которая проверяет есть ли во введенном с клавиатуры массиве элементы с одинаковыми значениями.Использовать средства...

Подсчитать количество пар соседних элементов массива с одинаковыми значениями - C++
Подсчитать количество пар соседних элементов с одинаковыми значениями Диапазон значений : -50 до 50 Размерность массива: 200 ...

Подсчитать количество пар соседних элементов массива с одинаковыми значениями - C++
Размерность массива : 200 Диапазон значений : от -50 до 50 Подсчитать количество пар соседних элементов с одинаковыми значениями

Массивы. Подсчитать количество пар соседних элементов с одинаковыми значениями - C++
1)Решить задачи, используя динамический одномерный массив. Выделение памяти под массив, его ввод с клавиатуры, вывод результата и основное...

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

Добавлено через 1 минуту
Цитата Сообщение от ror6ax Посмотреть сообщение
там word не зря [4].
а нафиг? если ты кормишь по одной букве
1
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];
то все введенное лепится в первое слово, а мне будет нужен доступ к ним по указателю
0
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
15.05.2013, 13:53 #6
на самом деле какая то кривая реализация получается...

можешь задачу описать конкретно - что ты хочешь сделать?
0
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
0
Croessmah
Эксперт CЭксперт С++
13205 / 7476 / 839
Регистрация: 27.09.2012
Сообщений: 18,379
Записей в блоге: 3
Завершенные тесты: 1
15.05.2013, 14:08 #8
Цитата Сообщение от ror6ax Посмотреть сообщение
хотя почему мой вариант работал вопрос остался.
потому что у Вас все указатели указывают на один массив word[4]. Который вообще не доступен после выхода из цикла и обращение к нему по его адресу может обернуться вообще по другому.
1
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]);
}
работает так как мне нужно


пойду еще раз перечитаю маны по указателям.
хотя в предыдущий раз я тоже думал что поможет))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2013, 14:18
Привет! Вот еще темы с ответами:

Подсчитать количество пар соседних элементов массива с одинаковыми значениями - C++
Что нужно сделать: Подсчитать количество пар соседних элементов с одинаковыми значениями Диапазон значений : -50 до 50 Размерность...

Из группы подряд идущих элементов с одинаковыми значениями оставить только первый - C++
Почему не работает программа? не находит сторожа, хотя я их объявляю) //Дан список из n целых чисел a1,a2,..,an. Из группы подряд идущих...

Из группы подряд идущих элементов массива с одинаковыми значениями оставить только первый - C++
Доброй ночи.) Дан список из n целых чисел a1,a2,...,an. Из группы подряд идущих элементов с одинаковыми значениями оставить только первый....

Массив: Разместить все элементы с положительными значениями в левой части массива, элементы с отрицательными значениями - в правой - C++
Напишите пожалуйста программу Разместить все элементы с положительными значениями в левой части массива, элементы с отрицательными...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.05.2013, 14:18
Ответ Создать тему
Опции темы

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