С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для //Александр
6 / 6 / 2
Регистрация: 15.04.2010
Сообщений: 151

зацыклевается

06.10.2010, 20:55. Показов 760. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер!! нужна помощь, написал функцию поиска poisk, в main() сделал цыкл while он и зацыклевается. poisk работает правильно и в цыкле выводятся значения но почему зацыклевается не пойму....
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
#include <iostream>
#include <clocale>
#include <conio.h>
#include <string.h>
using namespace std;
struct AEROFLOT
{
    char name[10];
    int number;
    char type[10];
};
 
AEROFLOT sort_name ( AEROFLOT *aeroflot)
{   char temp_type[10];
    char temp_name[10];
    int temp_number;
    int j,i,g;
     
 
    j=7;
 
    for( g=0;g<j;g++)
    {
        for(i=j-1;i>g;i--)
        {
          if(aeroflot[i-1].name[0]>aeroflot[i].name[0])
          
        
               {                
       strcpy(temp_name,aeroflot[i-1].name);    
        strcpy(temp_type,aeroflot[i-1].type);
         temp_number=aeroflot[i-1].number;
 
       strcpy(aeroflot[i-1].name,aeroflot[i].name);
        strcpy(aeroflot[i-1].type,aeroflot[i].type);
         aeroflot[i-1].number=aeroflot[i].number;
 
       strcpy(aeroflot[i].name,temp_name);
        strcpy(aeroflot[i].type,temp_type);
         aeroflot[i].number=temp_number;
 
                  }
    
          }
    }
    return *aeroflot;   
}
 
int poisk(AEROFLOT *aeroflot,char* n,int i)
{ int k; k=0;
        for (i = i; i < 7; i++)
            if(!strcmp(aeroflot[i].type, n))
        {
            k++;
   return i;
        }
    if (k==0)  return -1;
}
 
 
AEROFLOT aeroflot[7];
int count = 0;
AEROFLOT add(AEROFLOT f)
{
 
        if (aeroflot[count].name[0]=='\0')
 
{ strcpy(aeroflot[count].name,f.name);
aeroflot[count].number=f.number;
strcpy(aeroflot[count].type,f.type);
}
return aeroflot[count];
}
 
int main()    
    
{ 
    setlocale(LC_ALL, "rus");
    AEROFLOT  f;
    int i,j;
    char n[10];
    
    //-----------------ввод-------------------------
        for (i=0;i<7;i++)
        {
        cout << "введите название пункта назначения \n";
        cin  >> f.name;
        cout << "введите номер рейса \n";
        cin  >> f.number;                                                
        cout << "введите тип самолета \n";
        cin  >> f.type;
            add(f);
            count++;
         }
    //----------------------------------------------
  cout << "введите тип нужного Вам самолета\n";
  cin  >> n;
    //---------------------------------------------
sort_name (aeroflot);//сортируем
    //---------------------------------------------
    int m=0;
    i=0;j=0;
    while ((j!=6)||(j!=-1))
    {
        j=poisk(aeroflot,n,i);
     
        cout << "название пункта назначения - " << aeroflot[j].name << endl;
        cout << "номер рейса - " << aeroflot[j].number << endl;
        i=j+1;
    
        m++;
    }
    if (m==0)
        cout << "самолетов такого типа нет(";
    
    getch();
    }
Миниатюры
зацыклевается  
0
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
06.10.2010, 21:13
while ((j!=6)||(j!=-1))
//---------------------

Разве из такого цикла можно выйти,
логика не правильная выход возможен
только если j==6 && j==-1
Вообщем непонята какая то.
0
 Аватар для //Александр
6 / 6 / 2
Регистрация: 15.04.2010
Сообщений: 151
06.10.2010, 21:18  [ТС]
я думаю можно
C++
1
2
3
4
5
6
7
8
9
10
int poisk(AEROFLOT *aeroflot,char* n,int i)
{ int k; k=0;
        for (i = i; i < 7; i++)
            if(!strcmp(aeroflot[i].type, n))
                {
                        k++;
   return i;
                }
        if (k==0)  return -1;// если не найдет нужный элемент вернет -1, условие выхода из цыкла
} и еще одно условие если массив закончидся
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
06.10.2010, 21:40
//Александр, в четвёртой строке переменной i присваеваетсо значение той же переменной i - ето как ?
0
 Аватар для TheMachinist
246 / 178 / 47
Регистрация: 14.06.2010
Сообщений: 422
06.10.2010, 23:07
Александр, а что это собственно за параметр???????
C++
1
sort_name (aeroflot);//сортируем
0
 Аватар для //Александр
6 / 6 / 2
Регистрация: 15.04.2010
Сообщений: 151
07.10.2010, 04:45  [ТС]
NikolaWhite, вызов функции сортировки

Добавлено через 4 минуты
Asics^, да я согласен сдесь я перемудрил...

Добавлено через 1 минуту
сделал немного по другому, если кому интересно вот код:
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
#include <iostream>
#include <clocale>
#include <conio.h>
#include <string.h>
using namespace std;
struct AEROFLOT
{
    char name[10];
    int number;
    char type[10];
};
 
AEROFLOT sort_name ( AEROFLOT *aeroflot)
{   char temp_type[10];
    char temp_name[10];
    int temp_number;
    int j,i,g;
     
 
    j=7;
 
    for( g=0;g<j;g++)
    {
        for(i=j-1;i>g;i--)
        {
          if(aeroflot[i-1].name[0]>aeroflot[i].name[0])
          
        
               {                
       strcpy(temp_name,aeroflot[i-1].name);    
        strcpy(temp_type,aeroflot[i-1].type);
         temp_number=aeroflot[i-1].number;
 
       strcpy(aeroflot[i-1].name,aeroflot[i].name);
        strcpy(aeroflot[i-1].type,aeroflot[i].type);
         aeroflot[i-1].number=aeroflot[i].number;
 
       strcpy(aeroflot[i].name,temp_name);
        strcpy(aeroflot[i].type,temp_type);
         aeroflot[i].number=temp_number;
 
                  }
    
          }
    }
    return *aeroflot;   
}
 
int poisk(AEROFLOT *aeroflot,char* n,bool *a)
{ int k=0;
  int i;
        for (i = 0; i < 7; i++)
            if(!strcmp(aeroflot[i].type, n))
        {
            a[i]=true;
        }
            return *a;
}
 
 
AEROFLOT aeroflot[7];
int count = 0;
 
AEROFLOT add(AEROFLOT f)
{
 
        if (aeroflot[count].name[0]=='\0')
 
{ strcpy(aeroflot[count].name,f.name);
aeroflot[count].number=f.number;
strcpy(aeroflot[count].type,f.type);
}
return aeroflot[count];
}
 
int main()    
    
{ 
    setlocale(LC_ALL, "rus");
    AEROFLOT  f;
    int i,j;
    char n[10];
    bool a[7];
    for (i=0;i<7;i++)
    {
        a[i]=false;
    }
    //-----------------ввод-------------------------
        for (i=0;i<7;i++)
        {
        cout << "введите название пункта назначения \n";
        cin  >> f.name;
        cout << "введите номер рейса \n";
        cin  >> f.number;                                                
        cout << "введите тип самолета \n";
        cin  >> f.type;
            add(f);
            count++;
         }
    //----------------------------------------------
  cout << "введите тип нужного Вам самолета\n";
  cin  >> n;
    //---------------------------------------------
sort_name (aeroflot);//сортируем
    //---------------------------------------------
   int k=0;
poisk(aeroflot,n,a);
    for(i=0;i<7;i++)
    if(a[i]==true)
        {
        cout << "название пункта назначения - " << aeroflot[i].name << endl;
        cout << "номер рейса - " << aeroflot[i].number << endl;
        k++;
        }
    if (k==0)
        cout << "самолетов такого типа нет(";
    
    getch();
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru