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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2009, 20:36   #21
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Я просто не понимаю, что вы хотите сделать.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 29.03.2009, 20:42   #22
ciaonataha
Форумчанин
 
Регистрация: 12.02.2009
Сообщений: 150
По умолчанию

Именно для этого массива мне выводит:
Код:
 19  1 11 26 26  1  1  1 11 12 26  1 11 12 26  1  1  1 11 12 26 26  1  0
Может ето из-за того, что я не исползую getch() , так как мне надо установить библиотеку к нему?
ciaonataha вне форума Ответить с цитированием
Старый 29.03.2009, 20:45   #23
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от ciaonataha Посмотреть сообщение
Может ето из-за того, что я не исползую getch() , так как мне надо установить библиотеку к нему?
Нет. Это тут ни при чем. И вообще он там не нужен.
Наверняка вы что-нибудь изменили в программе.

Прикладываю исходник с экзешником. А также файл matrix с забитой туда матрицей.
Все работает.
Вложения
Тип файла: rar massiv.rar (5.5 Кб, 12 просмотров)
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 29.03.2009, 20:46   #24
ciaonataha
Форумчанин
 
Регистрация: 12.02.2009
Сообщений: 150
По умолчанию

Я хотела бы задать матрицу без четких размеров. Потому что, кагдый раз будет считывать и записивать в текстовый файл каждый раз разное колличество значений.
Например, матрица 3*2*2*3 = 36... Тоесть 36 значений в текстовом файле.
А,если считает в следующий раз 56 значений...то что тогда...
ciaonataha вне форума Ответить с цитированием
Старый 29.03.2009, 20:55   #25
ciaonataha
Форумчанин
 
Регистрация: 12.02.2009
Сообщений: 150
По умолчанию

я нашла ошибку. Вы написали, что считывание происходит как в случае бинарной матрицы
Код:
while(!feof(in))
 for(i=0;i<M1;i++)
  for(j=0;j<M2;j++)
   for(k=0;k<M3;k++)
    for(l=0;l<M4;l++)
     fscanf(in,"%lf",&MAT[i][j][k][l]);
Я же считываю матрицу(как матрицу в матрице):
Код:
double MAT[i1][j1][k1][l1];
while (!feof(in)){
for(i=0; i<i1; i++)
 for(l=0; l<j1; l++)
  for (j=0; j<k1; j++)
    for (k=0; k<l1; k++)
 fscanf(in,"%lf",&MAT[i][j][k][l]);}
ciaonataha вне форума Ответить с цитированием
Старый 29.03.2009, 20:58   #26
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Я хотела бы задать матрицу без четких размеров.
Ну вы бы так и сказали сразу..
Добавил ввод размерности.
Код:
#include <stdio.h>

int main()
{
const int M1=10, M2=10, M3=10, M4=10;
FILE *in;
FILE *out;
int i,j,k,l;
double MAT[M1][M2][M3][M4];
int V1[M1*M2*M3*M4], V2[M1*M2*M3*M4], V3[M1*M2*M3*M4], V4[M1*M2*M3*M4];
double Vz[M1*M2*M3*M4];
int vk=0;
int N1,N2,N3,N4;

printf("Vvedite N1: ");
scanf("%d",&N1);
printf("Vvedite N2: ");
scanf("%d",&N2);
printf("Vvedite N3: ");
scanf("%d",&N3);
printf("Vvedite N4: ");
scanf("%d",&N4);



in = fopen("matrix.txt","r");
out = fopen("sortie.txt","w");

while(!feof(in))
 for(i=0;i<N1;i++)
  for(j=0;j<N2;j++)
   for(k=0;k<N3;k++)
    for(l=0;l<N4;l++)
     fscanf(in,"%lf",&MAT[i][j][k][l]);

fclose(in);

 for(i=0;i<N1;i++)
  for(j=0;j<N2;j++)
   for(k=0;k<N3;k++)
    for(l=0;l<N4;l++)
     if(MAT[i][j][k][l]!=0)
      {
       V1[vk] = i;
       V2[vk] = j;
       V3[vk] = k;
       V4[vk] = l;
       Vz[vk++] = MAT[i][j][k][l];
      }

for(i=0;i<vk;i++)
 fprintf(out,"%d ",V1[i]);
fprintf(out,"\n");
for(i=0;i<vk;i++)
 fprintf(out,"%d ",V2[i]);
fprintf(out,"\n");
for(i=0;i<vk;i++)
 fprintf(out,"%d ",V3[i]);
fprintf(out,"\n");
for(i=0;i<vk;i++)
 fprintf(out,"%d ",V4[i]);
fprintf(out,"\n");
for(i=0;i<vk;i++)
 fprintf(out,"%1.0lf ",Vz[i]);

fclose(out);

return 0;
}
Цитата:
Вы написали, что считывание происходит как в случае бинарной матрицы
Что-то вы меня совсем запутали..
Программа работает не так как надо?

Я же еще на первой странице уточнил, является ли массив 4-мерным.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 29.03.2009 в 21:01.
Sazary вне форума Ответить с цитированием
Старый 29.03.2009, 21:05   #27
ciaonataha
Форумчанин
 
Регистрация: 12.02.2009
Сообщений: 150
По умолчанию

Я питаюсь распутать...
Но С++ не понимает, что это четырехмерная матрица.Поэтому считывание проходит как матрица в матрице:
Код:
while (!feof(in)){
for(i=0; i<i1; i++)
 for(l=0; l<l1; l++)
  for (j=0; j<j1; j++)
    for (k=0; k<k1; k++)
 fscanf(in,"%lf",&MAT[i][j][k][l]);}
ciaonataha вне форума Ответить с цитированием
Старый 29.03.2009, 21:07   #28
ciaonataha
Форумчанин
 
Регистрация: 12.02.2009
Сообщений: 150
По умолчанию

i и l индексы внешней матрицы, а j, k индексы внутренней матрицы
ciaonataha вне форума Ответить с цитированием
Старый 29.03.2009, 21:13   #29
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

ciaonataha
Итак. Ответьте вот на что:
Одномерный массив - это вектор. (например, 1, 2, 3...)
Двумерный массив - матрица. Существует в двумерном пространстве, то есть плоскости. Грубо говоря, квадрат.
Трехмерный массив - существует в трехмерном пространстве. То есть, это куб.
Четырехмерный массив - существует в четырехмерном пространстве. То есть, гиперкуб.

Хорошенько подумайте и ответьте: вам нужен этот самый гиперкуб?
Если да, то код выше.
Если нет, то объясните на словах (не в коде), что вам нужно.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 29.03.2009, 21:15   #30
ciaonataha
Форумчанин
 
Регистрация: 12.02.2009
Сообщений: 150
По умолчанию

спасибо большое за объяснение. понимание ко мне пришло.
ciaonataha вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в сглаженой матрице найти сумму модулей элементов расположенных ниже главной диагонали Sergeo_89 Паскаль, Turbo Pascal, PascalABC.NET 8 07.12.2010 00:02
Оптимизировать алгоритм вычисления сумм элементов главной и побочной диагонали в матрице - Delphi r9m Помощь студентам 5 04.02.2009 11:01
В прямоугольной матрице переставить столбцы так, чтобы сумма элементов столбца росла от первого столбца Aleo13 Помощь студентам 5 15.10.2008 18:34