imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 26.12.2007, 19:23     # 1
Lyxor
Guest
 
Сообщения: n/a

Unhappy Помогите пожалуйста написать проги не Си

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


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

Помогите пожалуйста!!!Очень надо к 27 декабря!!! :идонтноw:
 
Старый 26.12.2007, 21:17     # 2
crawler
Full Member
 
Регистрация: 11.12.2002
Сообщения: 864

crawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собой
Код:
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] );
    }
}

Последний раз редактировалось crawler; 26.12.2007 в 21:35.
crawler вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


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




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