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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ok-smile
0 / 0 / 0
Регистрация: 17.01.2010
Сообщений: 3
#1

Никак не могу разобраться с ошибкой. - C++

15.12.2010, 23:38. Просмотров 417. Ответов 3
Метки нет (Все метки)

Задание:
Имеются числа х1,х2,...,хn.Расставить их в таблице размером (nхn) так,чтобы в каждой строке и в каждом столбце каждое число встречалось по одному разу. Таблицу занести в файл.

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
#include "stdafx.h"
#include "set"
#include "time.h"
#include "iostream"
 
using namespace std;
 
typedef set<int,less <int> >Myset;  //Тип множество из неповторяющихся чисел
 
void deny(Myset [100][100],int,int,int,int);    
int setlen(Myset);          //Ф-ция,определяющая размер множества
 
int main()
{
    srand(time(NULL));
    
    int N;
    cout << "Vvedite razmer tablicu ot 1 do 8.";
    cout << '\n';
    
    do
    { cin>>N;
      if(N<=0) puts("Vvedite chislo > 0!");
    }
    while(N<=0);    
     
     cout<<"Dannaia tablica bydet zanesena v file c imenem <MAX>";
     cout<<'\n';
    
 
    int mas[100][100];
    
    Myset s[100][100];
    
    int complete = 0,           //Сколько заполнено мест
        min = 0,
        min_x = 0,
        min_y = 0;
    
    for(int i = 0;i<N;i++)  //В каждой клетке может стоять любой элемент
       for(int j = 0;j<N;j++)
          for(int k = 1;k<=N;k++)
             s[i][j].insert(k);
       
    
    while(complete < N*N)       //Ищем множество минимальной длины
    {
       min = N;           
       min_x = 0;
       min_y = 0;
       for(int i = 0;i<N;i++)
          for(int j = 0;j<N;j++)
          {
              //Сравниваем длины множеств
              if(setlen(s[i][j]) < min && setlen(s[i][j]) > 0)
             {
                min = setlen(s[i][j]);
                min_x = i;
                min_y = j;
             }
          }
       
       Myset::iterator iter;
              
       iter = s[min_x][min_y].begin();     
       
       if(*iter == 0)printf("LOLOLLO");
       
       mas[min_x][min_y] = *iter;//Значение из множества ставим в min       deny(s,mas[min_x][min_y],min_x,min_y,N);
       s[min_x][min_y].clear();
       complete++;
 
    }
       
    FILE *f;
    f = fopen("MAX.txt","w");
    
    for(int i = 0;i<N;i++)
    {
       for(int j = 0;j<N;j++)
       {
          fprintf(f,"%4d",mas[i][j]);
          printf("%4d",mas[i][j]);
       }
       fprintf(f,"\n");
       cout<<'\n';
       
    }
    fclose(f);
       
    system("pause");
    
}
 
void deny(Myset s[100][100],int val,int i,int j,int N)
{
    for(int k = 0;k<N;k++)  //Идем по строкам и столбцам и исключаем клетки
       s[i][k].erase(val);
    
    for(int k = 0;k<N;k++)
       s[k][j].erase(val);
}
    
int setlen(Myset s)
{
   Myset::iterator iter;
   int l = 0;
   for(iter = s.begin();iter != s.end();iter++)
      l++;
   return l;
 
}
Вопросы:
1) Выдает ошибку при вводе размерности отличной от 1 ("Expression: map/set iterator not dereferencable "). Что нужно исправить?? Что конкретно не так??

2) Можно ли безболезненно внести изменения, чтобы не ограничивать пользователя программы при вводе размерности таблицы (я имею ввиду сделать размерность от 1 до n)???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2010, 23:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Никак не могу разобраться с ошибкой. (C++):

Не могу разобраться с ошибкой - C++
Всю голову переломал почему он ругается на cout в 11 строке. Подскажите пожалуйста. #include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include...

Не могу разобраться с ошибкой - C++
В общем такой код Source.cpp #include &lt;iostream&gt; using namespace std; #include &quot;header.h&quot; stack_type::stack_type() { ...

не могу разобраться с ошибкой - C++
Нарушение прав доступа при записи &quot;0x001a0fc0&quot;. не могу понять где ошибка. программа на рекурсию #include &quot;stdafx.h&quot; #include...

Не могу разобраться с ошибкой - C++
Программа ханойские башни, нужно что бы выводил графически. Но пишет вот такую ошибку Ошибка 1 error C1083: Не удается открыть файл...

Никак не могу разобраться с конструктором. - C++
Добрый день. Недавно стал изучать C++. Уже 2 день пытаюсь понять суть конструктора, но не могу. Код который присутствует в...

Не могу разобраться с ошибкой в проге - C++
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;ctype.h&gt; #define C 262 #define D 294 #define E 330 ...

3
#pragma
Временно недоступен
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
16.12.2010, 00:04 #2
Вместо
C++
1
2
3
4
#include "stdafx.h"
#include "set"
#include "time.h"
#include "iostream"
Попробуйте
C++
1
2
3
4
#include <iostream>
#include <set>
#include <ctime>
#include <cstdlib>
0
ok-smile
0 / 0 / 0
Регистрация: 17.01.2010
Сообщений: 3
16.12.2010, 00:12  [ТС] #3
к сожалению не помогло
0
ok-smile
0 / 0 / 0
Регистрация: 17.01.2010
Сообщений: 3
19.12.2010, 12:55  [ТС] #4
Неужели никто не знает, как помочь??
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2010, 12:55
Привет! Вот еще темы с ответами:

Программка вроде не сложная, но никак не могу разобраться с модулями... Часть кода есть - C++
Постановка задачи Определите массив, хранящий строки символов. Создайте массив слов, считываемых из файла. Повторяющиеся слова не...

Создайте класс, имитирующий работу биллинговой системы сотового оператора (Не могу разобраться с ошибкой) - C++
вот текст программы Создайте класс, имитирующий работу биллинговой системы сотового оператора. Объектом данного класса является...

пом0гите разобраться с ошибкой - C++
expected identifier before '(' token expected `;' before '(' token вот код #include &lt;iostream&gt; using namespace std; int...

Функции в c++. никак не разобраться с задачками - C++
можете объяснить решения нескольких задач? застрял на передаче параметров по ссылке. а также : возврат результата по ссылке. не...


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
19.12.2010, 12:55
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru