PDA

Просмотр полной версии : программка Си++ не совсем понимаю условие задачи, подскажите



Ксю
07.04.2008, 15:36
В общем точно знаю что решить нужно используя модули и функции ещё с двумерными массивами
вот само условие:
"Имеется каталог на 50 видов бытовой техники, где указаны код, цена и название. Десять оптовых баз составили приоритетные списки, где указаны по 25 кодов бытовой техники, которые хотели бы приобрести. Зная количество денег для этих целей на каждой базе, надо напечатать список названий машин, которых может приобрести каждая база."

Вот всё что у меня получилось:

//---------------------------------------------------------------------------
#include<iostream.h>
#include<conio.h>
#include<windows.h>
//---------------------------------------------------------------------------
const int n=2;
const int m=3;
int vvod(int a[n][m])
{
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cin>>a[i][j];
}
int vvod_summ(int s)
{ for(int i=0;i<m;i++)
cin>>s;
}
void main(void)
{
int i,j;
int a[n][m];
int s,sum;
char StrBuf[200];
CharToOem("Введите коды бытовой техники: ", StrBuf);
cout<<StrBuf<<endl;
vvod(a);
CharToOem("Введите сумму денег выделенную на каждой базе: ", StrBuf);
cout<<StrBuf<<endl;
vvod_summ(s);

getch();
}
ещё есть отдельный файл с кодами и товарами(создавала в обычном блокноте):
1 стиральная_машина 20000
2 пылесос 10000
3 утюг 2000
4 швейная_машина 15000
5 оверлок 9000
6 весы 1500
7 холодильник 20000
8 посудомоечная_машина 6000
9 кофемолка 500

Хыиуду
08.04.2008, 10:55
А, собственно, как производится выбор? Если, допустим, на какой-то базе есть 50 000, то она может приобрести две стиралки ИЛИ пять пылесосов ИЛИ 25 утюгов. Это посчитать не проблема. А если в задаче потребуются все варианты, типа "Стиральная машина, два оверлока, посудомоечная машина, двое весов и шесть кофемолок" - там будет мнооооого всего!
Если база берет только один вид товаров, тогда количество получается безостаточным делением суммы денег на ней на стоимость товара.
Либо еще вариант приходит в голову: указать все машины, которые эта база может купить хотя бы в одном экземпляре. Например, если на базе 50К, она может купить что угодно. А если 3К - только утюг, кофемолку или весы

Ксю
08.04.2008, 13:18
А как создать сам каталог и на него потом сослаться?прописать путь к файлу...как?

Хыиуду
09.04.2008, 11:11
Да что там каталог, обычный текстовый файл, в программе открыть его и считать инфу (если не знаете как - учебник вам в помощь, раздел "работа с файлами", или Гугл завсегда поможет). Вопрос в том, что препод от вас хочет

Ксю
11.04.2008, 13:18
Пасибо ОГРОМНОЕ!!!


единственно ошибочка у меня где-то...наверно в поиске не могу сообразить...

#include<iostream.h>
#include<conio.h>
#include<windows.h>
//---------------------------------------------------------------------------
const int n=3;
const int m=5;
const N=5;

char StrBuff[200];

struct Zakaz
{
int kod;
char tovar[21];
int cena;
};
Zakaz A[5];

void Input(Zakaz A[],int N);
void InitData(int a[][m], int , int) ;
void OutPut (int a[][m], int , int);
float vvod_summ(float s[]);
void poisk(Zakaz A[],float s[]);

int Mas[n][m];
int i,j;
float s[5];

void main(void)
{

Zakaz A[5];
Input(A,N);
vvod_summ(s);
InitData(Mas,n,m);
OutPut(Mas,n,m);
CharToOem("Вы можете купить: ", StrBuff);
cout<<StrBuff<<endl;
poisk(A, s);

getch();
}

void Input (Zakaz A[], int N)
{
CharToOem("Введите наименование бытовой техники", StrBuff);
cout<<StrBuff<<endl;
for (int i=0; i<N; i++)
{
CharToOem(" Введите код ", StrBuff); cout<<'\t'<< StrBuff;
cin>>A[i].kod;
CharToOem("Введите наименование товара ", StrBuff); cout<<'\t'<<StrBuff;
cin>> A[i].tovar;
CharToOem("Введите цену товара ", StrBuff); cout<<'\t'<<StrBuff;
cin>> A[i].cena;
}
}



void InitData(int a[][m], int rows, int cols)
{ randomize();
for(int i = 0; i < rows; i++)
for(int j = 0; j < cols; j++)
a[i][j] = random(5) + 1;
}
void OutPut (int a[][m], int rows, int cols)
{
CharToOem("Коды бытовой техники: ", StrBuff);
cout << StrBuff << endl;
for(int i =0; i < rows; i++)
{
for(int j = 0; j < cols; j++)
{ cout.width(5);
cout << a[i][j];
}
cout << endl;
}
}

float vvod_summ(float s[])
{
CharToOem("Введите сумму денег выделенную на каждой базе: ", StrBuff);
cout<<StrBuff<<endl;
for(int i=0;i<n;i++)
cin>>s[i];
// return s[i];
}

void poisk(Zakaz A[], float s[])
{

for(int i=0; i<m;i++)
{

if(A[i].cena<s[i])
{
cout<<'\t'<<A[i].tovar;
s[i]=s[i]-A[i].cena;
}
}
}


подскажите, пжалуста

Хыиуду
14.04.2008, 11:32
Гм... здесь нужен человек, который знает C :) А в чем ошибка? Во время компиляции, или сама программа запускается, но выдает неправильные ответы?