Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Vactors

Обьясниете, почему программа В С++ так работает.

13.11.2011, 10:44. Показов 903. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Данная программа выводит единицы и нули в шахматном порядке,10 строк и 10 столбцов.
но если изменить значение, которые будут выводиться на экран в место едениц и нулей на др цифры, или просто поменять их местами(где стоят 1 поставить ноль, а на место нулей поствить 1),
тогда программа выводит программу , в которой 15 столбцов и 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
#include<iostream>
#include<math.h>
using namespace std;
int main(){
    int i,j;
    int mas[10][10];
    
    cout<<endl<<endl;
    
    for(i=0;i<10;i++){
                      
                      cout<<"        ";
                      
     for(j=0;j<10;j++){
                       mas[i][j]=(j+1)+i*10; 
                if (mas[i][j]%2==0){
                        mas[i][j]=0;//<-Если изменить это значение
                        cout<<" "<<mas[i][j]<<" ";  }
                        
                    if (mas[i][j]%2==1){
                        mas[i][j]=1; //<-И это значение
     
                      cout<<" "<<mas[i][j]<<" ";}
                       }
                       cout<<endl;}
         
        
         
                
 
 
system("pause>>void");
}
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.11.2011, 10:44
Ответы с готовыми решениями:

Почему не работает так как надо
#include &lt;vcl.h&gt; #pragma hdrstop #include &quot;Unit1.h&quot; //--------------------------------------------------------------------------- ...

Не работает программа. Что я делаю не так
Короче, программа нахождения суммы целых частей элементов массива, расположенных после последнего отрицательного элемента. Почему-то не...

Почему работает и так, и так: arr[i] и i[arr]?
//один и тот же результат cout&lt;&lt;arr; cout&lt;&lt;i;//почему нет ошибки да даже это, например работает и выводит одинаковый результат ...

8
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
13.11.2011, 12:43
Хорошо, что в XE есть волшебная комбинация ctrl+d, приводит код в нормальный вид, а так бы вручную пришлось форматировать его
Вот решение:
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
        const int iSize = 8;
 
    int mas[iSize][iSize];
 
    cout << endl << endl;
 
    for (int i = 0; i < iSize; i++)
    {
        cout << "        ";
 
        for (int j = 0; j < iSize; j++)
        {
            if ( (j % 2 == 0 && i % 2 == 0) ||
                (j % 2 == 1 && i % 2 == 1) )
            {
                mas[i][j] = 0;
                cout << " " << mas[i][j] << " ";
            }
            else
            {
                mas[i][j] = 1;
                cout << " " << mas[i][j] << " ";
            }
        }
        cout << endl;
    }
 
    system("pause>>void");
Цитата Сообщение от Vactors Посмотреть сообщение
Вопрос, почему так?
потому что неправильно писать так, в добавок тратит проц. время зря:
if (переменная1 == одному) then
if (переменная1 == другому) then
надо было так и не возникло бы недоразумений:
if (...) then
else if (...) then
else (...) then
1
13.11.2011, 13:56

Не по теме:

Цитата Сообщение от kzru_hunter Посмотреть сообщение
Хорошо, что в XE есть волшебная комбинация ctrl+d, приводит код в нормальный вид
есть хоть какой-то шанс заиметь такое волшебство в RAD 2009?О_о

0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
13.11.2011, 14:00
Если речь о нулях и единицах, то имхо лучше логический массив использовать. В разы быстрее работать будет, да и инвертация значений проще.
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
13.11.2011, 15:51
Цитата Сообщение от BRcr Посмотреть сообщение
есть хоть какой-то шанс заиметь такое волшебство в RAD 2009?
в XE если правой кнопкой на коде нажать, то в менюшке будет команда "Format Source".
в 2009 не знаю, не пользовался.

Цитата Сообщение от DefineTrueFalse Посмотреть сообщение
Если речь о нулях и единицах, то имхо лучше логический массив использовать. В разы быстрее работать будет, да и инвертация значений проще.
проверил - без разницы, в некоторых случаях с int быстрее будет.
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
13.11.2011, 16:22
Цитата Сообщение от kzru_hunter Посмотреть сообщение
проверил - без разницы, в некоторых случаях с int быстрее будет.
В данной задаче вполне может быть примерно однаковое время, но если используется большое количество операций (я взял 10000000) то булевые операции происходят быстрее почти в 2 раза. Но сегодня шахматы, а завтра расчетная программа и зачем тогда в привычку это вводить.
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
13.11.2011, 16:25
Цитата Сообщение от DefineTrueFalse Посмотреть сообщение
но если используется большое количество операций (я взял 10000000) то булевые операции происходят быстрее почти в 2 раза.
можно пример? у меня почти одинаковое время выдает, хоть даже триллиард операций.
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
13.11.2011, 16:44
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
const int Count = 100000;
 
DWORD pTime = 0;
for (int TryCalc = 0; TryCalc < 10; TryCalc++)
{
   pTime = GetTickCount();
   bool Test1[Count];
   for (int i = 0; i < Count/10; i++)
      for (int index = 0; index < Count; index++)
      {
         Test1[index] = false;
         if (!Test1[index]) Test1[index] = false;
         Test1[index] = true;
      }
   ListBox1->Items->Add(IntToStr(GetTickCount() - pTime));
 
   pTime = GetTickCount();
   int Test2[Count];
   for (int i = 0; i < Count/10; i++)
      for (int index = 0; index < Count; index++)
      {
         Test2[index] = 0;
         if(Test2[index] % 2 == 0) Test2[index] = 0;
         else Test2[index] = 1;
      }
   ListBox2->Items->Add(IntToStr(GetTickCount() - pTime));
}
Изображения
 
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
13.11.2011, 17:01
в коде с bool:
if (!Test1[index]);
в коде int:
if(Test2[index] % 2 == 0)
коды отличаются, из-за этого и разница. если сравнять, то будет одинаковое время
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.11.2011, 17:01
Помогаю со студенческими работами здесь

Виснет программа при компиляции, степовер не работает, так же виснет
Виснет программа при компиляции, степовер не работает, так же виснет. Программа - простейший калькулятор. ...

Почему так программа работает?
Скорей всего я что то не знаю, но почему наименьший общий множитель чисел 100 и 75 равен 5? Почему? Все комментарии, код программы и...

Почему эта программа работает так медленно?
Раньше работала нормально, но у меня вырубился комп изменения не сохранились и я не помню как было. unit Unit18; interface ...

Почему программа работает именно так? (Тема Params)
После того как скомпилировал программу, я не понимаю как именно она работает, меня интересует элемент с 4 строки до 16 строки (весь класс...

Объяснить, почему программа для подсчёта скобок в тексте работает не так, как ожидается
я ввожу текст в блокноте с скобками, мне нужно подсчитать количество скобок в программе, но у меня выходит текст вместо количества скобок,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru