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

В матрице удалить строки с элементами на главной диагонали, превышающими заданную величину - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Поиск строк http://www.cyberforum.ru/cpp-beginners/thread2768.html
Здраствуйте, подскажите какие есть реализации или как это сделать примерно. Задача в поиске строк в файле, можно воспользоватся регулярными выражениями или алгоритмами типа бойра-Мура, но файл нельзя...
C++ Не могу сделать exe При компиляций моего пректа exe не создаётся.Выдаёт ошибки,которые я не знаю как исправить...http://dump.ru/files/g/g2067785368/ Программа должна выполнять функцию Надо ввести значение переменной... http://www.cyberforum.ru/cpp-beginners/thread2756.html
Где можно скачать программу, чтобы начать учиться работать в С++? C++
собственно ногами не пинать...вопрос полного нуля в этой области , но подскажите где можно скачать программу для того что бы начать учиться работать в С++... может выразился сумбурно...но за рание...
Где можно скачать элекронные книги, конспекты и тд? C++
Уважаеммые формчане, нужна помощь по основам программирования на С, ищу ссылки где можно скачать элекронные книги, конспекты и тд и тп. ничего сложного и желательно кратко. заренее благодарен
C++ Помогите с курсовой на тему! http://www.cyberforum.ru/cpp-beginners/thread2675.html
Отражение движущегося случайным образом шарика от геометрических фигур статично располагающихся в комнате (треугольник, квадрат, круг) с использованием библиотеки функций OPENGL.
C++ Оптимизация кода Положение дел таково: написана программа, которая работает и вроде все замечательно, но, вспоминая программирование, которому обучался в институте курсе где-то на втором, понимаю, что программа... подробнее

Показать сообщение отдельно
bor.is
0 / 0 / 1
Регистрация: 29.08.2007
Сообщений: 9
29.08.2007, 23:45
ухх жестока, но зачем так, если "задача то учебная"
вот что у меня обрисовывается
я пишу на C++ с использованием STL
база данных - вектор в векторе, вместит всё если не закончиться память
если нужно зделать своё, то предлагаю создать класс на подобии вектора, скрыть все добавления и махинации в нём а остальной код оставить
если же нужно на чистом C то я даже не знаю ...
код берёт матрицу из файла, на строке с freopen замени "sol.in" на свой файл
формат данных: ограничение, количество столбцов (x), количество рядков (y) ну и сама матрица

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
#include <cstdio>
#include <vector>
using std::vector;
 
vector< vector<int> > major; // data array
int x, y; // size of arraiy
int limit; // if value in diagonal is more than this remove it's row
 
void print () {
   int ix, iy (0);
   do {
      ix = 0;
      do {
         printf ("%d ", major[iy][ix]);
      } while (++ix != x);
      putchar ('\n');
   } while (++iy != y);
};
 
void reading () {
   scanf ("%d%d%d", &limit, &x, &y);
   major.resize (y);
   int ix, iy (0); // help variables
   do {
      major[iy].resize (x);
      ix = 0;
      do {
         scanf ("%d", &major[iy][ix]);
      } while (++ix != x);
   } while (++iy != y);
};
 
vector<int> moving () {
   int itd (0); // iterator diagonal
   int ith; // iterator horizontal
   int max (0); // maiximum value in horizontal
   vector<int> result; // array with maximum elements from columns
   do {
      if (major[itd][itd] > limit) { // search for value greater than limit
         ith = 0;
         max = 0;
         do {
            if (major[ith][itd] > max) { max = major[ith][itd]; };
         } while (++ith != y);
         result.push_back (max);
         major.erase (major.begin() + itd);
         --y;
      } else {
         ++itd; // if we remove some row, next one received it's index
      };
   } while ( (itd < x) && (itd < y) );
   return result;
};
 
 
int main() {
   // 1 machen
   
   freopen ("sol.in", "r", stdin); // use your input file within "sol.in"
   reading ();
   vector<int> first (moving());
   if (first.size() < x) { first.insert (first.end(), x - first.size(), 0); }; // adding zeros in end if need
   major.insert (major.begin(), first);
   ++y;
   print ();
   
   // 0 machen */
    return 0;
};
вот пример входного файла
Код
5
4 3
1 2 3 10
4 5 6 11
7 8 9 12
вставляй print() там где нужно чтобы посмотреть состояние на том этапе, или переделай print() чтобы он записывал в файл
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru