Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2011, 13:27   #1
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию доработать пункт меню

Код:
 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;}
Помогите доработать,к результате в окне что то не то

Последний раз редактировалось a.n.o.n.i.m; 01.11.2011 в 14:27.
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 01.11.2011, 13:35   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Может, хотя бы обрамите код тегом CODE и какие-никакие комментарии напишете? А то совершенно непонятно, что этот код должен делать.
Сразу обращаю внимание, что masiv не используется после объявления и для него не вызывается delete[].
Abstraction вне форума Ответить с цитированием
Старый 01.11.2011, 13:48   #3
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Цикл обработки ошибок открытия файла через функцию:
Код:
FILE* OpenFile()
{
     char nameInput[30];
     cout<<"Введите имя файла: ";   //спрашиваешь имя
     cin>>nameInput;                //считываешь имя
     return fopen(nameInput,"r");   //открытие файла
}
Код:
     FILE *f1;
     while ( (f1 = OpenFile()) == NULL)//цикл от ошибок,если не существует файла
     {
        cout<<"\tОшибка открытия файла!\n";
     }
An1ka вне форума Ответить с цитированием
Старый 01.11.2011, 14:26   #4
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

второй пункт меню
вводится имя файла
считвается с него матрица вида
4 ->размерность
1 2 3 4
4 5 6 7
7 8 9 0
4 7 1 8

вот вообщем что пункт делает,подправтье ошибки
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 01.11.2011, 14:44   #5
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

И что выводится? То есть, я бы убрал fflush, ибо непонятно, зачем он там и использовал бы либо printf/scanf, либо cin/cout, но вроде бы должно работать и так.
Abstraction вне форума Ответить с цитированием
Старый 01.11.2011, 14:49   #6
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

а как еще сделать проверку что если в файле матрица не полностью заполнена
4
1 2 3 4
4 5 6 7
7 8 9 0
4 7
такая матрица то ошибка?
Код:
case 2:{
                  char nameInput[30];
                  cout<<"Введите имя файла: ";
                  cin>>nameInput;
                  FILE *f1=fopen(nameInput,"r");
                  while (f1 == NULL)//цикл от ошибок,если не сущевствует файла1
                  {
                        cout<<"\tОшибка открытия файла!\n";
                        cout<<"Введите имя файла: ";   //спрашиваешь имя
                        cin>>nameInput;           //считываешь имя
                        f1 = fopen(nameInput,"r");//открытие файла1
                  }
                  fscanf(f1, "%d", &n);
                  int **matr=new int *[n];
                  for (i=0;i<n && !foef(f1);i++)
                  {
                       matr[i]=new int[n]; 
                       for (j=0;j<n && !foef(f1);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;}
    }
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 01.11.2011, 14:53   #7
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Функции семейства scanf возвращают количество прочитанных переменных.
Abstraction вне форума Ответить с цитированием
Старый 01.11.2011, 15:05   #8
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

можно в коде
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 01.11.2011, 15:21   #9
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Код:
if(fscanf (f1,"%d ",&matr[i][j]) != 1){
    //What the hell?!
    fprintf(stderr, "Incorrect file!\n");
    return -1;
}
Abstraction вне форума Ответить с цитированием
Старый 01.11.2011, 15:37   #10
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

код вставляю ,ошибку выдает,можете поправить?
a.n.o.n.i.m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрыть пункт меню SKS Общие вопросы Delphi 7 25.10.2011 06:26
Выделенный пункт активной ссылки меню Next HTML и CSS 3 09.08.2010 19:12
И сново sendMessage =) Как нажать пункт верхнего меню и меню правой кнопки? TwiX Win Api 9 15.10.2009 01:57
Добавить в системное меню пункт не совего окна Zirr Win Api 0 24.05.2009 16:02
Отключить пункт меню (Программно) ScreN Общие вопросы Delphi 1 27.12.2008 13:40