Форум программистов, компьютерный форум CyberForum.ru

Borland C++ 3.11 - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написать программу меняющую в двумерном массиве строки со столбцами, и еще некоторые http://www.cyberforum.ru/cpp-beginners/thread43174.html
1) Написать программу меняющую в двумерном массиве строки со столбцами 2) Разработать структуру, осуществляющую чтение с диска и выводящую на монитор фамилии учеников с указанием номера последнего выполненного задания. Затем с клавиатуры добавляется оценка за последнее задание 3)Написать программу вычисления амплитуды R зубца в ЭКГ 4)Составить процедуру вычисления квадрата разности двух...
C++ бинарное древо (удаление) Ребята выручайте не как не могу понять алгоритм удаления из дерева. Кто нить может описать подробные коментарии к удалению узла у которого есть оба поддерева или в нем где есть ошибка. Зарание спс. struct tree *dtree(struct tree *root, char key) { struct tree *p,*p2; if(!root) return root; /* вершина не найдена */ if(root->info == key) { /* удаление корня */ ЭТО ПОНЯТНО http://www.cyberforum.ru/cpp-beginners/thread43102.html
C++ STL обращение к элементу list
Помогите исправить ошибку. #include <list> #include <iostream> using namespace std; class PeopleB{ public: int xxx; }; const int EnKolB=4; int main(){
Для чего нужен define? C++
Для чего нужен оператор define? например код #define N 20 /* сколько первых чисел посчитать */ void main(){ int fibs, index;
C++ Работа со строками. Связное хранение строк. http://www.cyberforum.ru/cpp-beginners/thread43045.html
Постановка задачи В текстовом файле хранится последовательность слов. Предполагается, что слово содержит не более 20 букв, слова отделяются друг от друга одним или бо-лее пробелами, количество слов в файле не ограничено. Требуется: 1. Прочитать исходный текст из файла и поместить его в памяти, использовать однонаправленные циклические цепочки . Каждое звено текста размещается в памяти...
C++ Нужно исправить 2 ошибки в коде собственно, САБЖ. нужно исправить 2 ошибки в коде, чтобы его можна было скомпилить и сделать из него ехе-шник. код немалый, тому залил на sendspace: http://sendspace.com/file/ubkkh6 времени немного - до утра понедельника..выручайте, народ, пожалуйста подробнее

Показать сообщение отдельно
insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
11.07.2009, 03:56
Цитата Сообщение от Armon Посмотреть сообщение
5 и 9-15
Как просил,кроме 12
5)..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <iostream>
using namespace std;
#include <time.h>
#include <algorithm>
#include <iomanip>
#define n 30
//////////////////////////////////////////////////////////////////////////
void out(int *a,int k,int m);
void out(int *a,int m);
void vin(int *a,int k);
void oper(int *a,int *b,int k,int m);
//////////////////////////////////////////////////////////////////////////
int main(int argc, char* argv[])
{
    setlocale(0,"");
    int k,m,
        *arr_2D, *arr;
    bool temp = true;
    do 
    {
        cout << "Введите количество рядков: ";
        wcin >> k;
        cout << "Введите количество столбцов: ";
        wcin >> m;
        _flushall();
        if(k*m < n)
            temp = false;
    } while (temp);
    arr_2D = new int[k*m];
    arr = new int[m];
    vin(arr_2D,k*m);
    cout << "Массив:" << endl;
    out(arr_2D,k,m);
    oper(arr_2D,arr,k,m);
    cout << "Произведение непарных элементов столбцов:" << endl;
    out(arr,m);
    getchar();
    delete[]arr_2D;
    delete[]arr;
    return 0;
}
//////////////////////////////////////////////////////////////////////////
void out(int *a,int k,int m)
{
    int x = m - 1;
    for(int i = 0; i < k*m;i++)
    {
        cout << setw(5) << a[i];
        if(i == x)
        {
            cout << endl;
            x += m;
        }
    }
    cout << "\n\n";
}
//////////////////////////////////////////////////////////////////////////
void out(int *a,int m)
{
    for(int i = 0 ; i < m;i++)
        cout << a[i] << "   ";
    cout << endl;
}
//////////////////////////////////////////////////////////////////////////
void vin(int *a,int k)
{
    srand(time(0));
    for(int i = 0; i < k;i++)
        a[i] = rand()%51-25;
}
//////////////////////////////////////////////////////////////////////////
void oper(int *a,int *b,int k,int m)
{
    int x = 0,
        q = 0;
    fill(b,b+m,1);
    for(int i = 0; i < m;i++)
    {
        for(int j = 0; j < k;j++)
        {
            if((i + j*m) < k*m)
            {
                if(a[i + j*m]%2 != 0)
                {
                    b[x] *= a[i + j*m];
                    q++;
                }
            }
        }
        if(q == 0)
            b[x] = 0;
        q = 0;
        x++;
    }
}
//////////////////////////////////////////////////////////////////////////

9)..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include <iostream>
using namespace std;
#include <time.h>
#include <stdlib.h>
#include <iomanip>
#include <algorithm>
#define range_min -1000.0
#define range_max 1000.0
//////////////////////////////////////////////////////////////////////////
void out(double *a,int n,int m);
void out(double *a,int m);
void vin(double *a,int n);
double Rand();
void oper(double *a,double *b,int n,int m);
//////////////////////////////////////////////////////////////////////////
int main(int argc, char* argv[])
{
    setlocale(0,"");
    bool temp = true;
    int n,m;
    double *arr_2D,*arr;
    do 
    {
        cout << "Введите количество рядков: ";
        wcin >> n;
        cout << "Введите количество столбцов: ";
        wcin >> m;
        _flushall();
        if((n <= 10) && (n >= 4) && (m <= 10) && (m >= 4) && (n != m))
            temp = false;
    } while (temp);
    arr_2D = new double[n*m];
    arr = new double[m];
    srand(time(0));
    vin(arr_2D,n*m);
    cout << "Массив:" << endl;
    out(arr_2D,n,m);
    oper(arr_2D,arr,n,m);
    cout << "Отрицательные эелементы столбцов:" << endl;
    out(arr,m);
    delete[]arr_2D;
    delete[]arr;
    getchar();
    return 0;
}
//////////////////////////////////////////////////////////////////////////
double Rand()
{
    return(range_min + rand()%static_cast<long>(range_max - range_min + 1));
}
//////////////////////////////////////////////////////////////////////////
void out(double *a,int n,int m)
{
    int x = m - 1;
    for(int i = 0; i < n*m;i++)
    {
        cout << setw(6) << a[i];
        if(i == x)
        {
            cout << endl;
            x += m;
        }
    }
    cout << "\n\n";
}
//////////////////////////////////////////////////////////////////////////
void out(double *a,int m)
{
    for(int i = 0; i < m;i++)
        cout << a[i] << setw(7);
    cout << endl;
}
//////////////////////////////////////////////////////////////////////////
void vin(double *a,int n)
{
    for(int i = 0 ; i < n;i++)
        a[i] = Rand();
}
//////////////////////////////////////////////////////////////////////////
void oper(double *a,double *b,int n,int m)
{
    int x = 0;
    fill(b,b+m,0);
    for(int i = 0; i < m; i++)
    {
        for(int j = 0; j < n;j++)
        {
            if(a[i + j*m] < 0)
            {
                b[x] = a[i + j*m];
                break;
            }
        }
        x++;
    }
}
//////////////////////////////////////////////////////////////////////////

10)..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <iostream>
using namespace std;
#include <windows.h>
#include <string>
#define n 512
//---------------------------------------------------------------------------
int CharCount(char *, const char,bool&);
//---------------------------------------------------------------------------
int main(int argc, char* argv[])
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    bool temp = true;
    char str[n] = {'\0'};
    char str_temp[n] = {'\0'};
    char *buf = NULL;
    int count = 0, total = 0,
        num_words = 0,
        qty_words = 0;
    do
    {
        cout << "Введите предложение(не менее 5 слов): " << endl;
        cin.getline(str, 512);
        cout << endl;
        for(int i = 0;i <= n;i++)
            if(str[i] == ' ' || str[i] == '\0')
                num_words++;
        if(num_words >= 5)
            temp = false;
    }while(temp);
    buf = strtok(str, " ");
    count = CharCount(buf, 'c',temp);
    if(temp)
    {
        strcpy(str_temp,buf);
        temp = false;
    }
    while (buf != NULL)
    {
        total += count;
        count = 0;
        buf = strtok(NULL, " ");
        if(buf != NULL)
        {
            count = CharCount(buf, 'c',temp);
            if(temp)
            {
                if(str_temp != NULL)
                    strcat(str_temp," ");
                strcat(str_temp,buf);
                temp = false;
            }
        }
    }
    cout << "Предложение после преобразования: " << endl
         << str_temp << endl;
    cout << "Всего букв 'c': " << total << endl;
    getchar();
    return 0;
}
//---------------------------------------------------------------------------
int CharCount(char *tmp, const char ch,bool& temp)
{
    int count = 0;
 
    while (*tmp != '\0')
    {
        if (*tmp == ch)
        {
            count++;
        }
        tmp++;
    }
    if(count == 0)
        temp = true;
    return count;
}

11)..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <iostream>
using namespace std;
#include <time.h>
#include <stdlib.h>
#include <iomanip>
#include <algorithm>
#define range_min -1000.0
#define range_max 1000.0
//////////////////////////////////////////////////////////////////////////
void out(int *a,int n,int m);
void out(int *a,int m);
void vin(int *a,int n);
int Rand();
void oper(int *a,int *b,int n,int m);
//////////////////////////////////////////////////////////////////////////
int main(int argc, char* argv[])
{
    setlocale(0,"");
    bool temp = true;
    int n,m;
    int *arr_2D,*arr;
    do 
    {
        cout << "Введите количество рядков: ";
        wcin >> n;
        cout << "Введите количество столбцов: ";
        wcin >> m;
        _flushall();
        if((n <= 10) && (n >= 4) && (m <= 10) && (m >= 4) && (n != m))
            temp = false;
    } while (temp);
    arr_2D = new int[n*m];
    arr = new int[m];
    srand((unsigned)time(NULL));
    vin(arr_2D,n*m);
    cout << "Массив:" << endl;
    out(arr_2D,n,m);
    oper(arr_2D,arr,n,m);
    cout << "Отрицательные эелементы столбцов:" << endl;
    out(arr,m);
    delete[]arr_2D;
    delete[]arr;
    getchar();
    return 0;
}
//////////////////////////////////////////////////////////////////////////
int Rand()
{
    return((double)rand() / (RAND_MAX + 1) * (range_max - range_min)
        + range_min);
}
//////////////////////////////////////////////////////////////////////////
void out(int *a,int n,int m)
{
    int x = m - 1;
    for(int i = 0; i < n*m;i++)
    {
        cout << a[i] << "   ";
        if(i == x)
        {
            cout << endl;
            x += m;
        }
    }
    cout << "\n\n";
}
//////////////////////////////////////////////////////////////////////////
void out(int *a,int m)
{
    for(int i = 0; i < m;i++)
        cout << a[i] << "   ";
    cout << endl;
}
//////////////////////////////////////////////////////////////////////////
void vin(int *a,int n)
{
    for(int i = 0 ; i < n;i++)
        a[i] = Rand();
}
//////////////////////////////////////////////////////////////////////////
void oper(int *a,int *b,int n,int m)
{
    int x = 0;
    fill(b,b+m,0);
    for(int i = 0; i < m; i++)
    {
        for(int j = 0; j < n;j++)
        {
            if(a[i + j*m] < 0)
            {
                if((a[i + j*m]%3 == 0) || (a[i + j*m]%5 == 0))
                    b[x] += a[i + j*m];
            }
        }
        x++;
    }
}
//////////////////////////////////////////////////////////////////////////

13)..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <iostream>
using namespace std;
#include <time.h>
#include <iomanip>
#define range_min -1000
#define renge_max 1000
//////////////////////////////////////////////////////////////////////////
void out(int *a,int n);
void vin(int *a,int n);
int Rand();
void oper(int *a,int n);
//////////////////////////////////////////////////////////////////////////
int main(int argc, char* argv[])
{
    setlocale(0,"");
    int *arr,
        n;
    bool temp = true;
    do 
    {
        cout << "Введите количество элементов в массиве: ";
        wcin >> n;
        _flushall();
        if(n < 30)
            temp = false;
    } while (temp);
    arr = new int[n];
    srand((unsigned)time(NULL));
    vin(arr,n);
    cout << "Массив:" << endl;
    out(arr,n);
    oper(arr,n);
    cout << "Массив после преобразования:" << endl;
    out(arr,n);
    getchar();
    delete[]arr;
    return 0;
}
//////////////////////////////////////////////////////////////////////////
int Rand()
{
    return range_min + rand()%(renge_max-range_min+1);
}
//////////////////////////////////////////////////////////////////////////
void out(int *a,int n)
{
    for(int i = 0; i < n;i++)
        cout << setw(5) << a[i];
    cout << "\n\n";
}
//////////////////////////////////////////////////////////////////////////
void vin(int *a,int n)
{
    for(int i = 0; i < n;i++)
        a[i] = Rand();
}
//////////////////////////////////////////////////////////////////////////
void oper(int *a,int n)
{
    int temp;
    int temp_a;
    for(int i = 0; i < n;i++)
    {
        temp_a = a[i];
        while(temp_a)
        {
            temp = temp_a-(temp_a/10)*10;
            temp_a /= 10;
            if(temp == 5 || temp == -5)
            {
                a[i] = 50;
                break;
            }
        }
    }
}

14)..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include <iostream>
using namespace std;
#include <string>//strcpy() и strtok()
#include <Windows.h>//консоль понимает и говорит по-русскому
#define  n 7   //слов в предложении
#define  k 255 //макс. буковок в строке
#define  m 30  //макс.буковок в слове
//////////////////////////////////////////////////////////////////////////
//считает буковки в слове(buf - входящее слово;letter - ячейка в массиве для количества буковок в слове;
//min_letter - мин.количество буковок;sum_count - общее количество буковок)
void qty_letter(char* buf,int* letter,int& min_letter,int& sum_count);
void s_copy(char* str,char* buf);//копироваие слов,но можно попробовать strcpy(),
//у меня несовсем корректно работало
//////////////////////////////////////////////////////////////////////////
int main(int argc, char* argv[])
{
    //консоль понимает русский
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char sentence[k] = {'\0'},//предложение 
        str[k] = {'\0'},//копия предложения, которая будет "разбита" на слова
        sym[12] = {" .,:;()-+*/"},//разделяющие символы
        *words [n+1],//массив для слов предложения
        ch = '!',//знак для замены
        *buf = NULL;//вспомогательная
    int letter[n], //массив для количества букв в каждом слове
        min_letter = k, //мин.количество букв в слове
        sum_count = 0, //всего букв
        qty_words = 0, //количество слов
        i = 0, j = 0, i_temp = 0;//для индексов
    bool temp = true;
    do 
    {
        cout << "Введите предложение(из 7 слов):" << endl;
        cin.getline(sentence,k);
        //подсчет количества слов в введёном предложении
        for(i = 0; i < k;i++)
        {
            if((sentence[i] == ' ') || (sentence[i] == '\n'))
                qty_words++;
        }
        if(qty_words == n-1)
            temp = false;
    } while (temp);
    i = j = 0;
    strcpy(str,sentence);
    //разбиение предложения на слова и подсчет их кол.
    buf = strtok(str,sym);
    words[j] = new char[m];
    *words[j] = '\0';
    s_copy(words[j],buf);
    j++;
    while(buf != NULL)
    {
        words[j] = new char[m];
        *words[j] = '\0';
        qty_letter(buf,letter+i,min_letter,sum_count);
        i++;
        buf = strtok(NULL,sym);
        s_copy(words[j],buf);
        j++;
    }
    j = 0;
    //замена
    for(i = 0; i < n;i++)
    {
        if(letter[i] == min_letter)
        {
            //индекс нужного слова
            while(j <= i-1)
            {
                i_temp += letter[j++];
            }
            //замена превого символа
            i_temp += i;
            sentence[i_temp] = ch;
            j = 1;
            //если слово не закончилось,то заменяет символ(пока не заменит первыз 3)
            while((i_temp+j != letter[i]) && (j < 3))
            {
                sentence[i_temp+j] = ch;
                j++;
            }
        }
        i_temp = 0;
        j = 0;
    }
    cout << "Количество букв в каждом слове:" << endl;
    for(i = 0; i < n;i++)
    {
        cout << words[i] << " - " << letter[i] << endl;
        delete[]words[i];
    }
    cout << "Всего букв в предложении: " << sum_count << endl;
    cout << "Предложение после преобразования:" << endl
         << sentence << endl;
    getchar();
    return 0;
}
//////////////////////////////////////////////////////////////////////////
void qty_letter(char* buf,int* letter,int& min_letter,int& sum_count)
{
    int count = 0;
    while(*buf != '\0')
    {
        count++;
        buf++;
    }
    *letter = count;
    sum_count += count;
    if(count < min_letter)
        min_letter = count;
}
//////////////////////////////////////////////////////////////////////////
void s_copy(char* str,char* buf)
{
    if(buf != NULL){
        while(*buf != '\0')
        {
            *str = *buf;
            buf++;
            str++;
        }
        *str = '\0';
    }
}
//////////////////////////////////////////////////////////////////////////

15)..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <iostream>
using namespace std;
#include <time.h> //time()
#include <stdlib.h>//srand() и RAND_MAX
#include <iomanip>//setw()
//-----------------диапозон------------------------------------------------
#define range_min -1000.0
#define range_max 1000.0
//////////////////////////////////////////////////////////////////////////
void out(int *a,int n,int m);//вывод матрицы
void vin(int *a,int n);//ввод матрицы
int Rand();//псевдослучайные числа в заданом диапозоне
void oper(int *a,int n);//операция престановки
//////////////////////////////////////////////////////////////////////////
int main(int argc, char* argv[])
{
    setlocale(0,"");//консоль пишет на русском
    int n;
    int *arr_2D;
    cout << "Введите порядок матрицы: ";
    wcin >> n;
    _flushall();;
    arr_2D = new int[n*n];
    srand((unsigned)time(NULL));
    vin(arr_2D,n*n);
    cout << "Массив:" << endl;
    out(arr_2D,n,n);
    oper(arr_2D,n);
    cout << "Массив после преобразования:" << endl;
    out(arr_2D,n,n);
    delete[]arr_2D;
    getchar();
    return 0;
}
//////////////////////////////////////////////////////////////////////////
int Rand()
{
    return((double)rand() / (RAND_MAX + 1) * (range_max - range_min)
        + range_min);
}
//////////////////////////////////////////////////////////////////////////
void out(int *a,int n,int m)
{
    int x = m - 1;
    for(int i = 0; i < n*m;i++)
    {
        cout << setw(5) << a[i] ;
        if(i == x)
        {
            cout << endl;
            x += m;
        }
    }
    cout << "\n\n";
}
//////////////////////////////////////////////////////////////////////////
void vin(int *a,int n)
{
    for(int i = 0 ; i < n;i++)
        a[i] = Rand();
}
//////////////////////////////////////////////////////////////////////////
void oper(int *a,int n)
{
    int imin = 0,//индекс мин. элемента
        temp = 0,
        i = 0,
        j = 0;
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < n;j++)//поиск найменьшего элемента в столбце
        {
            if(a[i + j*n] < a[imin])
            {
                imin = i + j*n;
            }
        }
        //обмен
        temp = a[i+(j)*(n-1)];
        a[i+(j)*(n-1)] = a[imin];
        a[imin] = temp;
    }
}
//////////////////////////////////////////////////////////////////////////

P.S. Код писался на MSVS2008
+
код можно и по-красивее написать, но мне хотелось поиздеваться над собой))
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru