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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2009, 12:30   #1
ciaonataha
Форумчанин
 
Регистрация: 12.02.2009
Сообщений: 150
По умолчанию считивать значения в матритцы и вектора

Помогите пожалуйста разобраться. Эта прога должна считивать значения в матритцы и вектора. Как ей объяснить разнитцу между матрицей GHSERp и TC . Она считивает только GHSERp, а вторую TC считивать не хочет
Код:
int Gibbs::calc_spaces(char *str) //Schitaet kol-vo probelov v strochke, otekaya nenujnie

{

  char *tmp;

  int ans = 0;

  bool sp = false;

  while (*str == ' ')

    ++str;

  for (tmp = str; *tmp; ++tmp)

  {

    if (isdigit(*tmp) && sp)

    {

      ++ans;

      sp = false;

    }

    if (*tmp == ' ')

      sp = true;

  }

  return ans;

}
Код:
  int nm; //nomer matrici, kotoruu zapolnnyaem

  fp=fopen(datafile,"rt");

  char str[256];

  nm = 0;

  bool wasNumbers = false;

  while (!feof(fp))

  {

    str[0] = 0;

    char *tmp = fgets(str, sizeof(str), fp);

    if (!tmp || str[0] == 0) //Esli nichego ne schitali

      break; //Vihodim


    if (str[0] == '/') //Kommentariy

    {

      if (wasNumbers)//Esli mi schtali chisla iz matrici

      {

        wasNumbers = false;

        ++nm; //Znachit ko vtoroy perehodim

      }

      continue;

    }
   int sp = calc_spaces(str); //Schitaem kol-vo probelov

   if (sp == 4) nm = 4;
   if (sp == 6 && nm == 4) nm = 5;
   if (sp == 7) nm = 7;
//   if (sp == 4 && nm == 4) nm = 8;

    if (nm == 0)

    {

      int i ;

      double v = 0.;

      sscanf(str, "%d %lf", &i, &v);

      y1[i] = v;
      wasNumbers = true;

    }

    if (nm == 1)

    {

      int i ;

      double v = 0.;

      sscanf(str, "%d %lf", &i, &v);

      y2[i] = v;

      wasNumbers = true;

    }

    if (nm == 2)

    {

      int i ;

      double v = 0.;

      sscanf(str, "%d %lf", &i, &v);

      m[i] = v;

      wasNumbers = true;

    }
   if (nm == 3)
    {
    nm = 4;
    char *tmp = str;
    for (int i = 0; i<=sp; i++){
    double a = 0.;
    sscanf(tmp,"%lf",&a);
    Tr(i) = a;
    tmp = strchr(tmp, ' ');
    if(!tmp)
    break;
    ++tmp;
    wasNumbers = true;
    }
    continue;
    }
  if (nm == 4)
    {
      int t , i , j , l ;

      double v = 0.;

      sscanf(str, "%d %d %d %d %lf", &t, &i, &j, &l, &v);

      GHSERp(t,i,j,l) = v;
      wasNumbers = true;
    }
  if (nm == 5)
   {
      int t , i, j, k, l, m;

      double v = 0.;

      sscanf(str, "%d %d %d %d %d %d %lf", &t, &i, &j, &k, &l, &m, &v);

      L1ini(t,i,j,k,l,m) = v;
      wasNumbers = true;
   }
  if (nm == 6)
   {
      int t, i, j, k, l, m;

      double v = 0.;

      sscanf(str, "%d %d %d %d %d %d %lf", &t, &i, &j, &k, &l, &m, &v);

      L2ini(t,i,j,k,l,m) = v;
      wasNumbers = true;
   }
  if (nm == 7)
   {  
      nm = 8;
      int t, i, j, k, l, m, n;

      double v = 0.;

      sscanf(str, "%d %d %d %d %d %d %d %lf", &t, &i, &j, &k, &l, &m, &n, &v);

      L0ini(t,i,j,k,l,m,n) = v;
      wasNumbers = true;
   }
  if (nm == 8)
  {
      int t , i , j , l ;

      double v = 0.;

      sscanf(str, "%d %d %d %d %lf", &t, &i, &j, &l, &v);

      TC(t,i,j,l) = v;
      wasNumbers = true;
  } 
 }
fclose(fp);
ciaonataha вне форума Ответить с цитированием
Старый 20.04.2009, 12:31   #2
ciaonataha
Форумчанин
 
Регистрация: 12.02.2009
Сообщений: 150
По умолчанию

Tekstovii fail
Вложения
Тип файла: txt ferrite.txt (12.1 Кб, 121 просмотров)
ciaonataha вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработчик вектора прерывания Festovec Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 07.04.2010 10:05
Пердача вектора в функцию по ссылке AlexeyLed Общие вопросы C/C++ 1 02.03.2009 19:44
Перехват вектора 09Н. Assembler. vladb2000 Помощь студентам 2 14.12.2007 11:31