forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   Мои вопросы по С++ (http://forum.boolean.name/showthread.php?t=7754)

Chakki 02.02.2009 19:46

Мои вопросы по С++
 
В свзи с тем что "чуёба" (с) Импер .. заставляет учить С++ приходится решать задачки там, а в С++ я нуб нубом)

так вот там задачка
задан двумерный массив, надо найти все неотрицательные значения и найти их среднее значение(вроде так)
Код:

#include <math.h>
#define m 3
#define n 2
// и еще инклуды, непомню точно)
using namespace std;

int main();
{
 int S,i,j,a,d,mass[m][n];
 int end;
 
 a=0;
 d=0;

 for(i=0;i<m;i++)
 { for(j=0;j<n;j++)
  {
    mass[i][j] = rand(); // или cin, мне все равно)
  }
  }
//Вывод исходного массива
  cout << "Исходный массив: ";
 for(i=0;i<m;i++)
 { for(j=0;j<n;j++)
  {
    cout << mass[i][j];
  }
  }
//----------------------------
  for(i=0;i<m;i++)
  { for(j=0;j<n;j++)
    {
      if(mass[i][j] >= 0)
        {
            a = a +mass[i][j];
            d++;
          }
      }
    }

S=a/d;
cout << "Результат: ";
cout S;

Вроде все работает и компиляция проходит, но выдает странное число...
весь код облазил ниче не нашол)))
и еще не понимаю зачем нужен define, если можно просто в теле программы написть int m=3; int n =2;
Да и не закрывайте темку, по мере "чуёбы" буду писать сюда еще вопросы.. если будут возникать)

HolyDel 02.02.2009 19:58

Ответ: Мои вопросы по С++
 
rand() - загадывает случайное. случную последовательность 32нулей ил единиц.
чтобы получить число в какаих то человеческих раницах, а не -2^31 ... 2^31 - 1, надо брать остаток от целочисленного деления - оператор %.

например случайное число от 0 до 100 ето rand() % 101.
от -100 до 100 ето rand()%201 - 100.

ну и так далее.

Код:

#define m 3
#define n 2

очень плохо. лучше пиши const int m = 3, n = 2;

выводить лучше так:
Код:

for(i=0;i<m;i++)
 { for(j=0;j<n;j++)
  {
    cout << mass[i][j];
  }
cout<<endl;
  }

S - лучше сделать double.

ну и есть оператор += если что.

Chakki 02.02.2009 20:01

Ответ: Мои вопросы по С++
 
да, про дефайн я сам усомнился, но у препода не спросил
rand() я менял на паре, и вводил числа с помощью cin
Это все конечно хорошо.
Но проблема то осталась проблемой=(
он почемуто выводит мне страшное пятизначное число, когда должен вывести не более двухзначного
(с клавиатуры я вводил массив 1 2 3 4 5 6)

HolyDel 02.02.2009 20:08

Ответ: Мои вопросы по С++
 
Код:

#include <math.h>
#include <iostream>
const int m=3;
const int n=2;
// и еще инклуды, непомню точно)
using namespace std;

int main()
{
 int S,i,j,a,d,mass[m][n];
// int end;
 
 a=0;
 d=0;

 for(i=0;i<m;i++)
 { for(j=0;j<n;j++)
  {
    mass[i][j] = (rand()%21)-10; // или cin, мне все равно)
  }
  }
//Вывод исходного массива
  cout << "Исходный массив: ";
 for(i=0;i<m;i++)
 { for(j=0;j<n;j++)
  {
    cout << mass[i][j]<<(char)9;
  }
 cout<<endl;
  }
//----------------------------
  for(i=0;i<m;i++)
  { for(j=0;j<n;j++)
    {
      if(mass[i][j] >= 0)
        {
            a = a +mass[i][j];
            d++;
          }
      }
    }

S=a/d;
cout << "Результат: "<<S<<endl;
}


Chakki 02.02.2009 20:18

Ответ: Мои вопросы по С++
 
ппц! оО
я аж афигел оО
запускаю у себя код который сам написал в первом посту и работает оО
в институте работал, выдовал СТРАШНЫЕ числа!
Вот что подрывает тягу учится - институтские компы оО
Но все равно спс, холидэл, есть чему поучится)))

Chakki 05.02.2009 21:30

Ответ: Мои вопросы по С++
 
Ребята, вот еще вопрос
Такая задачка, значит двумерный массив, целочисленный, размер не важен, там случайные числа, нужно зделать вывод массива по схеме спираль
ну тоесть вывод такой
1 число - ячейка (1.1)
2 число - чейка (1.2)
3 число - ячейка (1.3)
4 число - ячейка (2.3)
5 число - ячейка (3.3)
и так по спирали))))

мне не нужен код, я никак не могу понять какбы это зделать ... нужна идея, толчок)
помогите пожалуйста, а реализовать - я уж какнибудь сам (не для того же я тут, чтобы за меня решали)

HolyDel 05.02.2009 22:01

Ответ: Мои вопросы по С++
 
подсказка - "граница", "стенка"

Chakki 07.02.2009 10:15

Ответ: Мои вопросы по С++
 
Значит ночевал я не дома, и на бумаге написал вот это
Код:

int main(...)
{const int m = 3;
  const int n = 3;
  int i,,j,mass[m][n];
  //ввод чисел в массив
  for(i=0;i<m;i++)
  {for(j=0;j<n;j++)
    {mass[i][j]=rand()%101;} }
  //вывод исходного массива
  for(i=0;i<m;i++)
  {for(j=0;j<n;j++)
  {cout<<"Исходный массив: "<<mass[i][j]<<endl;} }
  //далее вывод по спирали
  j=0;
  for(i=0;i<m;i++)
  {cout<<"первая строка: "<<mass[i][j]<<endl;}
  i=m-1;
  for(j=0;j<n;j++)
  {cout<<"третий столбец: "<<mass[i][j]<<endl;}
  j=n-1;
  for(i=m-1;i>=0;i--)
  {cout<<"нижня строка задом наперед оО: "<<mass[i][j]<<endl;}
  i=0;
  for(j=n-1;j>0;j--)
  {cout<<"первый столбец бла бла: "<<mass[i][j]<<endl;}
  j=n-1;
  for(i=m-1;i<m-1;i++)
  {cout<<"конечный вывод(отрезок по центру): "<<mass[i][j]<<endl;}

решение той задачи, которая выше, но алгоритм плохой, только если столбцо и строк 3 и 3... как написать универсальный в голову ниче не приходит, может я чтото важное по работе с двумерными массивами пропустил?

NitE 07.02.2009 23:28

Re: Мои вопросы по С++
 
я с++ незнаю, но разве нелзя в твоем коде например вместо констант сделать считыватель количества строк и столбов ?

Chakki 09.02.2009 11:55

Ответ: Мои вопросы по С++
 
а я почти ниче в программировании не знаю, и думаю)
а пока приболел, работу временно остановил
да и еслибы зделал кое как, препод бы не поверил, мы такого еще не прошли, а мне надо по программе курса)


Часовой пояс GMT +4, время: 23:05.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot