Страница 1 из 1

неправильно работает программа

Добавлено: 26 апр 2013, 01:14
Respected
посмотрите кому не лень код, что я сделал неправильно?) записываю в первый файл размерность матрицы, и из второго файла хочу в начале просмотреть исходную матрицу, затем результатирующую матрицу (в данной случае транспонированную). исходную матрицу из второго файла вроде выводит, а результат не выводит почему то!

Код: Выделить всё

#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
 
//------------GLOBAL PARAMETRI-----------------------------
 
FILE *f,*f1,*f2;
int k;
int a[30][30], i, j, r;
 
//------------------FUNCTIONS------------------------------
void menu();
void create();
void view();
void read();
//------------------------------------------------
void main()
{
    menu();
}
 
//------------------MENU-----------------------------------
 
void menu()
{
     int c;
     clrscr();
     cout<<"||==============================||"<<endl;
     cout<<"||            MENU              ||"<<endl;
     cout<<"||==============================||"<<endl;
     cout<<"|| 1.Create file                ||"<<endl;
     cout<<"|| 2.Read                       ||"<<endl;
     cout<<"|| 3.Prosmotr                   ||"<<endl;
     cout<<"|| 4.Exit                       ||"<<endl;
     cout<<"||==============================||"<<endl;
 
     cout<<"\nViberite deistvie: ";
     do
     {
        c=getch();
        switch(c)
        {
            case 49: create();
            case 50: read();
            case 51: view();
            case 52: exit(0);
        }
     }
     while((c<49)||(c>52));
}
 
//--------------------READING-----------------------------
 
void read()
{
      char fname1[10], fname2[10];
      clrscr();
      cout<<"Vvedite imya faila dlya read: ";
      gets(fname1);
      f1=fopen(fname1, "r");
      cout<<"Vvedite imya faila dlya zapisi: ";
      gets(fname2);
      f2=fopen(fname2, "w");
      fscanf(f1, "%d", &k);
      for(i=0; i<k; i++)
            for(j=0; j<k; j++)
                 fscanf(f1, "%d", &a[i][j]);
      for(j=0; j<k; j++)
          {
             r=a[i][j];
             a[i][j]=a[j][i];
             a[j][i]=r;
          }
      cout<<"\nTransponirovannaya matrica:\n\n";
      for(i=0; i<k; i++)
            for(j=0; j<k; j++)
                      fprintf(f2, "%d", a[j][i]);
      cout<<"\nKONEC";
      fclose(f1);
      fclose(f2);
      getch();
      menu();
}
 
//----------------ZAPIS----------------------------
 
void create()
{
     char fname1[10];
     clrscr();
     cout<<"Vvedite imya faila: ";
     gets(fname1);
     f1=fopen(fname1, "w");
     randomize();
     cout<<"Razmernost matrici: k=";
     cin>>k;
     fprintf(f1, "%d ", k);
     for(i=0; i<k; i++)
          for(j=0; j<k; j++)
                {
                      a[i][j]=random(30);
                      fprintf(f1, "%d ", a[i][j]);
                }
     cout<<endl<<"Zapisano v fail!";
     fclose(f1);
     getch();
     menu();
}
//-----------------------------------------------
void view()
{
      char fname[10];
      clrscr();
      cout<<"Vvedite imya faila dlya read: ";
      gets(fname);
      f=fopen(fname, "r");
      fscanf(f, "%d", &k);
      cout << "k=" << k << endl;
      for(i=0; i<k; i++)
            for(j=0; j<k; j++)
                 fscanf(f, "%d", &a[i][j]);
      fclose(f);
      cout<<" matrica:"<<endl;
     for(i=0; i<k; i++)
         {
            for(j=0; j<k; j++)
                cout << a[i][j] << "   ";
            cout << endl;
         }
      cout<<"\nKONEC";
      getch();
      menu();
}

Re: неправильно работает программа

Добавлено: 26 апр 2013, 15:32
Romeo
По той причине, что на момент выполнения вот этого цикла i равно k, то этот цикл шерстит данные вне матрицы, что чревато нехорошими вещами:

Код: Выделить всё

      for(j=0; j<k; j++)
          {
             r=a[i][j];
             a[i][j]=a[j][i];
             a[j][i]=r;
          }
Предлагаю убрать его, так матрица всё равно транспонируется за счёт смены индексов при выводе (а).

Фантастик акция Купить Replay или модные Джемпер Replay 2013 бренда Replay

Добавлено: 09 май 2013, 09:38
MarishafealaSoke
Скоро лето!
День добрый пользователи форума forum.developing.ru, сегодня пользователь под ником Karolino4kaCer просила меня сообщить последние новинки Джемпер Replay в 2013 году, а так же брюк бренда Replay, так вот наконец то нашла время для этого, админы прошу не удалять, а перенести в соответствующий раздел, если я ошиблась например Мужская одежда/Джемперы и свитеры
))) всех обнимаю


Джемпер Replay стоимость 4900 РУБ..
Если Вам понравились Джемпер Replay, нажмите кнопку "GO!" ниже чтоб узнать где выгодней всего купить Джемпер Replay бренда Replay

Изображение Изображение


посмотрите другую модную одежду

Категория: Мужская одежда/Джемперы и свитеры
купить
Бренд: купить Джемпер Replay Replay

А вот еще ключевые слова по которым люди ищут Джемпер Replay Replay:
- купить Джемпер Replay Replay
- заказать Джемпер Replay Replay
- цена Джемпер Replay Replay
- интернет магазин Мужская одежда/Джемперы и свитеры
Джемпер Replay Replay

- фото Джемпер Replay Replay
- Джемпер Replay 2012
- интернет магазин Джемпер Replay Москва
- новинки Джемпер Replay 2013
- модные Джемпер Replay 2013
- Джемпер Replay для свадьбы
- купить Джемпер Replay Москва

- купить Джемпер Replay Киев
- купить Джемпер Replay Санкт-петербург
- интернет магазин Джемпер Replay Москва


купить одежду
заказать одежду
купить обувь
заказать обувь
купить женскую одежду
купить мужскую одежду
заказать мужскую одежду
заказать женскую одежду
купить сумку
заказать сумку
купить одежду через интернет
заказать одежду через интернет
купить одежду дешево
где дешево купить одежду




#$#

Супер предложение Купить Replay или модные Джемпер Replay 2013 бренда Replay

Добавлено: 09 май 2013, 09:44
MarishafealaSoke
Скоро лето!
Hello пользователи форума forum.developing.ru, сегодня пользователь под ником Karolino4kaCer просила меня сообщить супермодные новинки Джемпер Replay в 2013 году, а так же брюк бренда Replay, так вот наконец то нашла время для этого, админы прошу не удалять, а перенести в соответствующий раздел, если я ошиблась например Мужская одежда/Джемперы и свитеры
))) всех целую


Джемпер Replay стоимость 4900 РУБ..
Если Вам нравится Джемпер Replay, нажмите кнопку "GO!" ниже чтоб узнать где выгодней всего купить Джемпер Replay бренда Replay

Изображение Изображение


посмотрите другую красивую одежду

Категория: Мужская одежда/Джемперы и свитеры
купить
Бренд: купить Джемпер Replay Replay

А вот еще ключевые слова по которым люди ищут Джемпер Replay Replay:
- купить Джемпер Replay Replay
- заказать Джемпер Replay Replay
- цена Джемпер Replay Replay
- интернет магазин Мужская одежда/Джемперы и свитеры
Джемпер Replay Replay

- фото Джемпер Replay Replay
- Джемпер Replay 2012
- интернет магазин Джемпер Replay Москва
- новинки Джемпер Replay 2013
- модные Джемпер Replay 2013
- Джемпер Replay для свадьбы
- купить Джемпер Replay Москва

- купить Джемпер Replay Киев
- купить Джемпер Replay Санкт-петербург
- интернет магазин Джемпер Replay Москва


купить одежду
заказать одежду
купить обувь
заказать обувь
купить женскую одежду
купить мужскую одежду
заказать мужскую одежду
заказать женскую одежду
купить сумку
заказать сумку
купить одежду через интернет
заказать одежду через интернет
купить одежду дешево
где дешево купить одежду




#$#

Сюрприз

Добавлено: 13 май 2013, 05:19
MarishafealaSoke
Вот разговор будет об этом Эта поза считается одной из непредсказуемо? А так ли друзья желали? начавшийся лет десять назад по этому поводу
которые помогут вам на такой