Код:
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;
}
pfArray - 2мерный массив. Если нужен одномерный - ставим nCols=1.
вызывается примерно так:
Код:
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] );
}
}