Объединения

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Kazanove
Сообщения: 41
Зарегистрирован: 24 фев 2016, 14:55

typedef в этом и был глюк (случайно удалил)... да так теперь все работает
Kazanove
Сообщения: 41
Зарегистрирован: 24 фев 2016, 14:55

как передать структуру DATA_RECORD data в функцию Table

Код: Выделить всё

void main (void)
{
    DATA_RECORD data[10] = {0};
    DATE release = {12, 6, 1999};
    InitRecord(data[0], 1, "Шкворень", 36.00, 253691, 85.00, release);
    Table(data);

}
void Table( DATA_RECORD data){
for (i = 0; i < CountRow; i++){
		if (data[i].count.number == NULL){
			break;
		}
/*
тут выводиться таблица
*/
	}

}
Kazanove
Сообщения: 41
Зарегистрирован: 24 фев 2016, 14:55

как правильно передать DATA_RECORD data в функцию Table

Код: Выделить всё

void main (void)
{
    DATA_RECORD data[10] = {0};
    DATE release = {12, 6, 1999};
    InitRecord(data[0], 1, "Шкворень", 36.00, 253691, 85.00, release);
    Table(data);

}
void Table( DATA_RECORD data){
for (i = 0; i < CountRow; i++){
        if (data[i].count.number == NULL){
            break;
        }
        /*
          тут строка из структуры
       */
    }

}
ругается на data
Аватара пользователя
Decoder
Сообщения: 308
Зарегистрирован: 19 фев 2008, 23:11
Откуда: Moscow

Передавать массив данных в функцию нужно по указателю. Ещё неплохо было бы добавить в качестве параметра функции число передаваемых элементов массива.
Твоя функция должна быть объявлена так:

Код: Выделить всё

void Table(const DATA_RECORD* data, int CountRow)
{
	for (int i = 0; i < CountRow; i++)
	{
		if (data[i].count.number == 0)
		{
			break;
		}
		/*
		тут выводиться таблица
		*/
	}
}
И вызываться она должна будет так...

Код: Выделить всё

Table(data, 10);
Поумнеть несложно, куда труднее от дури избавиться.
Kazanove
Сообщения: 41
Зарегистрирован: 24 фев 2016, 14:55

да в принципе я так и сделал
Kazanove
Сообщения: 41
Зарегистрирован: 24 фев 2016, 14:55

а как вывести поля после указанной даты
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Чтобы установить порядок двух дат, нужно сделать следующее:

Код: Выделить всё

Сравнить года:
    Если не равны, то порядок установлен.
    Иначе сравнить месяцы:
      Если не равны, то порядок установлен.
      Иначе сравнить дни:
         Если не равны, то порядок установлен.
         Иначе даты равны.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Kazanove
Сообщения: 41
Зарегистрирован: 24 фев 2016, 14:55

а если так

Код: Выделить всё

if (record.release.date.Year > year || (record.release.date.Year == year&&record.release.date.Month > mounth) || (record.release.date.Year == year&&record.release.date.Month == mounth&&record.release.date.Day > day)){
/*
выводим строку из структуры
*/
}
Kazanove
Сообщения: 41
Зарегистрирован: 24 фев 2016, 14:55

где ошибка при добавление данных

Код: Выделить всё

void addRecord(DATA_RECORD *data){
	system("cls");
	int i;
	int CountRow_ = 0;
	char *name_;
	float weight_;
	long index_;
	float price_;
	int day_;
	int mount_;
	int year_;
	int dayMount[12] = { 31, 28, 31, 30, 31, 20, 31, 31, 30, 31, 30, 31 };
	bool err = false;

	for (i = 0; i < CountRow; i++){
		if (data[i].count.number != NULL){
			CountRow_++;
		}
	}
	if (CountRow_ < CountRow){
		printf("Добавить новую запись\n");
		printf("Наименование:");
		scanf("%s", &name_);
		printf("Масса:");
		scanf("%f", &weight_);
		printf("Номер по каталогу:");
		scanf("%d:", &index_);
		printf("Цена:");
		scanf("%f", &price_);

		do{
			if (err == true){
				printf("ошибка при введении даты.");
				err = false;
			}
			printf("Дата выпуска\n");
			printf("день:");
			scanf("%d", &day_);
			printf("месяц:");
			scanf("%d", &mount_);
			printf("год:");
			scanf("%d", &year_);
			if (year_ % 4 == 0){
				dayMount[1] = 29;
			}
			if (mount_ <= 0 || mount_ > 12){
				err = true;
			}
			else{
				if (day_ <= 0 || day > dayMount[mount_ - 1]){
					err = true;
				}
			}
		} while (err == true);
		InitRecord(data[CountRow_], (long)CountRow_+1 , name_, weight_, index_, price_, DATE_s{ day, mount_, year_ });
	}
}
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Kazanove писал(а):а если так
Это оно и есть.
Kazanove писал(а):где ошибка при добавление данных
А поточнее можно, что за ошибка? Дебагер не помогает?

P.S. А почему ты все вопросы пишешь без знака вопроса в конце? Клавиша "?" поломалась? :)
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить