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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2014, 00:05   #1
lisica198808
Пользователь
 
Регистрация: 06.11.2012
Сообщений: 64
По умолчанию не работает rand. доработка програмки.C++

Почему-то не работает rand в моей учебной програмке. При выводе матрицы на экран выбивает безумные цифры вне заданного диапазона. Как сделать чтоб выводились случайные значения по диапазону?
и хотелось бы чтоб матрица выглядела более аккуратно - зрительно в консольке были видны строки и столбики - как это сделать(у меня все идет строкой почему-то)???
и в массиве значения не меняются случайно после ввода количества элементов. Почему??
что я не вижу или делаю не так?
Код:
#include<stdio.h>
#include<iostream>/*zagolovochnij fajl s klassami, funktsijami i peremennimi dlja organizacii vvoda-vivoda v jazike programmirovaniya C++*/
#include<stdlib.h>

using namespace std;/*ob'javlenie prostranstva imen  std.*/

class matr;
class mas
    {float *a;float min;
     int n; int kol;
      public:
         mas();
         void massiv();
         friend void vivod_mas(mas &);
         void minimym();
         void kolichestvo();
         void vivod_min();
         void vivod_kol();
         friend void gde(mas, matr);/*dru*estvennij klass, v kotorom iwetsja gle bol'she minimymov v massive ili matrice*/
         ~mas(){delete[]a; puts("\nrabotal destruktor massiva\n");}
     };

  mas::mas()
    {cout<<"razmer massiva= "; cin>>n;
      puts("\nrabotal konstruktor massiva");
    }  
  void mas::massiv()
  {a=new float[n];
     for(int i=0;i<0;i++)
     {*(a+i)=rand() % 101 - 50;}/*ot -50 do 50  ili  rand() % 201 - 100 ot -100 do 100 */
       }  
 /***********************************************/ 
  void vivod_mas(mas& o)/*vivodit massiv na ekran*/
     {printf("\nmassiv:");
       for(int i=0;i<o.n;i++)
       printf("%3.2f ", *(o.a+i));
       printf("\n");
     }  
/**********************************************/     
  void mas::minimym()/*minimalnij element i ih koli4estvo*/
     {min=10000;
       for (int i=0;i<n;i++)
        {if (*(a+i)<min) min=*(a+i);}
     }
/**********************************************/   
  void mas::vivod_min()
     {printf("\nmin massiva= %3.2f ",min); } 
 /**********************************************/    
  void mas::kolichestvo()/*esli est' elementi ravnie minimymy, s4itaetsja ih koli4estvo */
     {kol=0;
      for (int i=0;i<n;i++)
       {if (*(a+i)==min) kol++;}
     }  
/**********************************************/    
  void mas::vivod_kol()
   {printf("\nkoli4estvo minimal'nih elementov massiva = %d ",kol); } 
/*_________________________________________________________*/
class matr
   {float *b,min;
       int n; int m;int kol;
       public: 
          matr();
          void matrica();
          void vivod_matr();
          void minimym();
          void vivod_min();
          void kolichestvo();
          void vivod_kol();
          friend void gde(mas, matr);/*dru*estvennij klass, v kotorom iwetsja gle bol'she minimymov v massive ili matrice*/
          ~matr(){delete[]b; puts("\nrabotal destruktor matrici\n");}
     };
  matr::matr()
    {printf("\nvvedite razmernost n*m: ");
     scanf("%d %d",&n,&m);
     puts("\nrabotal konstruktor matrici\n");    
    }  
/******/
void matr::matrica()
{b=new float[n*m];
     for(int i=0;i>n;i++)
     for(int j=0;j>m;j++)
      {*(b+i*m+j)=rand() % 101 - 50;}/*ot -50 do 50*/
     
     }
/****************************************/     
  void matr::vivod_matr()/*vivodit matrici na ekran*/
    {printf("\nmatrica:\n"); 
     for(int i=0; i<n; i++)
     {for(int j=0;j<m;j++)
       printf("%3.2f ", *(b+i*m+j));
     }printf("\n");
    }
/**********************************************/       
  void matr::minimym()
    {min=*b; 
     for(int i=0;i<n;i++)
     for(int j=0;j<m;j++)
      {if (*(b+i*m+j)<min) min=*(b+i*m+j);
      if (*(b+i*m+j)==min) kol++;}
    } 
/**********************************************/       
  void matr::vivod_min()
    { {printf("\nmin matrici=%3.2f ",min);}  }
/**********************************************/         

 void matr::kolichestvo() /*esli est' elementi ravnie minimymy, s4itaetsja ih koli4estvo */
   {kol=0;
     for(int i=0;i<n;i++)
     for(int j=0;j<m;j++)
      {if (*(b+i*m+j)==min) kol++;}
    }  
/**********************************************/    
  void matr::vivod_kol()
    {printf("\nkoli4estvo minimal'nih elementov matrici =%d",kol);}     
/**********************************************/            
  void gde(mas d,matr c) 
    {int raznica;
     if (d.kol>c.kol)
       {raznica=d.kol-c.kol;printf("\nv massive elementov kotorie=min bol'we na %d", raznica);}
         else { raznica=c.kol-d.kol;  printf("\nv matrice elementov kotorie=min bol'we na %d", raznica);}
    }   
    
/**********/
    
int main()   
 {mas x;
  x.massiv();
  vivod_mas(x);
  system("pause");
  x.minimym();
  x.vivod_min();
  x.kolichestvo();
  x.vivod_kol();

  matr y;
  y.matrica();
  y.vivod_matr();
  y.minimym();
  y.vivod_min();
 y.kolichestvo();
  y.vivod_kol();
  gde(x,y);
 system("pause");
 }

Последний раз редактировалось lisica198808; 03.04.2014 в 00:28.
lisica198808 вне форума Ответить с цитированием
Старый 03.04.2014, 01:04   #2
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Код:
for(int i=0;i<0;i++)
Тебя ничего в этой строчке не смущает? )
Son Of Pain вне форума Ответить с цитированием
Старый 03.04.2014, 10:23   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Аналогично и тут:
Код:
for(int i=0;i>n;i++)
     for(int j=0;j>m;j++)
      {*(b+i*m+j)=rand() % 101 - 50;}/*ot -50 do 50*/
     
     }
p51x вне форума Ответить с цитированием
Старый 03.04.2014, 20:55   #4
lisica198808
Пользователь
 
Регистрация: 06.11.2012
Сообщений: 64
По умолчанию

это я исправила.. и матрица как надо выводится..

Код:
#include<stdio.h>
#include<iostream>/*zagolovochnij fajl s klassami, funktsijami i peremennimi dlja organizacii vvoda-vivoda v jazike programmirovaniya C++*/
#include<stdlib.h>

using namespace std;/*ob'javlenie prostranstva imen  std.*/

class matr;
class mas
    {float *a;float min;
     int n; int kol;
      public:
         mas();
         void massiv();
         friend void vivod_mas(mas &);
         void minimym();
         void kolichestvo();
         void vivod_min();
         void vivod_kol();
         friend void gde(mas, matr);/*dru*estvennij klass, v kotorom iwetsja gle bol'she minimymov v massive ili matrice*/
         ~mas(){delete[]a; puts("\nrabotal destruktor massiva\n");}
     };

  mas::mas()
    {cout<<"razmer massiva= "; cin>>n;
      puts("\nrabotal konstruktor massiva");
    }  
  void mas::massiv()
  {a=new float[n];
     for(int i=0;i<n;i++)
     {*(a+i)=rand() % 101 - 50;}/*ot -50 do 50  ili  rand() % 201 - 100 ot -100 do 100 */
       }  
 /***********************************************/ 
  void vivod_mas(mas& o)/*vivodit massiv na ekran*/
     {printf("\nmassiv:");
       for(int i=0;i<o.n;i++)
       printf("%3.2f ", *(o.a+i));
       printf("\n");
     }  
/**********************************************/     
  void mas::minimym()/*minimalnij element i ih koli4estvo*/
     {min=10000;
       for (int i=0;i<n;i++)
        {if (*(a+i)<min) min=*(a+i);}
     }
/**********************************************/   
  void mas::vivod_min()
     {printf("\nmin massiva= %3.2f ",min); } 
 /**********************************************/    
  void mas::kolichestvo()/*esli est' elementi ravnie minimymy, s4itaetsja ih koli4estvo */
     {kol=0;
      for (int i=0;i<n;i++)
       {if (*(a+i)==min) kol++;}
     }  
/**********************************************/    
  void mas::vivod_kol()
   {printf("\nkoli4estvo minimal'nih elementov massiva = %d ",kol); } 
/*_________________________________________________________*/
class matr
   {float *b,min;
       int n; int m;int kol;
       public: 
          matr();
          void matrica();
          void vivod_matr();
          void minimym();
          void vivod_min();
          void kolichestvo();
          void vivod_kol();
          friend void gde(mas, matr);/*dru*estvennij klass, v kotorom iwetsja gle bol'she minimymov v massive ili matrice*/
          ~matr(){delete[]b; puts("\nrabotal destruktor matrici\n");}
     };
  matr::matr()
    {printf("\nvvedite razmernost n*m: ");
     scanf("%d %d",&n,&m);
     puts("\nrabotal konstruktor matrici\n");    
    }  
/******/
void matr::matrica()
{b=new float[n*m];
 for(int i=0;i>n;i++)
     for(int j=0;j>m;j++)
      {*(b+i*m+j)=rand() % 101 - 50;}/*ot -50 do 50*/
     
     }
     
     
/****************************************/     
  void matr::vivod_matr()/*vivodit matrici na ekran*/
    {printf("\nmatrica:\n"); 
     for(int i=0; i<n; i++)
     {for(int j=0;j<m;j++)
      cout<<*(b+i*m+j)<< " ";
      cout << "\n";
     }}
/**********************************************/       
  void matr::minimym()
    {min=*b; 
     for(int i=0;i<n;i++)
     for(int j=0;j<m;j++)
      {if (*(b+i*m+j)<min) min=*(b+i*m+j);
      if (*(b+i*m+j)==min) kol++;}
    } 
/**********************************************/       
  void matr::vivod_min()
    { {printf("\nmin matrici=%3.2f ",min);}  }
/**********************************************/         

 void matr::kolichestvo() /*esli est' elementi ravnie minimymy, s4itaetsja ih koli4estvo */
   {kol=0;
     for(int i=0;i<n;i++)
     for(int j=0;j<m;j++)
      {if (*(b+i*m+j)==min) kol++;}
    }  
/**********************************************/    
  void matr::vivod_kol()
    {printf("\nkoli4estvo minimal'nih elementov matrici =%d",kol);}     
/**********************************************/            
  void gde(mas d,matr c) 
    {int raznica;
     if (d.kol>c.kol)
       {raznica=d.kol-c.kol;printf("\nv massive elementov kotorie=min bol'we na %d", raznica);}
         else { raznica=c.kol-d.kol;  printf("\nv matrice elementov kotorie=min bol'we na %d", raznica);}
    }   
    
/**********/
    
int main()   
 {mas x;
  x.massiv();
  vivod_mas(x);
  system("pause");
  x.minimym();
  x.vivod_min();
  x.kolichestvo();
  x.vivod_kol();

  matr y;
  y.matrica();
  y.vivod_matr();
  y.minimym();
  y.vivod_min();
 y.kolichestvo();
  y.vivod_kol();
  gde(x,y);
 system("pause");
 }
но rand до сих пор не работает в указанном диапазоне. почему?
lisica198808 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
програмки... Arhi555 Паскаль, Turbo Pascal, PascalABC.NET 8 09.09.2012 19:46
rand() неправильно работает demigod82 Общие вопросы C/C++ 7 02.04.2012 17:35
rand() noxior Общие вопросы C/C++ 2 23.02.2012 04:47
rand() не очень работает genrix Общие вопросы C/C++ 4 27.12.2011 10:58
Програмки на С++ GeFi Помощь студентам 1 29.05.2010 16:48