| imho.ws |
![]() |
|
|
|
# 1 |
|
Guest
Сообщения: n/a
|
Задача№1
Массив передается в функцию и она должна вернуть максимальное и минимальное значение массива(массив может быть как одномерным так и двумерным) ![]() Задача №2 Простой список товаров на складею. Для кождого товара:код, количество и цена. Функции: добавление элемента с заданым кодом, просмотр, поиск элементов с заданым кодом и подсчет количества. Помогите пожалуйста!!!Очень надо к 27 декабря!!! :идонтноw:
|
|
|
# 2 |
|
Full Member
Регистрация: 11.12.2002
Сообщения: 864
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Код:
void MinAndMax(float *pfArray, int nCols, int nRows, float *pMin, float *pMax)
{
int nColCnt, nRowCnt;
float fMin, fMax;
/* init */
fMin = 1e+100f;
fMax = -1e+100f;
for (nRowCnt = 0; nRowCnt < nRows; nRowCnt++ )
{
for (nColCnt = 0; nColCnt < nCols; nColCnt++ )
{
if ( pfArray[nColCnt*nRows + nRowCnt] < fMin )
fMin = pfArray[nColCnt*nRows + nRowCnt];
if ( pfArray[nColCnt*nRows + nRowCnt] > fMax )
fMax = pfArray[nColCnt*nRows + nRowCnt];
}
}
/* return values */
*pMin = fMin;
*pMax = fMax;
}
вызывается примерно так: Код:
float Array[50]; - скажем массив 5х10 float Min, Max MinAndMax(Array, 5, 10, &Min, &Max); по хорошему эту задачу решают с помощью связанных списков, с выделением памяти и прочей лабудой. Но я слегка с'экономил. по идее должно работать. Код:
typedef struct
{
int ID;
int quantity;
float price;
} Record;
/* получает пойнтер на запись */
void PrintRecord(Record *pRecord)
{
printf("Kod : %d \n", pRecord->ID);
printf("Kolichestvo :%d \n", pRecord->quantity);
printf("Cena :%d \n\n", pRecord->price);
}
/* ищет код продукта в списке из nNumberOfRecords записей
возвращает индекс если код существует или -1 если нет.
*/
int FindRecord(Record *pRecord, int IdToSearch, int nNumberOfRecords)
{
int nCnt;
for (nCnt=0; nCnt<nNumberOfRecords; nCnt++)
if ( pRecord[nCnt]->ID == IdToSearch)
return nCnt;
return -1; /* not found*/
}
/* добавляет запись (с проверкой по коду) */
void AddRecord(Record *pRecord, int *nNumber)
{
int nKod;
int nSpecificRecord;
int nKolVo;
printf("Kod :");
scanf("%d", &nKod);
nSpecificRecord = FindRecord(pRecord, nKod , *nNumber);
if ( nSpecificRecord == -1 )
{
/* new record */
pRecord[*nNumber]->ID = nKod;
printf("Kolichestvo :");
scanf("%d", &pRecord[*nNumber]->quantity);
printf("Cena :");
scanf("%d", &pRecord[*nNumber]->price);
/* uvelichit' chislo zapisej */
*nNumber += 1;
}
else
{
/* existing element */
pRecord[nSpecificRecord]->ID = nKod;
printf("Kolichestvo :");
scanf("%d", &nKolVo);
/* dobavit' k sushetvujushej zapisi */
pRecord[nSpecificRecord]->quantity += nKolVo;
}
}
int main()
{
Record myRecords[1000];
int nNumOfRecords; /* эта переменная хранит сколько записей существует */
int nCnt, nSpecificRecord;
nNumOfRecords = 0;
AddRecord(myRecords, &nNumOfRecords);
AddRecord(myRecords, &nNumOfRecords);
AddRecord(myRecords, &nNumOfRecords);
printf("All items:\n);
for (nCnt=0; nCnt<nNumOfRecords; nCnt++)
{
PrintRecord( &myRecords[nCnt] );
}
/* iskat' kod 12345 */
nSpecificRecord = FindRecord(myRecords, 12345 , nNumOfRecords);
if ( nSpecificRecord != -1 )
{
printf("Naiden produkt\n");
PrintRecord( &myRecords[nSpecificRecord] );
}
}
Последний раз редактировалось crawler; 26.12.2007 в 22:35. |
|
|