Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Двумерные масивы 
:(
    Опции темы
Syltan
Дата 17.5.2010, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 301
Регистрация: 31.8.2009

Репутация: нет
Всего: -2



Вот на с++ чтоб сгенерировать случайные числа, и заполнить ими 2-мерный масив, нужно написать так:
Код

#include <iostream>
#include <conio.h>
#include <string.h>
#include <time.h>
#include <iomanip>
using namespace std;

int main()
{
    int mas[5][5];
    int i, j;
    
    srand(time(NULL));
    
    for (i = 0; i <5; i++)
    {
         cout<<endl;

          for (j = 0; j < 5; j++)
        {
            //Случайное число от -5 до 10
            mas[i][j] = -5 + rand() % 100;
        
            cout<<setw(5)<<mas[i][j]<<setw(5);
        }
    }

        cin.get();    

}




Пробывал на Яве, так и не вышло сделать так же само.
пробовал так:
Код

package proga8;
import java.math.*;
public class Main {
 public static void main(String... args) {
System.out.println("Програма №8");
int [][] d = new int[5][3];
for(int i1=0; i1<6; i1++)
{ System.out.println();
    for (int i2=0; i2<4; i2++)
             {
        System.out.print(d[i1][i2]+" ");

             }
};

 }
}

PM MAIL   Вверх
dorogoyIV
Дата 17.5.2010, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



Цитата(Syltan @  17.5.2010,  20:57 Найти цитируемый пост)
int [][] d = new int[5][3];for(int i1=0; i1<6; i1++)

откуда цифра 6 ?
Код

import java.util.*;

public class DuoArr
{
 public static void main(String [] args)
 {
  int [][] d = new int [5][3];

  for(int i = 0; i < d.length; i++)
   for(int j = 0; j < d [i].length; j++)
    d [i][j] = new Random().nextInt(15) - 5;

  showArr(d);
 }

 private static void showArr(int [][] d)
 {
  for(int i = 0; i < d.length; i++)
  {
   for(int j = 0; j < d [i].length; j++)
    System.out.print(d [i][j] + " ");

   System.out.println();
  }
 }
}

PM MAIL   Вверх
dobrolub
Дата 17.5.2010, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

Репутация: 11
Всего: 16



попробуй так:
Код

public class T {
    public static void main(String []args) throws Exception {
        java.util.Random random = new java.util.Random();
        int [][]d = new int[5][5];
        for (int i = 0; i < d.length; i++) {
            for (int j = 0; j < d[i].length; j++){
                d[i][j] = random.nextInt(15) - 5;
                System.out.println(String.format("element [%1$d][%2$d] = %3$d", i, j, d[i][j]));
            }
        }
    }
}


PM   Вверх
Syltan
Дата 17.5.2010, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 301
Регистрация: 31.8.2009

Репутация: нет
Всего: -2



Спасибо. Меня интересует вот эта строка.
Код

Math.abs(rand.nextInt()) % 10;

Расшифруйте её. Ещё вопрос, а если мне нужно сгенерировать в диапазоне с -123.....5000
Как тогда быть?
PM MAIL   Вверх
dorogoyIV
Дата 17.5.2010, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



1. Math.abs - абсолютное число (по модулю, откидывается минус), только в данном примере не имеет смысла. 
    % 10 - деленое по модулю на 10 (11 % 10 = 1)
2. new Random().nextInt(5000 + 123) - 123
PM MAIL   Вверх
Syltan
Дата 17.5.2010, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 301
Регистрация: 31.8.2009

Репутация: нет
Всего: -2



Зачем делить с остатком, то есть %?
Так вы имели ввиду в димпазоне -123...5000?
Код

package proga8;
import java.math.*;
import java.util.*;
public class Main {
 public static void main(String... args) {
System.out.println("Програма №8");
char[][] masiv={
    {'d','b','g','f','g','e'},
    {'a','s','y','q','f','p','u','r'},
    {'t','z','f','z','x'}
};
for(int i1=0; i1<masiv.length; i1++)
{
    for(int i2=0; i2<masiv[i1].length; i2++)
    System.out.print(masiv[i1][i2]+" ");
    System.out.println();
}
//Масив №2
System.out.println();
int [][]matr = new int[5][5];
        Random rand = new Random();

        for(int i = 0; i < 5; i++)
            for(int j = 0; j < 5; j++)
                matr[i][j] = Math.abs(rand.nextInt(5000+123)-123);

        for(int i = 0; i < 5; i++){
            for(int j = 0; j < 5; j++)
                System.out.print(matr[i][j] + " ");
            System.out.print("\n");
        }
    }

}




 




PM MAIL   Вверх
dorogoyIV
Дата 17.5.2010, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



Цитата(Syltan @  17.5.2010,  21:42 Найти цитируемый пост)
Зачем делить с остатком, то есть %?

а кто делит?!
PM MAIL   Вверх
Syltan
Дата 17.5.2010, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 301
Регистрация: 31.8.2009

Репутация: нет
Всего: -2



один подсказал что нужно так.
Код

matr[i][j] = -123 + Math.abs(rand.nextInt()%5000);


Объясните почему именно %5000.

Добавлено @ 22:04
Ещё вопрос как сделать ровно 5 пробелов расстояние между цифрами, чтоб ровно всё было?

Добавлено @ 22:08

Ещё, как сгенерировать не цифры а буквы?

Это сообщение отредактировал(а) Syltan - 17.5.2010, 22:11
PM MAIL   Вверх
dorogoyIV
Дата 17.5.2010, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



Цитата(Syltan @  17.5.2010,  22:01 Найти цитируемый пост)
один подсказал что нужно так.

можно и так. разницы нет. токда зачем abs?



Это сообщение отредактировал(а) dorogoyIV - 17.5.2010, 22:16
PM MAIL   Вверх
Syltan
Дата 17.5.2010, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 301
Регистрация: 31.8.2009

Репутация: нет
Всего: -2



Да, действительно, абс, не нужен для генерации действительных чисел.
Вы не на все вопросы ответили, отвтеьте пожалуйста на все, зачем знак процента?
PM MAIL   Вверх
dorogoyIV
Дата 17.5.2010, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



я тупанул  smile 

Код

  for(int i = 0; i < 10; i++)
  {
   int k = new Random().nextInt() % 5000;
   System.out.println("случайное число " + k);
  }


но тогда надо так:
Код

 int i = Math.abs(new Random().nextInt() % (5000 + 123)) - 123


Это сообщение отредактировал(а) dorogoyIV - 17.5.2010, 22:51
PM MAIL   Вверх
BlackCrow
Дата 18.5.2010, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 12.3.2010

Репутация: нет
Всего: нет



можно еще вот так сделать:
заполнение массива случайными числами от minRndVal до maxRndVal:

Код

        int minRndVal = -10;
        int maxRndVal = 10;
        int arr[][] = new int[20][20];
        Random rand = new Random();
        for (int i = 0; i < arr.length; i++)
            for (int j = 0; j < arr[i].length; j++)
                arr[i][j] = (int) (rand.nextFloat() * (maxRndVal - minRndVal) + minRndVal);
        for (int i = 0; i < arr.length; i++) 
            System.out.println( Arrays.toString(arr[i]) );

PM MAIL   Вверх
soulcub
Дата 18.5.2010, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 2.2.2010
Где: Винница, Украина

Репутация: нет
Всего: 2



Цитата(Syltan @  17.5.2010,  22:01 Найти цитируемый пост)
Ещё, как сгенерировать не цифры а буквы?

Чтоб генерировать буквы, нужно просто генерировать числа и переводить в char..
Код

        char k = (char) (new Random().nextInt(122 - 97) + 97);
        System.out.println("случайный символ " + k);


Для справки 122 - код последнего символа, 97 - первого, то есть 'z' и 'a' соответственно.

Это сообщение отредактировал(а) soulcub - 18.5.2010, 23:52
--------------------
Так давай же, поспеши!Отыскать СВОЙ куб души!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0524 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.