Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/27: Рейтинг темы: голосов - 27, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 17.08.2009
Сообщений: 6
1

C++ не могу в нём разобраться (заход 2)

17.08.2009, 22:52. Показов 4866. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Спасибо что помогли мне я думаю что эти задания правильно решены.
Извините что я вас загружаю этими задачами но просто я не понимаю этот язык C++.
Помогите ещё задачи решить.
1. Два натуральных числа называются дружественными, если каждое из них равно сумме всех делителей другого (само другое число в качестве делителя не рассматривается). Найти все пары натуральных дружественных чисел, меньших 50000.
2. Дано предложение. Определить, сколько в нем одинаковых соседних букв.
3. Дано предложение. Найти наибольшее количество идущих подряд пробелов.
4. Имеется таблица выигрышей денежно-вещевой лотереи. Первый ее столбец содержит номер билета, второй – серию, третий – название выигрыша, четвертый – денежное выражение выигрыша (цену). У школьников было 5 билетов. Сколько из них оказались выигрышными.
5. Дан массив данных о росте человека: фамилия, пол, рост. Определить средний рост женщин этого списка, вывести на экран фамилию самого высокого мужчины этого списка.
6. В массиве а[1]..а[n] целых чисел переставить элементы так, чтобы чётные шли перед нечётными (не меняя взаимный порядок в каждой из групп).
7. Матрицу размера 5х6 заполнить так, чтобы элементы каждой строки, начиная со второй, были равны удвоенным элементам предыдущей строки.
8. Характеристикой строки целочисленной матрицы назовем сумму ее положительных четных элементов. Переставляя строки заданной матрицы, расположите их в соответствии с ростом характеристик.
9. Дан массив данных, в котором хранятся данные о детских садах: наименование , номер сада, количество детей, район города, плата за месяц (в руб.). Посчитать количество детей в детских садах указанного района (ввести с клавиатуры) и вывести всю информацию о самом дорогом детском саде.
10. Натуральное число N > 1, представить в виде суммы натуральных чисел так, чтобы произведение этих слагаемых было максимально.
11. Путем перестановки элементов квадратной вещественной матрицы добиться того, чтобы ее минимальный элемент находился в левом верхнем углу, следующий по величине – в позиции (2,2), следующий по величине – в позиции (3,3) и т.д., заполнив таким образом всю главную диагональ.
12. Написать программу “Тестирование коллектива”. Входные данные - информация об учениках некоторого класса из n человек. Для каждого ученика заданы фамилия, возраст, рост, успеваемость (округленный средний балл) и др. параметры.
Ученик называется среднестатистическим по k-му параметру (уникальным по k-му параметру), если на нем достигается минимум (максимум) модуля разности среднего арифметического k-ых параметров всех учеников и значения k-го параметра этого ученика.
Ученик называется самым уникальным (самым средним), если он уникален (является среднестатистическим) по самому большому количеству параметров.
Программа должна считывать исходную информацию и печатать отчет:
• о самых уникальных;
• о самых средних;
• о самых средних среди самых уникальных;
• о самых уникальных среди самых средних.
13. Дано предложение. Поменять местами его первое и последнее слова.
14. "Вращающийся квадрат". Эта игра похожа на известный кубик Рубика. Играет один человек. Перед ним доска размером 4 x 4 клетки, в которых в произвольном порядке расставлены буквы латинского алфавита от A до P. Цель игры – расположить буквы по алфавиту. Делается это благодаря особому устройству доски: любой квадрат, образованный четырьмя соседними клетками, можно вращать по часовой стрелке. За каждый ход квадрат поворачивается ровно на одну клетку. В распоряжении игрока также имеется дополнительная операция, которую можно использовать только раз, - перестановка двух соседних букв любой строки.

Ели вам не тяжело попробуйте и эти задания решить.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.08.2009, 22:52
Ответы с готовыми решениями:

C++ не могу разобраться в нём
Привет всем помогите пожалуйста кто может у меня такая проблема не могу решить задачи по C++, в...

Задали работу, не могу разобраться. Используется делфи 10, не могу разобраться, как это сделать
В одномерном массиве, состоящем из n вещественных элементов, вычислить: минимальный элемент массива...

Алгоритм, вычисляющий восход-заход солнца и восход-заход луны.
Найден алгоритм, написанный на BASIC и вычисляющий восход-заход солнца и восход-заход луны. Есть...

Не могу разобраться разобраться с кодом меню
Добрый день. Я понимаю, что тут все, наверное, элементарно. Но я только начала изучение js и пока...

20
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
18.08.2009, 19:05 2
Задача №3

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
#include <iostream>
#include <string>
#include <Windows.h>
using namespace std;
 
int main(int argc, char* argv[])
{
        SetConsoleCP(1251);
        SetConsoleOutputCP(1251);
        string word;
        int max_kol=0; 
        int j=0;
        cout << "Введите предложение: "<<endl;
        getline(cin,word);
        for(int i=0; i<word.size(); i++)
        {
            if (word[i]==' ')
            {
                j++;
            }
            else j=0;
            if(max_kol<j)
            {
                max_kol=j;
            }
        }
        cout<<"Максимальное количество пробелов:   "<<max_kol<<endl;
        return 0;
}
0
Эксперт С++
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
18.08.2009, 20:32 3
Задача T1

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
#include <stdio.h>
#include <stdlib.h>
 
const int MAX_NUM= 50000;
 
void calc_sum_div_arr( int size, int *arr );
 
 
/**************************************/
int main( void ) {
 
int n1, n2;
int arr[MAX_NUM];
 
 
calc_sum_div_arr( MAX_NUM, arr );
for ( n1= 1; n1<MAX_NUM; n1++ ) {
    if ( ((n2= arr[n1])<MAX_NUM) && n1<=n2 && arr[n2] == n1 ) {
        printf( "n1=%d n2=%d\n", n1, n2 );
    }
}
 
return 0;
 
} // main()
 
 
/**************************************/
void calc_sum_div_arr( int size, int *arr ) {
 
register int num, div, sum_div;
 
 
if ( size<=0 ) { return; }
 
arr[0]= 0;
for ( num= 1; num<size; num++ ) {
    sum_div= 0;
    for ( div= 1; div<num; div++ ) {
        if ( num%div == 0 ) { sum_div+= div; }
    }
    arr[num]= sum_div;
}
 
} // calc_sum_div_arr()


Добавлено через 52 минуты 39 секунд
Задача T6

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
#include <stdio.h>
#include <stdlib.h>
 
void print_arr( int *data, int from, int to, const char *title );
void sort_arr( int *data, int from, int to );
void right_rotate( int *data, int from, int to );
 
 
/**************************************/
int main( void ) {
 
const int N= 10;
int a[N+1]= { -1,
    5, 7, 6, 3, 2, 10, 41, 3, 6, 9
};
 
print_arr( a, 1, N, "before:\n" );
sort_arr( a, 1, N );
print_arr( a, 1, N, "after:\n" );
return 0;
 
} // main()
 
 
/**************************************/
void print_arr( int *data, int from, int to, const char *title ) {
 
int i;
 
 
printf( "%s", title );
for ( i= from; i<=to; i++ ) {
    printf( " %d", data[i] );
}
printf( "\n" );
 
} // print_arr()
 
 
/**************************************/
void sort_arr( int *data, int from, int to ) {
 
int i, j;
 
for ( i= from ; i<=to ; ) {
    if ( data[i] % 2 == 0 ) {
        i++; continue;
    }
    // here data[i] % 2 == 1
    for ( j= i+1; ; j++ ) {
        if ( j>to ) { goto label_exit; }
        if ( data[j] % 2 == 0 ) { break; }
    }
    // here data[i..j-1] % 2 == 1
    // data[j] % 2 == 0
    right_rotate( data, i, j );
}
label_exit: ;
 
} // sort_arr()
 
 
/**************************************/
void right_rotate( int *data, int from, int to ) {
    
int i, tmp_val;
 
if ( from>=to ) { return; }
tmp_val= data[to];
for ( i= to-1; i>=from; i-- ) {
    data[i+1]= data[i];
}
data[from]= tmp_val;
 
} // right_rotate()


Добавлено через 1 минуту 57 секунд
10. Натуральное число N > 1, представить в виде суммы натуральных чисел так, чтобы произведение этих слагаемых было максимально.
Эта задача явно не для начинающих.
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
18.08.2009, 21:49 4
мое понимание №2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int main()
{
    setlocale(LC_ALL,"Rus");
    char s[1000];
    std::cin.getline(s,1000);
    int i(0), j(0);
    int mas[256];
    for(i = 0; i < 256; ++i)
        mas[i] = 1;
    while(s[j])
    {
        if((int)s[j] == (int)s[j+1])
            mas[(int)s[j]]++;
        j++;
    }
    for(i = 0; i < 256; ++i)
        if(mas[i]>1)
            std::cout<<(char)i<<' '<<mas[i]<<'\n';
    system("pause");
    return 0;
}


Добавлено через 44 минуты 22 секунды
№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
#include <string>
int main()
{
    setlocale(LC_ALL,"Rus");
    std::string str;
    std::cout<<"Введите строку:\n";
    getline(std::cin, str, '\n');
    size_t pos1(0), pos2(0);
    pos1 = str.find(' ');
    pos2 = str.rfind(' ');
    if(pos1 == -1)
    {
        std::cout<<"В строке только одно слово";
        goto end;
    }
    else
    {
        std::cout<<"Результат:\n";
        std::string buf1;
        buf1 = str.substr(pos2 + 1, str.length() - pos2);
        str.replace(pos2 + 1, str.length() - pos2, str.substr(0, pos1));
        str.replace(0, pos1, buf1);
        std::cout<<str;
    }
 end:
    std::cout<<std::endl;
    system("pause");
    return 0;
}

Не по теме:

я не выбираю легкие задания,
я просто давно не писал на С++,
я просто разминаюсь :D



Добавлено через 8 минут 8 секунд
№7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main()
{
    setlocale(LC_ALL,"Rus");
    int matr[5][6], i, j;
    std::cout<<"Введите первую строку матрицы:\n";
    for(i = 0; i < 6; ++i)
        std::cin>>matr[0][i];
    for(i = 1; i < 5; ++i)
        for(j = 0; j < 6; ++j)
            matr[i][j] = matr[i - 1][j] * 2;
    std::cout<<"\nРезультат:\n";
    for(i = 0; i < 5; ++i, std::cout<<std::endl)
        for(j = 0; j < 6; ++j)
            std::cout<<matr[i][j]<<'\t';
    system("pause");
    return 0;
}


Добавлено через 21 минуту 40 секунд
№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
struct People
{
    char fam[20];
    bool pol;;
    int rost;
};
std::istream& operator>>(std::istream& in, People &ppl)
{
    std::cout<<"Фамилия\n> ", in>>ppl.fam;
    std::cout<<"Пол(1 - м, 0 - ж)\n> ", in>>ppl.pol;
    std::cout<<"Рост(см)\n1> ", in>>ppl.rost;
    return in;
}
std::ostream& operator<<(std::ostream& out, People &ppl)
{
    std::cout<<"Фамилия:\n> ", out<<ppl.fam;
    std::cout<<"Пол(1 - м, 0 - ж):\n> ", out<<ppl.pol;
    std::cout<<"Рост(см):\n1> ", out<<ppl.rost;
    return out;
}
int main()
{
    setlocale(LC_ALL,"Rus");
    const int n = 2;
    People pointer[n];
    int i;
    for(i = 0; i < n; ++i)
        std::cout<<"\nЧеловек № "<<i+1<<':'<<std::endl,
        std::cin>>pointer[i];
    std::cout<<"\nРезультат:\n";
    float srRost(0);
    int count(0), max(0), index(0);
    for(i = 0; i < n; ++i)
        if(pointer[i].pol)
        {
            if(pointer[i].rost > max)
            {
                max = pointer[i].rost;
                index = i;
            }
        }
        else
        {
            count++;
            srRost += pointer[i].rost;
        }
    if(!max)
        std::cout<<"В массиве нет мужчин";
    else
        std::cout<<"Фамилия самого высокого мужчины:\n"<<pointer[index].fam;
    std::cout<<"\n\n";
    if(count)
        std::cout<<"Средний рост женщин из массива:\n"<<srRost/count<<" см";
    else
        std::cout<<"В массиве нет женщин";
    std::cout<<'\n';
    system("pause");
    return 0;
}
0
121 / 121 / 14
Регистрация: 14.03.2009
Сообщений: 462
18.08.2009, 22:00 5
Цитата Сообщение от odip Посмотреть сообщение
Эта задача явно не для начинающих.
если ничего не путаю, то задача не очень трудная, по крайней мере в плане реаизации:
для n<=4 раскладываем на два слогаемых: (n-1)+1
для n>4:
1. если делится на 3 без остатка то на n/3 слогаемых 3+3+3+3+...+3
2. если остаток=1 то на n/3 слогаемых 3+3+3+3+...+3+4
3. если остаток=2 то на n/3+1 слогаемых 3+3+3+3+...+3+2
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
18.08.2009, 22:36 6
№6
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
int main()
{
    setlocale(LC_ALL,"Rus");
    int n, i;
    std::cout<<"Введите количество элементов массива:\n",std::cin>>n;
    int *mas = new int[n];
    std::cout<<"Введите элементы массива:\n";
    for(i = 0; i < n; ++i)
        std::cin>>mas[i];
    system("cls");
    std::cout<<"Введенный массив из "<<n<<" элементов:\n";
    for(i = 0; i < n; ++i)
        std::cout<<mas[i]<<' ';
    int *buf1 = new int[n];
    int *buf2 = new int[n];
    int j(0), k(0);
    for(i = 0; i < n; ++i)
        if(mas[i]&1)
            buf1[j] = mas[i], j++;
        else
            buf2[k] = mas[i], k++;
    for(i = 0; i < k; ++i)
        mas[i] = buf2[i];
    for(i = j; i < n; ++i)
        mas[i] = buf1[i - j];
    std::cout<<"\nРезультат:\n";
    for(i = 0; i < n; ++i)
        std::cout<<mas[i]<<' ';
    std::cout<<'\n';
    system("pause");
    return 0;
}

и последний на сегодня №8 скоро будет

Добавлено через 23 минуты 56 секунд
№8
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
int main()
{
    setlocale (LC_ALL, "Russian");
    int n, m, i, j;
    std::cout<<"Введите размерность:\nn = ", std::cin>>n, std::cout<<"m = ", std::cin>>m; 
    int **matr = new int*[n];
    for(i = 0; i < n; ++i)
        matr[i] = new int[m];
    std::cout<<"Введите матрицу размерностью "<<n<<'x'<<m<<":\n";
    for (i = 0; i < n; ++i)
        for(j = 0; j < m; ++j)
            std::cin>>matr[i][j];
    system("cls");
    std::cout<<"Введенная матрица:\n";
    for(i = 0; i < n; ++i, std::cout<<'\n')
        for(j = 0; j < m; ++j)
            std::cout<<matr[i][j]<<' ';
    int *mas = new int[n];
    for(i = 0; i < n; ++i)
    {
        mas[i] = 0;
        for(j = 0; j < m; ++j)
            if((matr[i][j] > 0) && !(matr[i][j]&1))
                mas[i]+=matr[i][j];
    }
    for(int k = 0; k < n - 1; ++k)
        for(i = 0; i < n - 1; ++i)
            if(mas[i]>mas[i + 1])
            {
                for(j = 0; j < m; ++j)
                    matr[i][j] ^= matr[i + 1][j] ^= matr[i][j] ^= matr[i + 1][j];
                mas[i] ^= mas[i + 1] ^= mas[i] ^= mas[i + 1];
            }
    std::cout<<"Результат:\n";
    for(i = 0; i < n; ++i, std::cout<<'\n')
        for(j = 0; j < m; ++j)
            std::cout<<matr[i][j]<<' ';
    system("pause");
    return 0;
}
0
Эксперт С++
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
18.08.2009, 23:02 7
2EnzoMatrix: Похоже ты прав, но как это доказать
0
121 / 121 / 14
Регистрация: 14.03.2009
Сообщений: 462
18.08.2009, 23:14 8
не знаю, из разряда *опой чую, объяснить не могу=)
0
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
19.08.2009, 11:53 9
Формулировка задачи №4 некорректная.
Вот решение задачи №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
#include "stdafx.h"
#include <iostream>
#include <string>
#include <Windows.h>
using namespace std;
 
int main(int argc, char* argv[])
{
        SetConsoleCP(1251);
        SetConsoleOutputCP(1251);
        int i, j, a, temp;
        string region;
        cout<<"Введите количество детских садов"<<endl;
        cin>>i;
        string *naim_sada;
        naim_sada= new string[i];
        string *raion;
        raion= new string[i];
        int *nom_sada;
        nom_sada= new int[i];
        int *kol_det;
        kol_det= new int[i];
        int *plata;
        plata= new int[i];
        for(j=0; j<i; j++)
        {
            cout<<"Введите наименование "<<j+1<< " детского сада"<<endl; cin>>naim_sada[j];
            cout<<"Введите номер "<<j+1<< " детского сада"<<endl; cin>>nom_sada[j];
            cout<<"Введите количество детей в "<<j+1<<" саду"<<endl; cin>>kol_det[j];
            cout<<"Введите район города "<<j+1<<" детского сада"<<endl; cin>>raion[j];
            cout<<"Введите месячную плату в (руб) в "<<j+1<<" детском саду"<<endl; cin>>plata[j];
        }
        cout<<"Введите наименование района города где необходимо посчитать детей"<<endl;
        cin>>region;
        temp=0;
        for (j=0; j<i; j++)
        {
            if(raion[j]==region)
                temp+=kol_det[j];
        }
        cout<<"Количество детей в садах в районе:"<<region<<":   "<<temp<<endl;
        temp=0;
        a=0;
        for (j=0; j<i; j++)
        {
            if(plata[j]>temp)
            {
                temp=plata[j];
                a=j;
            }
        }
        cout<<"Самым дорогим садом является:"<<endl;
        cout<<"Наименование сада: "<<naim_sada[a]<<endl;
        cout<<"№ детского сада: "<<nom_sada[a]<<endl;
        cout<<"Количество детей: "<<kol_det[a]<<endl;
        cout<<"Наименование района: "<<raion[a]<<endl;
        cout<<"Плата за месяц в рублях: "<<plata[a]<<endl;
        return 0;
}
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
19.08.2009, 12:49 10
valeriikozlov, я думаю использование структур в девятой задаче более удобно вот
пример
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
struct ChGarden
{ 
    char nazv[20];
    int kold;
    char raj[20];
    int stoim;
};
std::istream& operator>>(std::istream& in, ChGarden &child)
{
    std::cout<<"Название\n> ", in>>child.nazv;
    std::cout<<"Количество детей\n> ", in>>child.kold;
    std::cout<<"Район\n> ", in>>child.raj;
    std::cout<<"Стоимость\n> ", in>>child.stoim;
    return in;
}
std::ostream& operator<<(std::ostream& out, ChGarden &child)
{
    std::cout<<"Название\n> ", out<<child.nazv;
    std::cout<<"\nКоличество детей\n> ", out<<child.kold;
    std::cout<<"\nРайон\n> ", out<<child.raj;
    std::cout<<"\nСтоимость\n> ", out<<child.stoim<<'\n';
    return out;
}
int main()
{
    setlocale(LC_ALL,"Rus");
    const int n = 2;
    ChGarden pointer[n];
    int i;
    for(i = 0; i < n; ++i)
        std::cout<<"\nДетский сад № "<<i+1<<':'<<std::endl,
        std::cin>>pointer[i];   
    std::cout<<"\nВведите район:\n";
    char rajon[20];
    std::cin>>rajon;
    std::cout<<"\nРезультат:\n";
    int count(0), max(0), index(0);
    for(i = 0; i < n; ++i)
    {
        if(strncmp(strlwr(pointer[i].raj), strlwr(rajon), strlen(rajon)) == 0)
            count+=pointer[i].kold;
        if(pointer[i].stoim > max)
        {
            max = pointer[i].stoim;
            index = i;
        }
    }
    if(count)
        std::cout<<"Количество детей в детских садах "<<rajon<<" района:\n"<<count;
    else
        std::cout<<"В этом районе детских садов нету";
    std::cout<<'\n';
    std::cout<<"\nСамый дорогой детский сад №"<<index+1<<":\n"<<pointer[index];
    system("pause");
    return 0;
}
0
Эксперт С++
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
19.08.2009, 17:47 11
Формулировка задачи №4 некорректная.
Раскрой свою мысль подробнее - в чем именно некорректная ?
Школьники указывают серию и номер своего билета - 5 штук.
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
19.08.2009, 18:03 12
odip, если думать логически:
есть матрица 5х4
Код
№ билета | серия | название выигрыша | цена приза
С этим вроде ясно. Но вопрос сколько из них было выигрышными довольно спорный. Если рассматривать с точки зрения теории игр, то да, формулировка некорректная, потому как не сказано каков тираж и сколько из них выигрышных, тогда надо было считать какие шансы что-то выиграть у этих 5 билетов.
Если ее никак не рассматривать, то все довольно примитивно. Пользователь вводит
Код
1 | aa0001 | 0 | 0
2 | aa0001 | 0 | 0
3 | ab0002 | 1 | 500
4 | ac0003 | 0 | 0
5 | aa0004 | 2 | 400
тогда просто
C++
1
2
3
for(i = 0; i < 5; ++i)
    if(schoolboy[i][3])
        count++;
0
Эксперт С++
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
19.08.2009, 18:10 13
А я думаю не так.
Есть матрица N*4 - матрица выигрыша всего тиража.
Потом приходят 5 школьников и вводят 10 чисел.
Нужно вывести одно число - сколько среди них выигрышных билетов.
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
19.08.2009, 18:18 14
Грубо говоря есть большая такая база(таблица выигрышей), там выбираются билеты номера которых ввели и считается количество ненулевых значений в 4 столбце? Что ж, вполне логично . Значит такое задание и будет
0
Эксперт С++
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
19.08.2009, 18:25 15
А как еще можно понять текст этого задания ?
И кстати ничего в 4 столбце проверять нужно - из текста задания следует что все билеты попавшие в эту таблицу уже являются выигрышными, а тебя ведь не просят подсчитать сумму выигранных денег.
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
19.08.2009, 18:29 16
У школьников было 5 билетов. Сколько из них оказались выигрышными
Все таки надо проверять, раз вопрос сколько из них. Или ты предлагаеш ввод на удачу, угадал номер или не угадал? Угадал - выиграл, не угадал - не выиграл?
0
Эксперт С++
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
19.08.2009, 18:33 17
Не так.
Есть таблица N*4, где уже записаны все выигрыши.
Далее вводится еще таблица 5*2, где две колонки - номер серии и номер билета.
Нужно взять вторую таблица - поискать билеты в первой таблице и посчитать.
В первой таблице ничего не проверять не нужно - все номера в ней заведомо выигрышные !
Ну вы что - таблицу выигрышей никогда в руках не держали, что-ли ?
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
19.08.2009, 18:37 18
Цитата Сообщение от odip Посмотреть сообщение
Ну вы что - таблицу выигрышей никогда в руках не держали, что-ли ?
Если честно, то никогда не видел, поэтому такие и вопросы
0
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
19.08.2009, 19:50 19
M128K145, согласен на сто персентов
0
0 / 0 / 0
Регистрация: 17.08.2009
Сообщений: 6
20.08.2009, 08:15  [ТС] 20
Цитата Сообщение от M128K145 Посмотреть сообщение
мое понимание №2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int main()
{
    setlocale(LC_ALL,"Rus");
    char s[1000];
    std::cin.getline(s,1000);
    int i(0), j(0);
    int mas[256];
    for(i = 0; i < 256; ++i)
        mas[i] = 1;
    while(s[j])
    {
        if((int)s[j] == (int)s[j+1])
            mas[(int)s[j]]++;
        j++;
    }
    for(i = 0; i < 256; ++i)
        if(mas[i]>1)
            std::cout<<(char)i<<' '<<mas[i]<<'\n';
    system("pause");
    return 0;
}


Добавлено через 44 минуты 22 секунды
№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
#include <string>
int main()
{
    setlocale(LC_ALL,"Rus");
    std::string str;
    std::cout<<"Введите строку:\n";
    getline(std::cin, str, '\n');
    size_t pos1(0), pos2(0);
    pos1 = str.find(' ');
    pos2 = str.rfind(' ');
    if(pos1 == -1)
    {
        std::cout<<"В строке только одно слово";
        goto end;
    }
    else
    {
        std::cout<<"Результат:\n";
        std::string buf1;
        buf1 = str.substr(pos2 + 1, str.length() - pos2);
        str.replace(pos2 + 1, str.length() - pos2, str.substr(0, pos1));
        str.replace(0, pos1, buf1);
        std::cout<<str;
    }
 end:
    std::cout<<std::endl;
    system("pause");
    return 0;
}

Не по теме:

я не выбираю легкие задания,
я просто давно не писал на С++,
я просто разминаюсь :D



Добавлено через 8 минут 8 секунд
№7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main()
{
    setlocale(LC_ALL,"Rus");
    int matr[5][6], i, j;
    std::cout<<"Введите первую строку матрицы:\n";
    for(i = 0; i < 6; ++i)
        std::cin>>matr[0][i];
    for(i = 1; i < 5; ++i)
        for(j = 0; j < 6; ++j)
            matr[i][j] = matr[i - 1][j] * 2;
    std::cout<<"\nРезультат:\n";
    for(i = 0; i < 5; ++i, std::cout<<std::endl)
        for(j = 0; j < 6; ++j)
            std::cout<<matr[i][j]<<'\t';
    system("pause");
    return 0;
}


Добавлено через 21 минуту 40 секунд
№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
struct People
{
    char fam[20];
    bool pol;;
    int rost;
};
std::istream& operator>>(std::istream& in, People &ppl)
{
    std::cout<<"Фамилия\n> ", in>>ppl.fam;
    std::cout<<"Пол(1 - м, 0 - ж)\n> ", in>>ppl.pol;
    std::cout<<"Рост(см)\n1> ", in>>ppl.rost;
    return in;
}
std::ostream& operator<<(std::ostream& out, People &ppl)
{
    std::cout<<"Фамилия:\n> ", out<<ppl.fam;
    std::cout<<"Пол(1 - м, 0 - ж):\n> ", out<<ppl.pol;
    std::cout<<"Рост(см):\n1> ", out<<ppl.rost;
    return out;
}
int main()
{
    setlocale(LC_ALL,"Rus");
    const int n = 2;
    People pointer[n];
    int i;
    for(i = 0; i < n; ++i)
        std::cout<<"\nЧеловек № "<<i+1<<':'<<std::endl,
        std::cin>>pointer[i];
    std::cout<<"\nРезультат:\n";
    float srRost(0);
    int count(0), max(0), index(0);
    for(i = 0; i < n; ++i)
        if(pointer[i].pol)
        {
            if(pointer[i].rost > max)
            {
                max = pointer[i].rost;
                index = i;
            }
        }
        else
        {
            count++;
            srRost += pointer[i].rost;
        }
    if(!max)
        std::cout<<"В массиве нет мужчин";
    else
        std::cout<<"Фамилия самого высокого мужчины:\n"<<pointer[index].fam;
    std::cout<<"\n\n";
    if(count)
        std::cout<<"Средний рост женщин из массива:\n"<<srRost/count<<" см";
    else
        std::cout<<"В массиве нет женщин";
    std::cout<<'\n';
    system("pause");
    return 0;
}
Здесь тоже ошибки std не является классом или другим чем нибудь библиотеки должны быть прикреплены. Вот это что за символы }
std::ostream& operator<<(std::ostream& out, People &ppl)
0
20.08.2009, 08:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.08.2009, 08:15
Помогаю со студенческими работами здесь

Приветствую, не могу разобраться с кодом программы и не могу сделать .obj файл
.model tiny; нужно будет получить исполняемый файл формата СОМ .code org 100h start: mov ax,...

Не могу написать комментарии для функции поиска, не могу разобраться...
void __fastcall TForm1::FindDialog1Find(TObject *Sender) { int found, start, end; //...

Не могу найти ошибку!! не могу не как разобраться! надо до завтра.
условие: Для 7 человек, среди которых есть мужчины и женщины, хранятся следующие данные: имя, пол...

Не могу отсоединить процессор от радиатора,так как на нём имеется термопаста
Вот на днях решил почистить пк и в первые за всё время решил почистить радиатор от пыли,решил снять...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru