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

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

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

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

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

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

как сделать чтобы программа сама определяла размерность матрицы в файле????? (динамический массив)

Последний раз редактировалось a.n.o.n.i.m; 03.06.2011 в 15:59.
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 03.06.2011, 11:55   #2
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

А сам по себе код для 1 работает?
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 03.06.2011, 12:02   #3
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

да работает,программа уже считает под 1 как надо,но зависает http://i065.radikal.ru/1106/5d/75719043cb56.jpg скрин

и еще как реализовать чтобы под 2 бралась матрица из файла и складывалась с единичной?
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 03.06.2011, 12:08   #4
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
По умолчанию

сделайте отдельную функцию и запустите программу в режиме пошаговой отладки, скорее всего где то проблема в циклах...
MeTeOpA вне форума Ответить с цитированием
Старый 03.06.2011, 12:19   #5
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

как сделать чтобы программа сама определяля размерность матрицы?????

Последний раз редактировалось a.n.o.n.i.m; 03.06.2011 в 15:10.
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 03.06.2011, 22:17   #6
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
По умолчанию

Код:
#include <iostream.h>

....
cout<<"Vvedite razmernost' matrici\n";
cin>>n; //n-размерность матрицы

....
MeTeOpA вне форума Ответить с цитированием
Старый 03.06.2011, 23:19   #7
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

1. В начало файла можно записать размерность матрицы
2. Если матрица квадратная, то можно взять размер файла, поделить его на 2, а потом еще поделить на размер одного элемента. Получим Число N. Тогда размерность матрицы будет NхN
pu4koff вне форума Ответить с цитированием
Старый 04.06.2011, 10:17   #8
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

Матрица квадратная,появилось идея поссчитать количество элементов в файле и взять квадрать из количества,как раз будет размерность,только как посчитать количество элементов в файле?
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 04.06.2011, 10:59   #9
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от a.n.o.n.i.m Посмотреть сообщение
Матрица квадратная,появилось идея поссчитать количество элементов в файле и взять квадрать из количества,как раз будет размерность,только как посчитать количество элементов в файле?
Определяете размер файла (как вариант, через fseek идёте в конец файла, а через fgetpos определяете положение, это и будет размер файла в байтах).
Потом определяете размер элемента sizeof(int) и делите размер файла на размер элемента
pu4koff вне форума Ответить с цитированием
Старый 04.06.2011, 11:04   #10
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

Код:
int **A, **E, **resultat, i, j; //матрицы и переменнные
                  int size;
                  char nameInput[30];//имя файла(длина)
                  char nameOutput[30];//имя файла(длина)
                  FILE *f1,*f2;
                  printf("Введите имя файла: ");
                  scanf("%s",&nameInput);
                  f1=fopen(nameInput,"r");//открываем файл1
                  while (f1 == NULL)//цикл от ошибок,если не сущевствует файла1
                  {
                        printf("\tОшибка открытия файла!\n");
                        printf("Введите имя файла: ");   //спрашиваешь имя
                        scanf("%s",nameInput);       //считываешь имя
                        f1 = fopen(nameInput,"r");//открытие файла1
                  }
                  fflush(f1);
                  fscanf(f1, "%d", &size);
                  A = (int**)calloc(size, sizeof(int*));
                  E = (int**)calloc(size, sizeof(int*));
                  resultat = (int**)calloc(size, sizeof(int*));
                  for (i = 0; i < size; i++)
                  {
                       A[i] = (int*)calloc(size, sizeof(int));
                       E[i] = (int*)calloc(size, sizeof(int));
                       resultat[i] = (int*)calloc(size, sizeof(int));
                  }
                  for (i=0;i<size;i++)
                       {
                       for (j=0;j<size;j++)
                       fscanf (f1,"%d ",&A[i][j]);
                       }
                  for (i=0; i<size; i++)//цикл заполнения единичной матрицы
                      for (j=0; j<size; j++)
                      {
                      if (i==j)
                      E[i][j]=1;
                      else 
                      E[i][j]=0;
                      }
                  for (i=0;i<=size-1;i++)
                      {
                      for (j=0;j<=size-1;j++)
                      printf ("%3d", A[i][j]);
                      printf ("\n");
                      }
                 printf("\nВведите имя файла с результатом: ");
                 scanf("%s",&nameOutput);
                 f2=fopen(nameOutput,"w");//открываем файл2
                 for (i=0; i<size; i++) //цикл вычесления результативной матрицы 
                     {
                     for (j=0; j<size; j++) 
                         {
                              A[i][j]*=A[i][j];
                              resultat[i][j]=(E[i][j]+A[i][j]);//получение резудьтативной матрицы
                              fprintf(f2,"%d ",resultat[i][j]);//сохранение данных результата
                         }
                     fprintf(f2,"\n");
                     }
                 printf("\n"); //Переход на следующую строку
                 printf("\tОперация выполнена(результат)\n");
                 for (i = 0; i < size ; i++) //цикл вывода результата на экран монитора
                 {
                 printf("\n\n"); //Переход на следующую строку
                 for (j = 0; j < size ; j++)
                       {
                       printf(" %i", resultat[i][j]); //На экран выводится результат нашего ввода
                       }
                 }
                 for (i = 0; i < size; i++)
                     {
                     free(A[i]);
                     free(E[i]);
                     free(resultat[i]);
                     }
                 free(A);
                 free(E);
                 free(resultat);
                 fclose(f1);//закрытие файла1
                 fclose(f2);//закрытие файла2
так сделал, в файле вид такой
3
1 2 3
4 5 6
7 8 9 первая цифра размерность

это делал по частям собирал код пока не зарботал я не пойму что делает строка int size; и fflush(f1);

Последний раз редактировалось a.n.o.n.i.m; 04.06.2011 в 11:08.
a.n.o.n.i.m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать меню и подключить свое меню OgE®_M@G Microsoft Office Excel 9 26.11.2010 07:41
меню как на сайте p&g (меню ввиде таблицы) ilma55 WordPress и другие CMS 0 19.09.2010 19:09
И сново sendMessage =) Как нажать пункт верхнего меню и меню правой кнопки? TwiX Win Api 9 15.10.2009 01:57
Для доступа к пунктам главного меню клавиши ALT + подчеркнутая буква меню в офис 2007? Окоча Юра Microsoft Office Word 1 24.02.2009 12:29
Меню с Items в виде набора Bitmap (как меню редактирования в Word'е) chandrasecar Мультимедиа в Delphi 7 14.01.2009 09:20