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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
botasa
3 / 3 / 0
Регистрация: 18.01.2011
Сообщений: 131
#1

3адача на массивы ( не вышло ) - C++

09.07.2011, 20:01. Просмотров 341. Ответов 4
Метки нет (Все метки)

задача для тренировки из книги, делал, делал но блин как меня бесят эти массивы но все равно хочу знать как они работают. вот задача
3адача на массивы ( не вышло )
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
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
// xz.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"");
    const int size = 10;
    int mas[ size ] = { 0 };
    int place;
 
    cout << "Вветиде, пожалуйта, 1 для \"курящих\"\n";
    cout << "Вветиде, пожалуйта, 2 для \"некурящих\"\n";
    cin >> place;
    
    for ( int range = 0; range < 10; range++ )
    {
    if ( place == 1 || place == 2 )
    {
        switch( place )
        {
        case 1 :
            for ( int i = 0; i < 5; i++ )
            {
                mas[ i ] = 1;
                if ( mas[ i ] == 1 )
                {
                    cout << "Не хотите место в салоне для курящих ? \n";
                    cout << "Введите 1 если да, 2 если нет\n";
                    cin >> place;
                    for ( int q = 0; q < 5; q++ )
                        if ( mas[ q ] == 0 )
                            mas[ q ] = 1;
                }
            }
            break;
        case 2 :
            for ( int j = 6; j < 10; j++ )
                mas[ j ] = 1;
            break;
        default :
            break;
        }
    }
    else 
        cout << "вы ошыблись !\n";
    }
    //for ( int a = 0; a < size; a++ )
        //if ( mas[ a ] == 1 )
 
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2011, 20:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос 3адача на массивы ( не вышло ) (C++):

Сколько автобусов вышло на линию? - C++
Кому не сложно напишите пожалуйста программу на языке С++ по заданию : В автопарке находилось N автобусов, причем неисправных было в K раз...

Разложение числа на k простые и его степени чтобы при перемножений вышло число n - C++
Даются 2 числа n и k Разложить n на k чисел так чтобы 1) их перемножение равнялось n 2) число под корнем было простое или само...

3адача на c++ - Visual C++
Очень интересно как следующие задачи решаются на с++ и решаются ли вообще на этом языке. Если кто-то может решите плиз. ЗАДАЧА №1...

3адача на VB - Visual Basic
Готовлюсь к олимпиаде по информатике. Учусь в 9 классе (школа средняя общеобразовательная). Держу перед собой прошлогоднюю. Глаза лезут на...

3адача с оператором IF. - Pascal
Решите, пожалуйста, эту задачу. Дан номер года (положительное целое число). Определить количество дней в этом году, учитывая, что обычный...

3адача с оператором FOR - Pascal
Решите, пожалуйста, эту задачу. Дано целое число N (&gt; 0). Найти произведение 1.1 · 1.2 · 1.3 · … (N сомножителей).

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
botasa
3 / 3 / 0
Регистрация: 18.01.2011
Сообщений: 131
09.07.2011, 20:06  [ТС] #2
тупо не знаю как сделать проверку массива заполнен он или нет, найти что-то в массиве могу а проверить или выделить я не знаю .. подскажите как это сделать ( только без MFC, STL и прочих библиотек ... )
Paporotnik
383 / 227 / 7
Регистрация: 06.07.2011
Сообщений: 512
09.07.2011, 20:23 #3
лучше если ты напишешь функцию проверки наличия и выделения мест пассажирам. тогда код станет гораздо понятнее и проще.

проверка наличия мест у тебя в условии написана - если в диапазоне 1-5 (для не курящих) или 6-10 (для курящих) есть нулевой элемент, значит это место свободно.

и еще:
C++
1
2
3
4
5
mas[ i ] = 1;
                                if ( mas[ i ] == 1 )
                                {
                                        ............
                                }
явно ошибка. ты указываешь, что место занято, и тут же предлагаешь место в салоне для курящих. ты сначала должен проверить свободно ли место i. если оно не свободно, то продолжить обход мест в салоне, и только если ни одного места не нашлось - предложить место в другом салоне, где все так же повторить.
botasa
3 / 3 / 0
Регистрация: 18.01.2011
Сообщений: 131
09.07.2011, 20:30  [ТС] #4
Цитата Сообщение от Paporotnik Посмотреть сообщение
лучше если ты напишешь функцию проверки наличия и выделения мест пассажирам. тогда код станет гораздо понятнее и проще.

проверка наличия мест у тебя в условии написана - если в диапазоне 1-5 (для не курящих) или 6-10 (для курящих) есть нулевой элемент, значит это место свободно.

и еще:
C++
1
2
3
4
5
mas[ i ] = 1;
                                if ( mas[ i ] == 1 )
                                {
                                        ............
                                }
явно ошибка. ты указываешь, что место занято, а потом тут же начинаешь проверять свободно ли оно.
я должен это
C++
1
2
3
4
if ( mas[ i ] == 1 )
                                {
                                        ............
                                }
заменить на ?
C++
1
2
3
4
if ( mas[ i ] != 0 )
                                {
                                        ............
                                }
вы можете мне накидать пару набросков чтоб нормально разобраться, а то я с массивами ну ппс как не дружу и это плохо
Paporotnik
383 / 227 / 7
Регистрация: 06.07.2011
Сообщений: 512
09.07.2011, 21:17 #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
#include <iostream>
using namespace std;
 
enum ticket_state {SMOKE,NOSMOKE,QUEST,NOPLACE};
int invite();
int is_free_in_nosmoke(int*);
int is_free_in_smoke(int*);
int print_info(int,ticket_state);
 
int main(){
    int plane[10]={0,0,0,0,0, 0,0,0,0,0};
    int option,place;
    while (option=invite()) {
        switch (option) {
        case 1: if (place=is_free_in_smoke(plane)) {
                   print_info(place,SMOKE);
                   break;}
                if (!(print_info(0,QUEST))) {
                   print_info(0,NOPLACE);
                   break;
                }
        case 2: if (place=is_free_in_nosmoke(plane)) print_info(place,NOSMOKE);
                else print_info(0,NOPLACE);
        case -1: break;
        }
    }
 
}
 
//приглашение для нового пассажира. возвращает цифру, если ввод правильный, иначе -1.
int invite () {
    int option;
    cout<<"vvedite 1 dlya kuryashih"<<endl<<"vvedite 2 dlya nekuryashih"<<endl<<"vvedite 0 dlya vihoda"<<endl;
    cin>>option;
    if (option>=0 && option<=2) return option;
    cout<<"neverniy vvod"<<endl;
    return -1;
}
 
//если есть место у курящих, возвращаем его номер. иначе 0.
int is_free_in_smoke(int plane[10]) {
    for (int i = 0; i < 5; i++)
        if (!plane[i]) {
            plane[i]=1;
            return i+1;
        }
    return 0;
}
 
//если есть место у некурящих, возвращаем его номер. иначе 0.
int is_free_in_nosmoke(int plane[10]) {
    for (int i = 5; i < 10; i++)
        if (!plane[i]) {
            plane[i]=1;
            return i+1;
        }
    return 0;
}
 
//в зависимости от аргумента st выводит нужную инфу о билете, либо отсутствии мест,
//либо предложение сменить салон
int print_info(int place,ticket_state st) {
    int option;
    switch (st) {
       case SMOKE: cout<<"mesto "<<place<<" v salone dlya kuryashih"<<endl;
              break;
       case NOSMOKE: cout<<"mesto "<<place<<" v salone dlya nekuryashih"<<endl;
                break;
       case QUEST: cout<<"jelaete mesto v salone dlya nekuryashih? 1-da, 2-net"<<endl;
              cin>>option;
              switch (option) {
                 case 1: return 1;
                 case 2: return 0;
                 default: return 0;
              }
       case NOPLACE: cout<<"sleduyushiy polet cherez 3 chasa"<<endl;
                break;
    }
}
работает в точности с условием задачи. т.е. если занят салон для некурящих, то НЕ будет предложен салон для курящих. что надо изменить, чтоб это условие работало, думаю, сам поймешь
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2011, 21:17
Привет! Вот еще темы с ответами:

3адача на рекурсию - Lisp
Написать функцию, которая указанный элемент заменяет на новый. допустим есть список ( 1 2 3 4 5 ) я ввожу номер элемента, который...

3адача Procedure - Pascal
Решите, пожалуйста, эту задачу. Описать процедуру RectPS(x1, y1, x2, y2, P, S), вычисляющую периметр P и площадь S прямоугольника со...

Интересная 3адача - Oracle
Есть таблица в которую льются записи записи &quot;добавляются&quot; &quot;изменяются&quot; &quot;удаляются&quot; пользователем. Необходимо реализовать механизм который...

3адача с оператором WHILE - Pascal
Решите, пожалуйста, эту задачу. Дано целое число N (&gt; 0). Используя операции деления нацело и взятия остатка от деления, вывести все его...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.07.2011, 21:17
Ответ Создать тему
Опции темы

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