HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > Нужен совет с кодом
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Chyvachok
Житель форума

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 1844

Рейтинг



Нужен совет с кодом

Мне по предмету в универе надо сделать прогу, в которой надо ввести массив не больше 100 элементов, и чтобы с этого массива в матрицу 10 на 10 вводились по столбацам начиная с левого, элементы с минусом начиная с конца массива, я что-то там набылокодил, вроде делает что надо, но если последний элемент массива с плюсом, вместо того чтобы в матрице 1 элементом вместо него написать следущий элемент массива с минусом, там пишет ноль, если последний с минусом то все нормально, я пока не допру как это подправить, да и может кто подскажет как еще можно улучшить код, а то я несколько лет этот с++ вообще не трогал и успел все забыть.

C++ Source Code:
1
#include <iostream>
2
 
3
using namespace std;
4
 
5
int main()
6
{
7
  int arrsize; //размер массива А
8
  int her=0; //позже уберу
9
 
10
  cout << "Введите размер массива А (не больше 100):" << endl;
11
  cin >> arrsize;
12
 
13
  int A[arrsize];
14
  int C[10][10];
15
 
16
  // заполнение массива
17
  for ( int i = 0; i < arrsize; i++ )
18
  {
19
    //cout << "Введите элемент массива А[" << i << "]= ";
20
    //cin >> A[i];
21
    if (her == 0) //чтобы чередовались минусовые и плюсовые числа позже надо будет поменять на рандом
22
    {
23
      A[i] = i+1;
24
      her++;
25
    }
26
    else
27
    {
28
      A[i] = -i+1;
29
      her--;
30
    }
31
    //cout << endl;
32
  }
33
 
34
  int element = arrsize-1; //Для ввода чисел из массива с конца
35
 
36
  // Заполнение матрицы по столбцам минусовыми элементами массива с конца
37
  for ( int j = 0; j < 10; j++ )
38
  {
39
    for ( int i = 0; i < 10; i++ )
40
    {
41
      C[i][j] = 0;
42
 
43
      do {
44
        if (element < 0)
45
        {
46
          break;
47
        }
48
 
49
        if (A[element] < 0)
50
          C[i][j]=A[element];
51
 
52
        element--;
53
 
54
      } while (A[element] > 0);
55
    }
56
  }
57
 
58
  // Вывод массива А
59
  cout << "Массив A:" << endl;
60
  for ( int i = 0; i < arrsize; i++ )
61
  {
62
    cout << "A[" << i << "]=" << A[i] << " ";
63
  }
64
  cout << endl;
65
 
66
  // Вывод матрицы С
67
  cout << "Матрица C:" << endl;
68
  for ( int i = 0; i < 10; i++ )
69
  {
70
    for ( int j = 0; j < 10; j++ )
71
    {
72
      cout << "C[" << i << "][" << j << "]=" << C[i][j] << " ";
73
    }
74
    cout << endl;
75
  }
76
 
77
  return 0;
78
}

Сообщить модератору | | IP: Записан
Сообщение: 152129

Старое сообщение 08-12-2015 17:01
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34498
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Chyvachok
Лучше в таких случаях приводить пару примеров в стиле "исходные данные - ожидаемый результат". Словами не всегда понятно описывается.
Если я правильно пони, нужно заполнить матрицу по столбцам только отрицательными числами с конца массива? Ну так и заполняй без всяких хитростей:

C++ Source Code:
1
for ( int i = arrsize-1, j = 0; i >= 0; --i ) {
2
  if ( A[i] >= 0 )
3
    continue;
4
  C[j/10][j%10]=A[i];
5
  ++j;
6
}

ЗЫ: код компилировал в уме, так что если где-то опечатался - сорри.

Сообщить модератору | | IP: Записан
Сообщение: 152134

Старое сообщение 08-12-2015 18:18
-
Chyvachok
Житель форума

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 1844

Рейтинг



Цитата:
XaeroX писал:
Если я правильно пони, нужно заполнить матрицу по столбцам только отрицательными числами с конца массива?


Да, спасибо за код, попробую его заюзать.

Добавлено 08-12-2015 в 21:45:

XaeroX работает отлично, не пропускает уже числа как у меня, остальнось сделать чтобы он столбцы заполнял, а не строки, то есть вертикально, я пока не разобрался как код работает, когда то у нас было програмирование, но я уже забыл уже эти все операторы

Сообщить модератору | | IP: Записан
Сообщение: 152140

Старое сообщение 08-12-2015 19:45
- За что?
ComradeAndrew
Житель форума

Дата регистрации: Aug 2014
Проживает: Дубай
Сообщений: 510
Возраст: 27

Рейтинг



Chyvachok, поменяй просто местами обращения к индексам.

code:
C[j%10][j/10]

Хотя стой, разве он сейчас не по столбцам у тебя идет? У тебя как представлено: строки x столбцы или столбцы x строки?

Сообщить модератору | | IP: Записан
Сообщение: 152146

Старое сообщение 08-12-2015 19:54
- За что?
Chyvachok
Житель форума

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 1844

Рейтинг



Цитата:
ComradeAndrew писал:
Chyvachok, поменяй просто местами обращения к индексам.


Спасибо, уже как надо работает. По заданию эту програму еще надо на java и python написать, но с тем я маяться буду по позже.

Сообщить модератору | | IP: Записан
Сообщение: 152152

Старое сообщение 08-12-2015 20:32
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 12:01. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > Нужен совет с кодом
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024