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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ даны несколько задач по указателям http://www.cyberforum.ru/cpp-beginners/thread376010.html
Здравствуйте, нужна помощь в разборе Указателей. Заранее спасибо. Задание 1. Дан фрагмент программы: int main () { int *Q; int j; Q=&j; …}
C++ Заголовочный файл. Хедер Всем привет!) У меня есть программа. Вот она. // Списки и структуры.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> #include "H1.h" using namespace std; http://www.cyberforum.ru/cpp-beginners/thread376009.html
утечка память в IMG_LoadPNG_RW (SDL) C++
сделал в цикле следующий код while(1){ frame=IMG_LoadPNG_RW(rwop); rwop=SDL_RWFromFile(filename.c_str(), "rb"); SDL_FreeSurface(frame); SDL_FreeRW(rwop); SDL_Delay(30);
C++ Помогите пожалуйста решить на С
Помогите пожалуйста решить на С: Составить программу нахождения фамилии двух человек, проживающих по одному адресу в разных местах. В списке приведено: фамилия, город, улица, номер дома и номер квартиры. Срочно!!!!!!!!
C++ переведите в с++ http://www.cyberforum.ru/cpp-beginners/thread375962.html
const n0=100; {вершины} inf=32000;{бесконечность} var m:integer; {рёбра} n:byte; {вершины} A:array of real; {матрица весов} DOP:array of boolean; {допустимость вершины} X,OptX:array of byte; {маршруты} Cost,OptCost:real; {стоимости}
C++ вопрос по синтаксису/типам фрагмент файла unique_ptr.h: template <typename _Tp, typename _Tp_Deleter = default_delete<_Tp> > class unique_ptr { typedef std::tuple<_Tp*, _Tp_Deleter> __tuple_type; typedef __tuple_type unique_ptr::* __unspecified_bool_type; typedef _Tp* unique_ptr::* __unspecified_pointer_type; .... подробнее

Показать сообщение отдельно
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 492
02.11.2011, 18:31  [ТС]     Доработать пункт меню
все хорошо,но 1) что надо ввести чтобы чтобы писало Ошибка выделения памяти - введите меньшее у меня всегда пишет Введенное число превышает предел
2)если я руские буквы заменю английским транслитом "vvedite n" например то
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ostream& operator<<(ostream &stream,char* s){
        for(char* ps=s; *ps; ps++){
                if(*ps=='Вё')
                        stream<<char(241);
                else if(*ps=='ВЁ')
                        stream<<char(240);
                else if(*ps>=-64 && *ps<=-17)                   
                        stream<<char(*ps+64+128);
                else if(*ps<0)
                        stream<<char(*ps+64+176);
                else
                        stream<<*ps;
        }
        return stream;
}
можно убрать?тем самым уменьшив код

Добавлено через 13 минут

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
160
161
162
163
164
165
166
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <limits.h>
#include <fstream>
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 ;
}
 
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)
{
    int menu,n = INT_MAX,i,j;
    double dn;
    int **matr;
    FILE *f1;
    char nameInput[30];
    cout<<"Viberete variant vvoda:\n\n";
    cout<<"\t1.Vvod vruchnuy\n";
    cout<<"\t2.Iz faila\n\n";
    cout<<"Vach variant: ";
    cin>>menu;    
    switch(menu)
    {
             case 1:
                               do
                                 {
                                          cout<<"Vvedite poradok matrici:\n";
                                          cout<<"n = "; 
                                          cin>>dn;
                                          if((n = INT_MAX) < dn)
                                                  cout<<"Vvedennoe chislo previshaet predel "<<n<<"\n";
                                          else
                                          {
                                                  try
                                                  {
                                                  if((matr=new int *[(n = int(dn))]) == NULL)
                                                          cout<<"Oshibka videleniy pamyti - ccedite menche n\n";
                                                  }
                                                  catch(...)
                                                  {
                                                          matr = NULL;
                                                  }
                                          }
                                 }  
                                 while(INT_MAX < dn || matr == NULL);
                  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<<"Vvedite imy faila: ";
                  cin>>nameInput;
                  f1=fopen(nameInput,"r");
                  while (f1 == NULL)//цикл от ошибок,если не сущевствует файла1
                  {
                        cout<<"\tOshibka otkritiy faila!\n";
                        cout<<"Vvedite imy faila: ";   //спрашиваешь имя
                        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("U matrix net %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<<"\nNetochniy vvod nomera!";break;
    }    
        getch();
}
Вот в общем полный код что получилось
Нужно сделать если ввдена матрица неверно то программа просто завершалась.Ду вайл убераю вылетает. не просило еще раз ввести.Ну и ранее пост там вопрос еще

Добавлено через 28 минут
ответь в пм по вопросу который отписал
 
Текущее время: 18:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru