Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
Rustam
15 / 27 / 3
Регистрация: 05.09.2009
Сообщений: 476
#1

Пять задач, включая задачу как обезвредить бомбу - C++

05.09.2009, 19:30. Просмотров 2032. Ответов 24
Метки нет (Все метки)

Задача N1

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


Задача N2

Человек вводит 10 чисел, замените 3 максимальным а 7 минимальным.
пример входных данных:
10,20,30,40,50,60,55,45,35,25;
пример выходных данных:
10,20,60,40,50,60,10,45,35,25;


Задача N3

"Осадки"
Вам даётсья задача зделать программу, которая работает с двумя текстовыми файламы (osadki.dat и osadki.rez) и делает при этом несколько вычислений. В 1. файл записаваетсья несколько строк. Первая строка содержит количество дней N, после которой следует количество строк (N). Начиная со второй строки в каждой записано два числа (отделены между собой пробелои) - температура воздуха и количество (в мм) осадков в день. Принимая во внимание, что
1) N <= 1000000
2) количество осадков не меньше 0 и не боль ше 100 мм
3) температура воздуха была между -50 и 50 градусами
4) если Температура меньше нуля падал снег,а во стольных случайах лил дождь
в файле osadki.rez надо вывести два числа отделённых между собой побелами - общая количество снега за все дни и общее количество дождя.
Пример
osadki.dat
3
-1 30
0 3
20 15

osadki.rez
30 18


Задача N4

Ученые астрономы, сообщили правительство, что ровно через T секунд на
планете Олимпиада начнется метеоритный дождь. Правительство планеты срочно
начало эвакуацию людей и
важного оборудования - телескопических установок.
Для защиты телескопу его нужно транспортировать в специально отведенное
место - хранилище. В одном хранилище может вместиться лишь один телескоп.
Необходимо рассчитать максимальное количество телескопов которые можно
успеть спрятать к началу метеоритного дождя.

Входные данные (файл METEOR.DAT):
В первой строке число T - количество секунд через которую метеориты
упадут на планету.
Во второй строке число N - количество телескопов.
В третьей строке находится 2*N чисел - координаты телескопов (x, в)
В четвертой строке число M - количество хранилищ.
В пятой строке находится 2*M чисел - координаты хранилищ (x, в)
В шестой строке число V - скорость транспортировки телескопов.

Примечание:
0<T<1000000 ; 0<N,M<100 ; -30000 <= x,y <=30000 ; 0<V<1000
T, N, M, x, в - цели.

Выходные даны: (файл METEOR.SOL):
В единственную строку файла записать максимальное количество телескопов,
которые могут быть спрятанные к началу падения метеоритов.
Пример METEOR.DAT:
10
4
1 7 3 7 5 7 100 100
2
2 7 4 7
0.1

Пример METEOR.SOL:
2


Задача N5

Взрывное устройство, которое было заложено неизвестным террористом, имеет N - лампочек, и M - переключателей.
Каждый переключатель изменяет состояние некоторых лампочек на противоположный. Для обезвреживания бомбы, необходимо выключить все лампочки.
Напишите программу, которая спасет мир.

Входные данные: (файл BOMBA.DAT):
В первой строке число N. (0<N<=100)
Во второй строке содержится N чисел, которые помечают состояние каждой лампочки (0 - выключенная, 1 - включенная).
В третьей строке содержится число M. (0<M<=100)
В каждом из следующих M строк содержится число K (количество лампочек состояние которых изменяет данный переключатель) и K чисел - номера соответствующих лампочек.
Выходные даны: (файл BOMBA.SOL):
Если бомбу обезвредить невозможно, запишите в исходный файл "NO" (без кавычек).
Если возможно спасти мир, то в первую строку запишите "YES" (без кавычек), а во вторую строку запишите номера переключателей которые необходимо задействовать.
Пример BOMBA.DAT:
5
0 1 1 0 1
4
3 2 3 4
3 1 4 5
2 4 5
2 2 4


P.S. Заранее большое спасибо, надеюсь, кто знает поможет мне!!!!!!!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2009, 19:30
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Пять задач, включая задачу как обезвредить бомбу (C++):

Ввести пять строк и из каждой строки вывести пять последних символа
Ввести пять строк и из каждой строки вывести пять последних символа. P.S сори...

Отсортировать первые пять элементов массива по возрастанию, последние пять по убыванию
Введем 11 чисел, число по середине должна остаться, а первые пять по...

Переписать компоненты чтобы они располагались в порядке: пять отрицательных, пять положительных
Дан текстовый файл, компонентами которого являются целые числа, не равные нулю....

Пятью пять - двадцать пять
Привет родные форумчане! Пожалуйста помогите решить буду особенно благодарен...

Как заставить семерку отображать в диспетчере задач все 6 ядер,а не пять?
Здравствуйте. Имеются матплата M4A87TD/USB 3.0 и процессор amd phenom 2 x 6...

Как программно на VB добавить задачу в планировщик задач ?
как программно на VB добавить задачу в планировщик задач ?

24
ISergey
Maniac
Эксперт С++
1407 / 918 / 148
Регистрация: 02.01.2009
Сообщений: 2,744
Записей в блоге: 1
05.09.2009, 19:49 #2
Задача N1

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <algorithm>
#include <iterator>
#include <sstream>
#include <string>
 
int main()
{
    std::string line;
    std::getline(std::cin, line);
    std::stringstream ss(line);
    std::copy(
        std::istream_iterator<std::string>(ss),
        std::istream_iterator<std::string>(),
        std::ostream_iterator<std::string>(std::cout, "\n"));
 
    return 0;
}
1
Rustam
15 / 27 / 3
Регистрация: 05.09.2009
Сообщений: 476
05.09.2009, 19:52  [ТС] #3
Большое спасибо ISergey за помощь!!!!!
0
valeriikozlov
Эксперт С++
4683 / 2509 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
05.09.2009, 22:02 #4
Задача N3

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
#include <iostream.h>
#include <fstream.h>
 
int n;
int sum_sneg=0;
int sum_voda=0;
int i, temp;
int main()
{
    ifstream input("osadki.dat");
    input>>n;
    for(i=0; i<n; i++)
    {
        input>>temp;
        if(temp<0)
        {
            input>>temp;
            sum_sneg+=temp;
        }
        else
        {
            input>>temp;
            sum_voda+=temp;
        }
    }
    ofstream output("osadki.rez", ios::app);
    output<<sum_sneg<<"    "<<sum_voda<<endl;
 
return 0;
}
1
M128K145
Эксперт JavaЭксперт С++
8320 / 3540 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
05.09.2009, 22:40 #5
№2
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
#include <iostream>
 
int main()
{
    setlocale(LC_ALL, "Rus");
    int mas[10], i;
    std::cout<<"Введите 10 целых чисел:\n";
    for(i = 0; i < 10; ++i)
        std::cin>>mas[i];
    int max(mas[0]);
    int min(mas[0]);
    for(i = 1; i < 10; ++i)
    {
        max = (mas[i] > max) ? mas[i] : max;
        min = (mas[i] < min) ? mas[i] : min;
    }
    std::cout<<"\nМаксимальное число: "<<max<<"\nМинимальное число: "<<min<<std::endl;
    mas[2] = max;
    mas[6] = min;
    std::cout<<"\nРезультирующий массив:\n";
    for(i = 0; i < 10; ++i)
        std::cout<<mas[i]<<' ';
    std::cout<<std::endl;
    system("pause");
    return 0;
}
1
Mozart
39 / 17 / 1
Регистрация: 21.08.2009
Сообщений: 63
06.09.2009, 13:08 #6
Задача N5

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
#include <iostream.h>
#include <fstream.h>
 
int N,M;
bool Lamp[100];
bool Swith[100];
int Swithes[100][101];
int i,j;
 
bool Boom(int N){
     for(int i=0;i<N;i++) if(Lamp[i]) return 1;
     return 0;
}
 
bool Inc_sw(int M){
     for (int i=0;i<M;i++) 
         if (Swith[i]) Swith[i]=0;
         else {
              Swith[i]=1;
              return 0;
         } 
     return 1;
}
bool sw(int M){
     for (int i=0;i<M;i++) 
         if (Swith[i])
         for (int j=1;j<=Swithes[i][0];j++)
             if (Lamp[Swithes[i][j]-1]) Lamp[Swithes[i][j]-1]=0;
             else Lamp[Swithes[i][j]-1]=1;
     return 0;
}
int main(){
    for (i=0;i<100;i++) Lamp[i]=Swith[i]=0;
    for (i=0;i<100;i++) 
    for (j=0;j<101;j++) Swithes[i][j]=0;
 
    ifstream input("bomba.dat");
    input>>N;
    for (i=0; i<N; i++) input>>Lamp[i];
    input>>M;
    for (i=0; i<M; i++) {
        input>>Swithes[i][0];
        for (j=1;j<=Swithes[i][0];j++)input>>Swithes[i][j];
    }
    while (Boom(N)){
          sw(M);
          if (Inc_sw(M)) break;
          sw(M);    
    }
    ofstream output("bomba.sol", ios::app);
    if (Boom(N)) {
       output<<"NO"<<endl;
       return 0;
    } else {
           output<<"YES"<<endl;
           for (i=1;i<=M;i++) if (Swith[i-1])output<<i<<" ";
           output<<endl;
           return 0;
    } 
return 0;
}
1
Rustam
15 / 27 / 3
Регистрация: 05.09.2009
Сообщений: 476
06.09.2009, 14:18  [ТС] #7
Искренне благодарю всем за оказанную помощь!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Добавлено через 56 минут
Я скачал и установил компилятор Microsoft Visual Studio C++ 2008 Express Edition!!! (Вот ссылка с которой скачал http://www.microsoft.com/rus/express/). Я с ним где-то 1 месяц работал, сейчас не работает!!! Может ему какой-то ключ нужен????? Уже не могу, писать программы 2 месяца!!!!!!!!!!! Может есть и другие компиляторы которым не нужен ключ???(лучше если язык компилятора русский)!!!!!!!!!! Очень нужно, помогите пожалуйста!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
0
Mozart
39 / 17 / 1
Регистрация: 21.08.2009
Сообщений: 63
06.09.2009, 14:43 #8
скачай Dev-C++ на него не надо ни ключей ничего, фриварный, да в нем нет справки нормальной.
Если хочешь учить С++ для начала его хватит (если учишся по книге). А если вставлять готовые коды и компилировать - то и подавно.
А вобще есть фриварный Turbo C++ Explorer, я на нем все свои лабы делал.
1
Rustam
15 / 27 / 3
Регистрация: 05.09.2009
Сообщений: 476
06.09.2009, 16:48  [ТС] #9
Написал код на Dev C++, компилировал, ошибок и предупреждений не было, нажал на debug (отладка) очень быстро вышел консольное черное окно и исчезло, я не успел даже посмотреть, как нормально смотреть возможно это?????
0
RazorQ
582 / 349 / 15
Регистрация: 06.02.2009
Сообщений: 1,386
06.09.2009, 16:59 #10
Rustam, в конце каждой программы, перед return 0; добавь system("pause");
1
odip
Эксперт С++
7161 / 3219 / 76
Регистрация: 17.06.2009
Сообщений: 14,161
06.09.2009, 19:12 #11
Задачу 4 про метеоритный дождь и телескопы никто не решил.
0
Mozart
39 / 17 / 1
Регистрация: 21.08.2009
Сообщений: 63
06.09.2009, 19:24 #12
odip, У тебя есть прекрасная возможность =))
0
odip
Эксперт С++
7161 / 3219 / 76
Регистрация: 17.06.2009
Сообщений: 14,161
06.09.2009, 19:29 #13
Ну как обычно - самую сложную задачу оставили мне
0
Rustam
15 / 27 / 3
Регистрация: 05.09.2009
Сообщений: 476
06.09.2009, 19:43  [ТС] #14
Столкнулся с библиотекой <conio.h> и getch(). Они между собой связаны или нет?????

Добавлено через 1 минуту
odip буду благодарен если сможете решать!!!!
0
ISergey
Maniac
Эксперт С++
1407 / 918 / 148
Регистрация: 02.01.2009
Сообщений: 2,744
Записей в блоге: 1
06.09.2009, 19:47 #15
Цитата Сообщение от Rustam Посмотреть сообщение
Столкнулся с библиотекой <conio.h> и getch(). Они между собой связаны или нет?????
функция getch() объявлена в conio.h.. но в С++ использовать их не нужно.
1
Rustam
15 / 27 / 3
Регистрация: 05.09.2009
Сообщений: 476
06.09.2009, 20:18  [ТС] #16
У меня есть задача, много думал но не смог сделать!!! Может кто-то сможет??? Заполнить квадратную матрицу последовательными целыми числами от 1 до N, расположенными по спирали, начиная с левого верхнего угла и продвигаясь по часовой стрелке, например:
Код
      1    2    3    4    5    6 
      20   21   22   23   24   7 
      19   32   33   34   25   8 
      18   31   36   35   26   9 
      17   30   29   28   27   10 
      16   15   14   13   12   11
Добавлено через 1 минуту
Простите ISergey я случайно два раза отправил!!! Извините уж!!! Я не хотел!!!
0
ISergey
Maniac
Эксперт С++
1407 / 918 / 148
Регистрация: 02.01.2009
Сообщений: 2,744
Записей в блоге: 1
06.09.2009, 20:19 #17
Цитата Сообщение от Rustam Посмотреть сообщение
У меня есть задача, много думал но не смог сделать!!!!! Может кто-то сможет????? Заполнить квадратную матрицу последовательными целыми числами от 1 до N, расположенными по спирали, начиная с левого верхнего угла и продвигаясь по часовой стрелке, например:
http://www.cyberforum.ru/visual-cpp/thread3621.html
1
Mozart
39 / 17 / 1
Регистрация: 21.08.2009
Сообщений: 63
07.09.2009, 16:09 #18
4-я задачка с загогулиной, сразу в лоб не возьмешь, точнее возьмешь - но будут моменты когда ответы получатся не правильные, т.е. не довезет один или несколько телескопов
0
odip
Эксперт С++
7161 / 3219 / 76
Регистрация: 17.06.2009
Сообщений: 14,161
07.09.2009, 17:02 #19
Ответ неправильный - значит неправильно решил

Основная пляска идет вокрут массива tel2stor[]
Значение -1 в этом массиве означает, что телескоп никуда не едет.
Значение от 0 до nstor-1 обозначает, что телескоп едет к хранилищу с этим номером.
Ну и разумеется два телескопа не могу ехать к одному хранилищу.
Для этого используется массив stor_used[].

Задача 4

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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
 
/************************************************/
#define MAX_TEL     100
#define MAX_STOR    100
 
 
/************************************************/
typedef struct {
    double x, y;
} coord_t;
 
 
/************************************************/
char in_name[]= "METEOR.DAT";
char out_name[]= "METEOR.SOL";
 
 
/************************************************/
int calc_moving( double tmet, int ntel, coord_t *ptel,
    int nstor, coord_t *pstor, double vspeed
);
 
 
/************************************************/
int main( void ) {
 
int i, j;
int ntel, nstor, nstor_tel;
double tmet, vspeed;
FILE *fin= NULL, *fout= NULL;
coord_t tel[MAX_TEL];
coord_t stor[MAX_STOR];
 
 
fin= fopen( in_name, "rt" );
if ( fin == NULL ) {
    fprintf( stderr, "Error opening file %s\n", in_name );
    exit( 1 );
}
fscanf( fin, "%lf", &tmet );
 
fscanf( fin, "%d", &ntel );
if ( ntel<0 || ntel>MAX_TEL ) {
    fprintf( stderr, "Invalid ntel=%d\n", ntel );
    exit( 1 );
}
for ( i= 0; i<ntel; i++ ) {
    fscanf( fin, "%lf %lf", &tel[i].x, &tel[i].y );
}
 
fscanf( fin, "%d", &nstor );
if ( nstor<0 || nstor>MAX_STOR ) {
    fprintf( stderr, "Invalid nstor=%d\n", nstor );
    exit( 1 );
}
for ( j= 0; j<nstor; j++ ) {
    fscanf( fin, "%lf %lf", &stor[j].x, &stor[j].y );
}
fscanf( fin, "%lf", &vspeed );
fclose( fin );
fin= NULL;
 
nstor_tel= calc_moving( tmet, ntel, tel, nstor, stor, vspeed );
 
fout= fopen( out_name, "wt" );
if ( fout == NULL ) {
    fprintf( stderr, "Error creating file %s\n", out_name );
    exit( 1 );
}
fprintf( fout, "%d\n", nstor_tel );
fclose( fout );
fout= NULL;
 
return 0;
 
} /* main() */
 
 
/************************************************/
int calc_moving( double tmet, int ntel, coord_t *ptel,
    int nstor, coord_t *pstor, double vspeed
) {
 
int i, j;
int itel;
double dx, dy;
int max_mov_tel, count_tel;
double max_mov_dist;
 
double dist_tel_stor[MAX_TEL][MAX_STOR];
int tel2stor[MAX_TEL];
int stor_used[MAX_STOR];
 
 
/* Check */
if ( tmet<0.0 || ntel<0 || nstor<0 || vspeed<0.0 ) {
    fprintf( stderr, "calc_moving(): Invalid arguments\n" );
    exit( 2 );
}
 
/* Calc max moving distance */
max_mov_dist= tmet*vspeed;
 
/* Calc distance */
for ( i= 0; i<ntel; i++ ) {
    for ( j= 0; j<nstor; j++ ) {
        dx= ptel[i].x-pstor[j].x; dy= ptel[i].y-pstor[j].y;
        dist_tel_stor[i][j]= sqrt( dx*dx+dy*dy );
    }
}
 
/* Init */
max_mov_tel= 0;
for ( j= 0; j<nstor; j++ ) { stor_used[j]= 0; }
itel= -1;
 
/* Next itel */
label_next_itel:
itel++;
if ( itel>=ntel ) { goto label_back; }
tel2stor[itel]= -1;
 
/* Check */
label_check:
if ( tel2stor[itel]>=0 ) {
    if ( stor_used[ tel2stor[itel] ] ) { goto label_next_stor; }
    stor_used[ tel2stor[itel] ]= 1;
}
 
/* Count telescope */
count_tel= 0;
for ( i= 0; i<=itel; i++ ) {
    if ( tel2stor[i]<0 ) { continue; }
    if ( dist_tel_stor[i][tel2stor[i]]<=max_mov_dist ) { count_tel++; }
}
if ( count_tel>max_mov_tel ) { max_mov_tel= count_tel; }
goto label_next_itel;
 
/* Free */
label_free:
if ( tel2stor[itel]>=0 ) {
    stor_used[ tel2stor[itel] ]= 0;
}
 
/* Next stor */
label_next_stor:
tel2stor[itel]++;
if ( tel2stor[itel]<nstor ) { goto label_check; }
 
/* Back */
label_back:
itel--;
if ( itel>=0 ) { goto label_free; }
 
/* Return */
return max_mov_tel;
 
} /* calc_moving() */
0
Mozart
39 / 17 / 1
Регистрация: 21.08.2009
Сообщений: 63
07.09.2009, 17:44 #20
Угу, а каким образом решалась ситуация когда несколько телескопов претендуют на одно хранилище, при этом у некоторых из них есть доступ к другим (как определяется выбор что бы не заблокировать другие телескопы, при этом спрятать как можно больше)?
0
07.09.2009, 17:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.09.2009, 17:44
Привет! Вот еще темы с решениями:

Как сделать простую бомбу ?
Как сделать простую бомбу в Delphi7?

Поверх всех окон. включая диспетчера задач
Подскажите как на C# сделать так ,что бы форма была поверх всех окон, включая...

пять задач по теории вероятности
1)из последовательности {200, 201, ... , 299, 300} случайно выбирается одно...

Как найти и обезвредить рекламную программу?
Где в недрах компьютера сидит програмка ,которая сама открывает...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru