Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.08.2010, 19:13   #1
saidmir
Пользователь
 
Аватар для saidmir
 
Регистрация: 04.07.2010
Сообщений: 19
По умолчанию массив типа char в виде списка

Доброго времени суток
у меня собственно вопрос такой
возмжно ли заполнить массив типа char списком продуктов
вот тким образом
Мясо
Молоко
Специи
....
Я понимаю что это надо делать в цикле
но как я понимаю если я объявляю массив вот так
char sp[100];
это означает что я могу ввести слова в сто символов,
но не как несколько слов по сто символов в списке

у меня вот такой код:

Код:
#include<iostream>

char a=0;
char p[100];
int i;

bool q();
//char vp();

int main () {
    std::cout<<"агапара\n";
    i=0;
    do {
        std::cout<<"Введите продукт\t";
        std::cin>>p[i];
        i++;
        std::cout<<i<<"\n";
    }
    while (q()!=false);
}

bool q() {
    std::cin>>a;
    switch (a) {
        case 'y':
            return true;
        case 'n':
            return false;
        default:
            return false;
    };
}
работает это так

агапара
Введите продукт Мясо
1
saidmir@alexmertvdesktop:~/cpp_prog/1st_otchet$

как видно в цикл попадает, но не проходит по нему

конечно глупо но я еще писал вот так
Код:
for (int i=0; q()!=false; i++) {/*Code programm*/}
такм написанием компилятор не ругался он просто не вошел в цикл

так вот мой вопрос как можно объявить массив типа char что бы заполнить его как список
поосто у меня такие ощющения. что я не правельно оформляю цикл или не правельно объявил массив

Заранее спасибо

p/s/ Прошу без ссылок и указателей, я их просто еще непрочитал мне пока так объявить если это возможно
Кто я в этом деле?
Хотелось писать под Mac OS X, но необходимость писать под Windows тоже интересное занятие...

Последний раз редактировалось saidmir; 15.08.2010 в 19:27.
saidmir вне форума Ответить с цитированием
Старый 15.08.2010, 19:19   #2
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,336
По умолчанию

еле распарсил твой понос мыслей.

Цитата:
так вот мой вопрос как можно объявить массив типа char что бы заполнить его как список
Код:
	const char *products[] = {
		"111",
		"222",
		"333"
	};
если хочешь вводить продукты во время выполнения программы, используй динамические массивы, связанные списки и тп. динамическую память вобщем
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance

Последний раз редактировалось pproger; 15.08.2010 в 19:22.
pproger вне форума Ответить с цитированием
Старый 15.08.2010, 19:19   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

двухмерный массив вам нужен.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.08.2010, 19:25   #4
saidmir
Пользователь
 
Аватар для saidmir
 
Регистрация: 04.07.2010
Сообщений: 19
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
еле распарсил твой понос мыслей.



Код:
	const char *products[] = {
		"111",
		"222",
		"333"
	};
если хочешь вводить продукты во время выполнения программы, используй динамические массивы, связанные списки и тп. динамическую память вобщем
простите за вопрос
но как это?

Я же говорю, что еще не дошол до этого
Кто я в этом деле?
Хотелось писать под Mac OS X, но необходимость писать под Windows тоже интересное занятие...
saidmir вне форума Ответить с цитированием
Старый 15.08.2010, 23:02   #5
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

Цитата:
Сообщение от saidmir Посмотреть сообщение
простите за вопрос
но как это?

Я же говорю, что еще не дошол до этого
гугл : динамические массивы
гугл : C строки
гугл : char* строки
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума Ответить с цитированием
Старый 17.08.2010, 18:31   #6
saidmir
Пользователь
 
Аватар для saidmir
 
Регистрация: 04.07.2010
Сообщений: 19
По умолчанию

С пасибо большое прошолся по подчти вем вашим ссылкам которые вы дали и решил использовать ветрор для этой задачи

написал вот так:

Код:
char a=0;
char p;
int i;
int j;

bool q();
//char vp();

int main () {
    vector <char> prod;
    cout<<"агапара\n";
    i=0; j=0;
    do {
        cout<<"Введите продукт\t";
        prod.push_back(p[i]);
        prod[i]++;
    }
    while (q()!=false);
}
а он мне сказал несоответсвие типов
кода заполняю вручную, то все нормально, а тут вот что сказал

poleznaya.cpp: In function 'int main()':
poleznaya.cpp:19: error: invalid types 'char[int]' for array subscript

вроде все правельно по шаблону пишу

шаблон
Код:
vector <type> name 
name.push_back(что записать) // в моем случае char p
олько не ругайтесь все примеры из книги работают а вот мой проектик не хочет
что я не так делаю?
Кто я в этом деле?
Хотелось писать под Mac OS X, но необходимость писать под Windows тоже интересное занятие...
saidmir вне форума Ответить с цитированием
Старый 17.08.2010, 19:34   #7
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

Используй такую замечательную вещь как std::string
тогда вектор у тебя будет vector<string> vect;
string (строки) отлично подходят тебе, раз уж ты начал вектор использовать


prod[i]++; - никогда больше такой глупости не пиши, я даже не знаю, что ты сделать хотел тут

bool q(); - это прототип функции, если что, а где реализация?
Если я помог вам - порадуйте меня, нажмите на весы слева

Последний раз редактировалось RoS; 17.08.2010 в 19:36.
RoS вне форума Ответить с цитированием
Старый 19.08.2010, 20:49   #8
saidmir
Пользователь
 
Аватар для saidmir
 
Регистрация: 04.07.2010
Сообщений: 19
По умолчанию

Я попытался зделать вот так

Код:
#include<iostream>
#include<vector>
#include<string>
using namespace std;
char a=0;
int p;
int j;

struct product {
    string produkt;
    int stoimost;
};

bool q();
void vp(int i);
vector<product> sp (100);
int main () {
    vp(int i);
    return 0;
}

bool q() {
    cin>>a;
    switch (a) {
        case 'y':
            return true;
        case 'n':
            return false;
        default:
            return false;
    };
}

void vp(int i) {
    do {
        cout<<"Введите продукт\t";
        cin>>sp[i].produkt;
        cout<<"Введите стоимость продукта\t";
        cin>>sp[i].stoimost;
    }
    while (q()!=false);
}
но не получилось мне говорит вот, что

poleznaya.cpp: In function 'int main()':
poleznaya.cpp:18: error: expected primary-expression before 'int'

уже всю возможную литературу перерыл не как не могу решить вопрос, что делать как быть не понятно

помогите кто может пожалуйста
Кто я в этом деле?
Хотелось писать под Mac OS X, но необходимость писать под Windows тоже интересное занятие...
saidmir вне форума Ответить с цитированием
Старый 19.08.2010, 22:06   #9
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Код:
vp(int i);
Что это???
Еще одно объявление функции (вряд ли)? - Тогда почему не
Код:
void vp(int i);
?
Или вызов функции? Тогда int лишнее, а аргумент вообще не объявлен, не говоря уж об инициализации.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 20.08.2010, 21:38   #10
saidmir
Пользователь
 
Аватар для saidmir
 
Регистрация: 04.07.2010
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Гром Посмотреть сообщение
Код:
vp(int i);
Что это???
Еще одно объявление функции (вряд ли)? - Тогда почему не
Код:
void vp(int i);
?
Или вызов функции? Тогда int лишнее, а аргумент вообще не объявлен, не говоря уж об инициализации.
Спасибо ограмное
осталость только ссума подсчитать и все

только вот тут при компилировании выдает вот что
poleznaya.cpp:1:19: warning: extra tokens at end of #include directive
но я думаю что это не страшно
Кто я в этом деле?
Хотелось писать под Mac OS X, но необходимость писать под Windows тоже интересное занятие...
saidmir вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив типа char * das Ma:dchen Общие вопросы C/C++ 9 13.06.2010 17:21
Переменная типа Char Sarumjan Общие вопросы C/C++ 4 10.01.2010 00:34
Запись числа типа инт в ячейку двумерного массива типа char AxenicX Помощь студентам 1 25.09.2009 00:35
Динамический сивольный массив типа char z3rg Общие вопросы C/C++ 12 05.04.2009 21:00
Работа со строками типа Char Horror Общие вопросы C/C++ 4 02.02.2008 19:45