imho.ws |
|
26.12.2007, 19:23 | # 1 |
Guest
Сообщения: n/a
|
Помогите пожалуйста написать проги не Си
Задача№1
Массив передается в функцию и она должна вернуть максимальное и минимальное значение массива(массив может быть как одномерным так и двумерным) Задача №2 Простой список товаров на складею. Для кождого товара:код, количество и цена. Функции: добавление элемента с заданым кодом, просмотр, поиск элементов с заданым кодом и подсчет количества. Помогите пожалуйста!!!Очень надо к 27 декабря!!! :идонтноw: |
26.12.2007, 21:17 | # 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 в 21:35. |