IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   Помогите пожалуйста написать проги не Си (http://www.imho.ws/showthread.php?t=127631)

Lyxor 26.12.2007 19:23

Помогите пожалуйста написать проги не Си
 
Задача№1
Массив передается в функцию и она должна вернуть максимальное и минимальное значение массива(массив может быть как одномерным так и двумерным)
:(

Задача №2
Простой список товаров на складею.
Для кождого товара:код, количество и цена.
Функции: добавление элемента с заданым кодом, просмотр, поиск элементов с заданым кодом и подсчет количества.

Помогите пожалуйста!!!Очень надо к 27 декабря!!! :(:идонтноw:

crawler 26.12.2007 21:17

Код:

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] );
    }
}



Часовой пояс GMT +4, время: 20:06.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.