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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 528
#1

Доработать пункт меню - C++

01.11.2011, 13:22. Просмотров 1457. Ответов 39
Метки нет (Все метки)

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
 case 2:{
                  int i, j,size;
                  char nameInput[30]
                  FILE *f1;
                  cout<<"Введите имя файла: ";
                  cin>>nameInput;
                  f1=fopen(nameInput,"r");
                  while (f1 == NULL)//цикл от ошибок,если не сущевствует файла1
                  {
                        cout<<"\tОшибка открытия файла!\n";
                        cout<<"Введите имя файла: ";   //спрашиваешь имя
                        cin>>nameInput;       //считываешь имя
                        f1 = fopen(nameInput,"r");//открытие файла1
                  }
                  fflush(f1);
                  fscanf(f1, "%d", &size);
                  int **matr=new int *[n];
                  for(i=0; i<n; i++)
                        {
                                matr[i]=new int[n]; 
                        }
                  int *masiv=new int[n*n];
                  for (i=0;i<size;i++)
                       {
                       for (j=0;j<size;j++)
                       fscanf (f1,"%d ",&matr[i][j]);
                       }
                        for (i=0;i<=size-1;i++)
                      {
                      for (j=0;j<=size-1;j++)
                      cout << matr[i][j] << " ";
                      cout<<endl;
                      }
                   matrica(matr,n);//функция вывода матрицы на консоль
                    maxsum(matr,n);//функция поиска максимальной среди сумм
                    for(int i = 0; i < n; i++) {
                  delete[] matr[i];}                               
                  delete[] matr;
                 break;}
Помогите доработать,к результате в окне что то не то
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2011, 13:22     Доработать пункт меню
Посмотрите здесь:

Добавить пункт в меню - C++
Подскажите пожалуйста. В Visual Studio 2010 создаю проект Win32. Когда просто компилирую выводится окно в котором в меню есть только пункты...

Заменить первый пункт меню на функцию - C++
Не могу заменить первый пункт меню на функцию. // 7.cpp: определяет точку входа для консольного приложения. // #include...

Надо чтоб при нажатии на свой пункт меню открывался новый док. - C++
Значит в MDI проекте, добовляю я свой пункт меню, и надо чтоб при нажатии на него открывался новый док, тоже что и File-&gt;New. Подскажите...

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

"О программе" (пункт меню) - C++
Здрасти. В пункте меню &quot;о программе&quot; мне куда писать эту информацию, в самой программе? или записать в файл, а функцией...

объясните пожалусто каждый пункт - C++
Реализовать программу демонстрирующую решение поставленной задачи. Необходимо соблюсти условия перечисленные ниже. 1. Ввод исходных...

Успеет ли мотоциклист прибыть в пункт назначения? - C++
мотоциклист должен прибыть в город через T часов после выезда из пункта находящемуся на расстоянии S кем от города. Успеет ли он вовремя...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
01.11.2011, 18:57     Доработать пункт меню #16
Цитата Сообщение от a.n.o.n.i.m Посмотреть сообщение
запускаю 2 пункт ввожу имя файла ,пишет Matrix hasn't 1 elements,должна матрицу показываит,или матрица в текстовике не правильно задана?
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
return n*n - k + 1;
- убери +1 return n*n - k
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 528
01.11.2011, 19:06  [ТС]     Доработать пункт меню #17
спасиб тебе,все прекрасно работает.
Как прдеотвоатить крах программы при введенной размерности 9999999999999999999999999 или что то подобного?
это касается первого пункта
-=ЮрА=-
Заблокирован
Автор FAQ
01.11.2011, 20:43     Доработать пункт меню #18
Цитата Сообщение от a.n.o.n.i.m Посмотреть сообщение
спасиб тебе,все прекрасно работает.
Как прдеотвоатить крах программы при введенной размерности 9999999999999999999999999 или что то подобного?
это касается первого пункта
пиши так
C++
1
2
3
4
5
6
7
double size;
cin>>size;
if(INT_MAX < size)
    cout<<"Value is not integer\n";
else
{//делай свои действия
}
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 528
02.11.2011, 09:19  [ТС]     Доработать пункт меню #19
C++
1
2
3
4
5
6
7
8
9
10
11
 {
  try
  {
    int* myarray= new int[10000];
  }
  catch (bad_alloc& ba)
  {
    cerr << "bad_alloc caught: " << ba.what() << endl;
  }
  return 0;
}
а как бы через этот код?

или лучше черех этот
C++
1
2
3
4
5
6
7
8
throw bad_alloc();
 
int * m =0;
try {
    m = new int[n];
} catch (bad_alloc x) {
    ....
}
-=ЮрА=-
Заблокирован
Автор FAQ
02.11.2011, 12:02     Доработать пункт меню #20
a.n.o.n.i.m, тут вся суть проверки сводится удалось ли выделить память
Цитата Сообщение от a.n.o.n.i.m Посмотреть сообщение
программы при введенной размерности 9999999999999999999999999
- это подразумевало проверку предполагаемого числа элементов, лучше делать её чем лишний раз напрягать ОС пожирая огромный блок памяти а потом выплёвывая его при некорректном выделении. Вообщем зачем что то делать если по самой размерности можно сказать что этого лучше не делать, к этому веду
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 528
02.11.2011, 12:03  [ТС]     Доработать пункт меню #21
просто не понял куда твой код вписать,можешь пояснить?
-=ЮрА=-
Заблокирован
Автор FAQ
02.11.2011, 12:06     Доработать пункт меню #22

Не по теме:

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



Добавлено через 1 минуту
Цитата Сообщение от a.n.o.n.i.m Посмотреть сообщение
просто не понял куда твой код вписать,можешь пояснить?
- сейчас сделаю - ответь на мой вопрос, мы специально генерируем исключительную ситуацию или же просто нужно ввести так называемую "защиту от дурака"?
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 528
02.11.2011, 12:10  [ТС]     Доработать пункт меню #23
я вам отписал в пм
-=ЮрА=-
02.11.2011, 12:12
  #24

Не по теме:

Цитата Сообщение от a.n.o.n.i.m Посмотреть сообщение
я вам отписал в пм
- ок скоро проверю личку, если там всё будет понятно выложу код в топик...

a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 528
02.11.2011, 15:30  [ТС]     Доработать пункт меню #25
ответь
-=ЮрА=-
02.11.2011, 15:47
  #26

Не по теме:

Цитата Сообщение от a.n.o.n.i.m Посмотреть сообщение
ответь
- сейчас уже пишу код, подогодь трошки...

a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 528
02.11.2011, 15:51  [ТС]     Доработать пункт меню #27
C++
1
2
3
4
5
6
7
8
9
 case 1:
                  cout<<"Введите порядок матриц:\n";
                  cout<<"n = ";
                  cin>>size;    
                  if(INT_MAX < size){
    cout<<"Value is not integer\n";}
else{       
            size=n;   
                  matr=new int *[n];
я вот твой цикл попробывал,если много ввести то пишет ошибку норм,но если ввести нормальную размерность напрмер 3 бесконечно вводится матрица
-=ЮрА=-
Заблокирован
Автор FAQ
02.11.2011, 16:02     Доработать пункт меню #28
Как то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
switch(menu)
    {
             case 1:
                 do
                 {
                      cout<<"Ââåäèòå ïîðÿäîê Г¬Г*òðèö:\n";
                      cout<<"n = "; 
                      cin>>dn;
                      if(INT_MAX < dn)
                          cout<<"ÂâåäåГ*Г*îå ÷èñëî ïðåâûøГ*ГҐГІ ïðåäåë "<<(n = INT_MAX)<<"\n";
                 }
                 while(INT_MAX < dn);
                      
                  n = int(dn);
                  matr=new int *[n];
для INT_MAX подключите #include <limits.h> так на всякий случай, скрин нужной части данного хедера прилагаю
Миниатюры
Доработать пункт меню  
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 528
02.11.2011, 16:06  [ТС]     Доработать пункт меню #29
а dn следует вначале обьявит тип double или int?

робит норм,но если ввести 9 знаков 1000000000 вылетает))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2011, 16:10     Доработать пункт меню
Еще ссылки по теме:

Поезд едет из пункта А в пункт Б со средней скоростью V - C++
Поезд едет из пункта А в пункт Б со средней скоростью V. Составить программу для нахождения времени пути t1, если есть встречный ветер,...

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

Оформить каждый пункт задания в виде функции - C++
программа определяет максимум среди сумм диагоналей, параллельных главной диагонали матрицы. Нужно оформить каждый пункт задания в виде...

Оформить каждый пункт задания в виде функции - C++
Помогите, пожалуйста оформить каждый пункт в виде функции, коды все готовы, рабочие. #include &lt;iostream&gt; #include &lt;windows.h &gt; ...

Робот должен добраться от А в пункт Б самым коротким путём - C++
Здравствуйте, прошу помогите сделать Домашнее задание. :umnik: Задача очень проста)): робот должен добраться от А в пункт Б самым...


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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
02.11.2011, 16:10     Доработать пункт меню #30
Цитата Сообщение от a.n.o.n.i.m Посмотреть сообщение
а dn следует вначале обьявит тип double или int?
- ах ну да я ж верхушку кода не привёл, вот

весь код
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <limits.h>
using namespace std;
 
//Ïðîâåðÿåò ñîäåðæèòñÿ ëè Гў ГґГ*éëå
//ïîëГ*Г*Гї Г¬Г*òðèöГ*, åñëè ВєГІГ® ГІГ*ГЄ âîçâðГ*ГІ 0
//åñëè Г*ГҐГІ âîçâðГ*ГІ ëþáîå Г*ГҐГ*óëåâîå Г§Г*Г*Г·ГҐГ*ГЁГҐ
int isCorrectFile(FILE *f, int &n)
{
        int i, j;
        int buf, k = 0;
        if(!fscanf(f,"%d",&n))
                n = -1;
        else    
        for(i = 0; i < n; i++)
        for(j = 0; j < n; j++)
        {
                //ГЊГ*ëî ºëåìåГ*òîâ
                if(feof(f))
                        break;
                //ГЌГҐ ГіГ¤Г*ëîñü Г±Г·ГЁГІГ*ГІГј ýëåìåГ*ГІ
                if(!fscanf(f,"%d",&buf))
                        break;
                k++;//Г±Г·ВёГІГ·ГЁГЄ Г·ГІГҐГ*ГЁГ©
        }
        fseek(f,0,SEEK_SET);//ÂåðГ*óëè êóðñîð ГўГ*Г*Г·Г*ëî ГґГ*éëГ*
        return n*n - k + 1;
}
 
void maxsum(int **matr, int n)//ГґГіГ*êöèÿ ïîèñêГ* Г¬Г*ГЄГ±ГЁГ¬Г*ëüГ*îé ñðåäè ñóìì
{
    int i,j, max = 0,sum = 0,index,dlina;
    dlina = 1;//äëèГ*Г* Г±Г*ìîé êîðîòêîé ïîáî÷Г*îé äèГ*ГЈГ®Г*Г*ëè
    index = n - 1;//Г*îìåð "Г±ГІГ*ðòîâîãî" (äëÿ ïîäñ÷åòГ*) ñòîëáöГ* Г*óëåâîé ñòðîêè Гў ïåðâîì öèêëå for() ГЁ "Г±ГІГ*ðòîâîé" ñòðîêè äëÿ Г*óëåâîãî ñòîëáöГ* ГўГ® âòîðîì öèêëå for()
    while(index)
    {
        for(i = 0,j = index; i < dlina; ++i, ++j)//ïåðåìåùГ*åìñÿ ïðÿìî ГЇГ® äèГ*ГЈГ®Г*Г*ëè äî ГІГҐГµ ïîð, ïîêГ* Г*ГҐ èñ÷åðïГ*Г*Г* äëèГ*Г* äèГ*ГЈГ®Г*Г*ëè dlina
            sum += matr[i][j];
        if (max < sum)//ïðîâåðÿåì Г§Г*Г*Г·ГҐГ*ГЁГҐ sum Г± èìåþùèìñÿ Г¬Г*ñêèìóìîì
        {
            max = sum;
        }
        sum = 0;
        for(i = 0, j = index; i < dlina; ++i, ++j)//ïåðåìåùГ*åìñÿ ïðÿìî ГЇГ® äèГ*ГЈГ®Г*Г*ëè äî ГІГҐГµ ïîð, ïîêГ* Г*ГҐ èñ÷åðïГ*Г*Г* äëèГ*Г* äèГ*ГЈГ®Г*Г*ëè dlina
            sum += matr[j][i];
        if (max < sum) //ïðîâåðÿåì Г§Г*Г*Г·ГҐГ*ГЁГҐ sum Г± èìåþùèìñÿ Г¬Г*ñêèìóìîì
        {
            max = sum;
        }
        sum = 0;
        ++dlina;//óâåëè÷èâГ*ГҐГ¬ Г°Г*çìåð äèГ*ГЈГ®Г*Г*ëè Г*Г* 1
        --index;//"Г±ГІГ*ðòîâûé" ГЁГ*äåêñ index óìåГ*ГјГёГ*ГҐГ¬ Г*Г* 1 ГЁ ГІГ*ГЄ äî ГІГҐГµ ïîð, ïîêГ* index Г*ГҐ Г°Г*ГўГҐГ* 0
    }
    cout<<"maximum =  "<<max<<endl<<endl;
    return;
}
 
void matrica(int **matr, int n)//ГґГіГ*êöèÿ âûâîäГ* Г¬Г*òðèöû Г*Г* ГЄГ®Г*ñîëü
{
    int i,j;
    cout<<"\nMatrica A\n\n";
    for (i = 0; i < n; i++)//Âûâîä ðåçóëüòГ*ГІГ*
    {
        for (j = 0; j < n; j++)
        {
            cout << matr[i][j] << " ";
        }
        cout<<endl;
    }
    cout<<endl;
    return;
}
 
int main(int argn, char** argv)
{
    setlocale(LC_ALL,"Rus");//ðóññêèé ÿçûê
    int menu,n,i,j;
    double dn;
    int **matr;
        FILE *f1;
        char nameInput[30];
    cout<<"Âûáåðåòå ГўГ*ðèГ*Г*ГІ ââîäГ*\n\n";
    cout<<"\t1.Ââîä âðó÷Г*ГіГѕ\n";
    cout<<"\t2.Èç ГґГ*éëГ*\n\n";
    cout<<"Г‚Г*Гё ГўГ*ðèГ*Г*ГІ: ";
    cin>>menu;    
    switch(menu)
    {
             case 1:
                 do
                 {
                      cout<<"Ââåäèòå ïîðÿäîê Г¬Г*òðèö:\n";
                      cout<<"n = "; 
                      cin>>dn;
                      if(INT_MAX < dn)
                          cout<<"ÂâåäåГ*Г*îå ÷èñëî ïðåâûøГ*ГҐГІ ïðåäåë "<<(n = INT_MAX)<<"\n";
                 }
                 while(INT_MAX < dn);
                      
                  n = int(dn);
                  matr=new int *[n];
                  for (i=0;i<n ;i++)
                  {
                       matr[i]=new int[n]; 
                       for (j=0;j<n ;j++)
                                                          {
                                      cout<<"A["<<i+1<<"]["<<j+1<<"] = " ;
                                      cin>>matr[i][j];
                                                                          }
                  }
                  matrica(matr,n);//ГґГіГ*êöèÿ âûâîäГ* Г¬Г*òðèöû Г*Г* ГЄГ®Г*ñîëü
                  maxsum(matr,n);//ГґГіГ*êöèÿ ïîèñêГ* Г¬Г*ГЄГ±ГЁГ¬Г*ëüГ*îé ñðåäè ñóìì
                  for(i = 0; i < n; i++) {
                  delete[] matr[i];}                               
                  delete[] matr;
                  break;
             case 2:
                  
                  cout<<"Ââåäèòå èìÿ ГґГ*éëГ*: ";
                  cin>>nameInput;
                  f1=fopen(nameInput,"r");
                  while (f1 == NULL)//öèêë îò îøèáîê,åñëè Г*ГҐ Г±ГіГ№ГҐГўГ±ГІГўГіГҐГІ ГґГ*éëГ*1
                  {
                        cout<<"\tГЋГёГЁГЎГЄГ* îòêðûòèÿ ГґГ*éëГ*!\n";
                        cout<<"Ââåäèòå èìÿ ГґГ*éëГ*: ";   //Г±ГЇГ°Г*ГёГЁГўГ*ГҐГёГј èìÿ
                        cin>>nameInput;           //ñ÷èòûâГ*ГҐГёГј èìÿ
                        f1 = fopen(nameInput,"r");//îòêðûòèå ГґГ*éëГ*1
                  }
                  if((i = isCorrectFile(f1, n)) != 0)
                {
                        if(n == -1)
                                printf("Cant read num of elements\n");
                        else
                                printf("Matrix hasn't %d elements\n",i);
                }
                else
                {
                  matr=new int *[n];       
                  for (i=0;i<n ;i++)
                  {
                       matr[i]=new int[n];           
                       for (j=0;j<n ;j++)
                            fscanf (f1,"%d ",&matr[i][j]);
                  }
 
                   matrica(matr,n);//ГґГіГ*êöèÿ âûâîäГ* Г¬Г*òðèöû Г*Г* ГЄГ®Г*ñîëü
                    maxsum(matr,n);//ГґГіГ*êöèÿ ïîèñêГ* Г¬Г*ГЄГ±ГЁГ¬Г*ëüГ*îé ñðåäè ñóìì
                    for(int i = n - 1; 0 <= i; i--) {
                          delete[] matr[i];          }                     
                  delete[] matr;
                                }
                 break;
                 default:cout<<"\nÍåòî÷Г*ûé ââîä Г*îìåðГ*!";break;
    }    
        getch();
        return 0;
}


Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
int main(int argn, char** argv)
{
* * setlocale(LC_ALL,"Rus");//русский язык
* * int menu,n,i,j;
* * * * double dn;
* * int **matr;
* * * * FILE *f1;
* * * * char nameInput[30];
* * cout<<"Выберете вариант ввода\n\n";
- вон он dn затесался между int menu,n,i,j; и int **matr;

Не по теме:

PS:a.n.o.n.i.m, не забывайте на объявление переменных в лэйблах ругается компилятор.

Yandex
Объявления
02.11.2011, 16:10     Доработать пункт меню
Ответ Создать тему
Опции темы

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