Модераторы: Alx, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Господа программисты,помогите сделать контрольную! небольшую контрольную по программир. 
:(
    Опции темы
ZENITH
Дата 10.9.2006, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 10.9.2006

Репутация: нет
Всего: нет



 smile Ну, вобщем, такие дела: восстановился на заочку - нужно сдать академразницуsmile
Преподаватель по "Основи програмування та алгоритмічні мови" сказала сделать контрольную... Я учил эту дисциплину пять лет назад (и учил-то кое-как)...
Вобщем, кто в этом шарит и у кого есть свободное время, можете помочь в этом нелёгком деле?smile 

Или,может, знаете где достать (заказать) эти контрольные?Smile Языки: Паскаль или С++

Итак, собственно, задание:
(РУССКИЙ ПЕРЕВОД - на два поста ниже smile )
"
1) Скласти схеми алгоритмів і написати тексти головної програми і процедури (функції) для розв"язання задач відповідного варіанту.
Варіант 14: Задано масив А(М,N). Сформувати масив С(N) із сум додатніх елементів стовпчиків і впорядкувати його за спаданням. Обчислення сум оформити процедурою.

2) В лікарні є загальний список хворих, кожний з них характеризується записом:
Type
Zap=record
ПІВ: string [25];
NP: integer;
DGN: string [20];
end;
Де ПІВ - прізвище і ініціали хворого, NP - номер палати, DGN - діагноз. Необхідно вивести на друк перелік хворих по кожній палаті і окремо за кожним діагнозом. Розмістити хворих в палатах так, щоб хворі з однаковим діагнозом розміщувались, за можливістю, разом.

3) Записати текст в файл F. Переписати в перевернутому вигляді слова файлу F в файл А (порядок слів в файлі А повинен співпадати з порядком початкових слів в файлі F).

4) Розробити програму формування стека, куди поміщається послідовність символів у вигляді окремих слів, що вводяться з клавіатури. Кожне слово, розміщене в стеку, слід вивести на екран; при цьому порядок виведення символів в кожному слові повинен бути зворотний відносно послідовності їх введення.

Это сообщение отредактировал(а) ZENITH - 10.9.2006, 17:06
PM MAIL   Вверх
Oleg_Ci
Дата 10.9.2006, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

Репутация: нет
Всего: 30



Написал-бы задания на русском языке, глядишь количество "желающих тебе помочь" было-бы больше. smile Первое задание понял так:
есть массив А[][]
в массив С[] записать сумму чисел из столбиков из массива А[][]
Код

#include <stdio.h>

void sum( int *a, int *c, int width, int hegth ); // ссумирование
void WrMas1( int *c, int hegth );   // выводит на консоль содержимое одномерного массива
void WrMas2( int *a, int width, int hegth ); // выводит двумерный массив

int main()    
{
    int const width = 5, hegth = 10;  // количество строк и столбцов
    int a[width][hegth], c[hegth];
    int i, j;

    for ( i=0; i<hegth; i++ )
    {
        c[i] = 0;
        for ( j=0; j<width; j++ )
            a[j][i] = i;
    }

    printf("out massiv A[][] \n\n");
    WrMas2( &a[0][0], width, hegth ); //  выводим содержимое массива A
    sum( &a[0][0], c, width, hegth );  // ссумирование
    printf("\nout sum massiv C[]\n\n");
    WrMas1( c, hegth );   // выводим содержимое массива C
    printf("\n\n\nPress key to exit\n");

    getchar();
    return 0;
}
/////////////////////// END MAIN /////////////////////////////////////////////////////////////
void sum( int *a, int *c, int width, int hegth )
{
    int i, j;
    for( i=0; i<width; i++ )
        for( j=0; j<hegth; j++ )
            c[j] += *( a + j + i*j );
}
///////////////////////////////////////////////////////////
void WrMas1( int *c, int hegth )
{
  for ( int i=0; i<hegth; i++ )
    printf("%4d", c[i] );
    printf("\n");
}
//////////////////////////////////////////////////////////
void WrMas2( int *a, int width, int hegth )
{
    for ( int i=0; i<width; i++, printf("\n") )
        for ( int j=0; j<hegth; j++ )
            printf("%4d",*( a + j + i*j ) );
    printf("\n");
}
///////////////////////////////////////////////
И ещё, если задания в "Центре помощи" выкинешь то "помошников" больше будет smile 

Это сообщение отредактировал(а) Олег4 - 10.9.2006, 15:46
PM MAIL   Вверх
sOckets
Дата 10.9.2006, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ЖгуПоПонедельникам
**


Профиль
Группа: Участник
Сообщений: 298
Регистрация: 24.8.2006
Где: ws2.lib

Репутация: нет
Всего: 2



Ужас....Пойду учить украинский.


--------------------
Я Будущий сотрудник Google Inc. Юзаем Google Code Search для поиска исходников. Юзаем GMail как почту.
PM   Вверх
ZENITH
Дата 10.9.2006, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 10.9.2006

Репутация: нет
Всего: нет



Вобщем, превожу на русскийsmile

1)  Сложить схемы алгоритмов и написать текст основной программы и процедуры (функции) для решения задач соответственного варианта.

Задан массив А(М,N). Сформировать массив С(N) из сумм положительных элементов столбцов и упорядочить его по убыванию.  Вычисления сумм оформить процедурой.

2)  В больнице есть общий список больных, каждый из них характеризуется записью:
Type
   Zap=record
       ПІВ: string [25];
       NP: integer;
       DGN: string [20];
   end;
Где ПІВ - фамилия и инициалы больного, NP - номер палаты, DGN - диагноз. Необходимо вывести на печать перечень больных по каждой палате и отдельно по каждому диагнозу. Разместить больных в палатах так, чтобы больные с одинаковым диагнозом размещались, по возможности, вместе.

3)   Записать текст в файл F. Переписать в перевернутом виде слова файла F в файл А (порядок слов в файле А должен совпадать с порядком начальных слов в файле F).

4)   Разработать программу формирования стека, куда помещается последовательность символов в виде отдельных слов, которые вводятся с клавиатуры. Каждое слово, размещенное в стеке, следует вывести на экран; при этом порядок выведения символов в каждом слове должен быть обратный относительно последовательности их введения.

P.S. http://translate.meta.ua - силаsmile
PM MAIL   Вверх
ZENITH
Дата 10.9.2006, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 10.9.2006

Репутация: нет
Всего: нет



Правда, я уже заказал эту контрольную одному человеку...
PM MAIL   Вверх
Oleg_Ci
Дата 12.9.2006, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

Репутация: нет
Всего: 30



1. smile 
Код

#include<stdlib.h>
#include <stdio.h>

int intcmp(const void *, const void *);
void sum( int *a, int *c, int width, int hegth ); // ссумирование
void WrMas1( int *c, int hegth );   // выводит на консоль содержимое одномерного массива
void WrMas2( int *a, int width, int hegth ); // выводит двумерный массив

int main()    
{
    int const width = 5, hegth = 10;  // количество строк и столбцов
    int a[width][hegth], c[hegth];
    int i, j;

    for ( i=0; i<hegth; i++ )
    {
        c[i] = 0;
        for ( j=0; j<width; j++ )
            a[j][i] = i -3;
    }

    printf("out massiv A[][] \n\n");
    WrMas2( &a[0][0], width, hegth ); //  выводим содержимое массива A
    sum( &a[0][0], c, width, hegth );  // ссумирование
    qsort( c, hegth, sizeof(int), intcmp ); // сортировка
    printf("\nout sum massiv C[]\n\n");
    WrMas1( c, hegth );   // выводим содержимое массива C
    printf("\n\n\nPress key to exit\n");

    getchar();
    return 0;
}
/////////////////////// END MAIN /////////////////////////////////////////////////////////////
void sum( int *a, int *c, int width, int hegth )
{
    int i, j;
    for( i=0; i<width; i++ )
        for( j=0; j<hegth; j++ )
        {
            int x = *( a + j + i*hegth );
            if ( x > 0 ) c[j] += x;
        }
}
///////////////////////////////////////////////////////////
void WrMas1( int *c, int hegth )
{
  for ( int i=0; i<hegth; i++ )
    printf("%4d", c[i] );
    printf("\n");
}
//////////////////////////////////////////////////////////
void WrMas2( int *a, int width, int hegth )
{
    for ( int i=0; i<width; i++, printf("\n") )
        for ( int j=0; j<hegth; j++ )
            printf("%4d",*( a + j + i*hegth ) );
    printf("\n");
}
///////////////////////////////////////////////
int intcmp(const void *a, const void *b)
{
 return *(int *)a - *(int*)b;
}
/////////////////////////////////////////////////

PM MAIL   Вверх
Oleg_Ci
Дата 13.9.2006, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

Репутация: нет
Всего: 30



Цитата(ZENITH @  10.9.2006,  20:36 Найти цитируемый пост)
3)   Записать текст в файл F. Переписать в перевернутом виде слова файла F в файл А (порядок слов в файле А должен совпадать с порядком начальных слов в файле F).
Код

#include<iostream>
#include<fstream>
using namespace std; 

int main()    
{
    char * text = "1asd 2sdf 3dsf 4dfg";
    int pos = 0;

// запись файла F
    ofstream fout("F.txt");
    if (!fout.is_open()) return 1;
    fout << text;
    fout.close();

// запись файла A
    fout.open("A.txt");
    for ( int i = 0;  i <= strlen( text );  i++ )
    {
        if ( !(text[i] == ' ' || !text[i] )) continue;
        for ( int j = i;   j >= pos;   j-- )
            fout.put( text[j] );
        pos = i;
    }
    fout.close();

// вот и всё ...
    cout << "\n\nPress key to exit\n";
    getchar();
    return 0;
}
/////////////////////// END MAIN /////////////////////////////////////////////////////////////

PM MAIL   Вверх
Oleg_Ci
Дата 16.9.2006, 05:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

Репутация: нет
Всего: 30



Цитата(ZENITH @  10.9.2006,  20:36 Найти цитируемый пост)
4)   Разработать программу формирования стека, куда помещается последовательность символов в виде отдельных слов, которые вводятся с клавиатуры. Каждое слово, размещенное в стеке, следует вывести на экран; при этом порядок выведения символов в каждом слове должен быть обратный относительно последовательности их введения.
Что-бы из цикла ввода слов выйти введи слово"end"
Код

#include<iostream>
#include<stdlib.h>
using namespace std; 

struct Node
{
    char * str;
    struct Node * node;
};
class Stack
{
private:
    char buf[100];
    Node * begin;
public:
    void push( char * str );
    char * pop();
    bool empty();
    Stack();
    ~Stack();
};
///////////  MAIN  /////////////////////////
int main()    
{
    Stack s;
    const int max_len = 100;
    char buf[ max_len ];
    buf[0] = '\0';

// ввод слов
    cout << "Write string ( 'end' - exit ):\n";
    while( 1 )
    {  //  вводим слова, если слово "end" - выходим из цикла
        cin >> buf;
        if ( !strcmp( buf, "end" ) ) break; // если слово "end" то - выход из цикла
        s.push( buf );  // слово в стёк
    } 

// выводим слова на консоль в перевёрнутом виде
    cout << "\n\nStack pop:\n";
    while ( !s.empty() ) // пока есть слова цикл работает
    {
        cout << s.pop() << endl;  // слово из стёка на консоль
    }

// вот и всё ...
    cout << "\n\n";
    system("pause");
    return 0;
}
/////////////////////// END MAIN /////////////////////////////////////////////////////////////
Stack::Stack() { begin = NULL; }
////////////////////////
Stack::~Stack()
{
    Node * x;
    while ( begin != NULL )
    {
        x = begin;
        begin = begin->node;
        delete [] x->str;
        delete x;
    }
    begin = NULL;
}
//////////////////////////
void Stack::push( char * str )
{
    if ( begin == NULL ) 
    {
        begin = new Node;
        begin->str = new char[ strlen( str ) +1 ];
        begin->node = NULL;
        strcpy( begin->str, str );
        return;
    }

    Node * x;
    for ( x=begin; x->node != NULL; x=x->node );
    x->node = new Node;
    x = x->node;
    x->str = new char[ strlen( str ) +1 ];
    strcpy( x->str, str );
    x->node = NULL;
}
///////////////////////
char * Stack::pop()
{
    if ( begin == NULL ) return NULL;
    Node * x, *end = NULL;
    for ( x=begin; x->node != NULL; end = x, x=x->node ); // поиск последнего узла

// запись строки в буфер
    int i, len = i = (int) strlen( x->str );
    for ( ; i>=0; i-- )   buf[ len - i ] = x->str[i-1]; 
    buf[len] = '\0';

// удаление последнего узла Node
    delete [] x->str;
    delete x;
    if ( end == NULL )  begin = NULL;
    else  end->node = NULL; // ??
    return buf;
}
/////////////////////////////
bool Stack::empty()
{
    return begin == NULL;
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Интересные и занимательные задачи по программированию | Следующая тема »


 




[ Время генерации скрипта: 0.0680 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.