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

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

13.11.2011, 10:44. Показов 913. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru