Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Psilon
Master of Orion
Эксперт .NET
6012 / 4864 / 902
Регистрация: 10.07.2011
Сообщений: 14,477
Записей в блоге: 5
Завершенные тесты: 4
1

Общие вопросы по использованию C#

22.03.2012, 21:17. Просмотров 1079. Ответов 17
Метки нет (Все метки)

Не знаю, почему нету тут такой темы с пометкой "важно", часто бывают вопросы, не требующие отдельной темы. Ну да ладно, собственно вопрос, почему когда я пишу
C#
1
2
A[i,j]=0;
Console.Write(A[i, j]);
Он пишет 32? То есть если сделать
C#
1
2
A[i,j]=0;
Console.Write(A[i, j]-32);
выводит правильно, но вопрос нельзя ли убрать этот гемор?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2012, 21:17
Ответы с готовыми решениями:

как реализовать базу данных и зашитить от копирования. Общие вопросы по дедко-проге
Всем привет. Начну с истории. Меня попросил отец сделать программку для...

Подскажите по использованию потоков
В ходе изучения возникло несколько вопросов. Пожалуйста, подскажите или...

Руководство по использованию ClosedXML
может кто то использовал ClosedXML в своих проектах ? у меня есть Exel файл...

Вопрос по использованию регулярных выражений
Использую Regex следующим образом: Regex RE = new Regex(matchPattern,...

Сбор статистик по использованию программы
Доброго всем времени суток! Имеется некое ПО которое представляет из себя...

17
Alex_Sabaka
628 / 489 / 77
Регистрация: 28.07.2010
Сообщений: 895
Завершенные тесты: 3
22.03.2012, 21:31 2
Потому, что на экран выводиться ASCII-код символа '0' (хз почему, по Вашему коду это не скажешь). А так как ASCII-код символа '0' равняется 32, то следственно вычитанием из символа '0' число 32 мы получим число 0.
1
Psilon
Master of Orion
Эксперт .NET
6012 / 4864 / 902
Регистрация: 10.07.2011
Сообщений: 14,477
Записей в блоге: 5
Завершенные тесты: 4
22.03.2012, 21:40  [ТС] 3
Хорошо, тогда вопрос №2. Как нормально создать случайную последовательность. Единственное до чего дотумкал:
C#
1
2
3
Random r = new Random();
Thread.Sleep(20);
A[i, j] = r.Next(10);
Но слишком долго получается. Только-только начал изучать язык, так что не знаю, как реализовать random.
0
MansMI
1449 / 1158 / 550
Регистрация: 08.01.2012
Сообщений: 4,509
22.03.2012, 21:44 4
TopicStarter гонит, мы не знаем как заявлен А
0
Lovrentiy
161 / 161 / 11
Регистрация: 07.09.2011
Сообщений: 995
22.03.2012, 21:45 5
А зачем
C#
1
Thread.Sleep(20);
?
0
Psilon
Master of Orion
Эксперт .NET
6012 / 4864 / 902
Регистрация: 10.07.2011
Сообщений: 14,477
Записей в блоге: 5
Завершенные тесты: 4
22.03.2012, 21:54  [ТС] 6
Lovrentiy,
Иначе в массиве только одинаковые элементы:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using System;
using System.Threading;
 
 
namespace ABCMatrix
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Введите длину массивов");
            int n = Convert.ToInt32(Console.ReadLine());
            int[,] A;
            A = new int[n,n];
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    Random r = new Random();
                    //Thread.Sleep(20);
                    A[i, j] = r.Next(10);
                }
            }
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    Console.Write(A[i, j] + " ");
                }
                Console.WriteLine();
            }
 
            Console.ReadKey(true);
        }
    }
}
Первый вариант - с добавлением sleep, второй - без.
0
Миниатюры
Общие вопросы по использованию C#   Общие вопросы по использованию C#  
TARAS87
38 / 37 / 2
Регистрация: 03.06.2010
Сообщений: 170
22.03.2012, 21:56 7
Цитата Сообщение от Psilon Посмотреть сообщение
Хорошо, тогда вопрос №2. Как нормально создать случайную последовательность.
Random.NextBytes
0
-SeRg-
25 / 25 / 7
Регистрация: 03.06.2010
Сообщений: 76
22.03.2012, 22:04 8
вынеси создание объекта Random из тела цикла...
1
Psilon
Master of Orion
Эксперт .NET
6012 / 4864 / 902
Регистрация: 10.07.2011
Сообщений: 14,477
Записей в блоге: 5
Завершенные тесты: 4
22.03.2012, 22:10  [ТС] 9
-SeRg-, спасибо ,работает, вопрос: с чем связано? Просто после дельфи ( за исключением I\O операций) не очень понятно что к чему. В данном случае это эквивалентно функции randomize из дельфи, которая каждый раз задавала одно и то же стартовое значение => каждый раз и получала постоянно одно и то же число, или я не прав?
0
TARAS87
38 / 37 / 2
Регистрация: 03.06.2010
Сообщений: 170
22.03.2012, 22:14 10
Цитата Сообщение от Psilon Посмотреть сообщение
-SeRg-, спасибо ,работает, вопрос: с чем связано? Просто после дельфи ( за исключением I\O операций) не очень понятно что к чему. В данном случае это эквивалентно функции randomize из дельфи, которая каждый раз задавала одно и то же стартовое значение => каждый раз и получала постоянно одно и то же число, или я не прав?
Как раз таки randomize и делается для того чтобы каждый раз разное значение было.
0
Psilon
Master of Orion
Эксперт .NET
6012 / 4864 / 902
Регистрация: 10.07.2011
Сообщений: 14,477
Записей в блоге: 5
Завершенные тесты: 4
22.03.2012, 22:18  [ТС] 11
TARAS87, Если сделать в дельфи randomize(1); к примеру, будет выводиться одна и та же псевдослучайная последовательность.

Вопрос №3:
Есть такой кусок кода
C#
1
2
3
4
int[,] A,B,C;
A = new int[n,n];
            B = new int[n,n];
            C = new int[n,n];
Можно ли его оптимизировать как-то?
Если записать
C#
1
2
int[,] A,B,C;
A=B=C=new int[n,n];
То они начинают указывать на один и тот же объект, что не есть гуд.
0
-SeRg-
25 / 25 / 7
Регистрация: 03.06.2010
Сообщений: 76
22.03.2012, 22:37 12
просто Random постоянно пересоздавался и ему передавалось одно и тоже значение, которое менялось с определённым интервалом (если задать массив побольше, видно что там пару повторяющихся значений), пауза потока позволяла "затормозить" цикл и создать новое значение. правильнее объявить один объект для всего цикла.
1
Alex_Sabaka
628 / 489 / 77
Регистрация: 28.07.2010
Сообщений: 895
Завершенные тесты: 3
22.03.2012, 22:44 13
Цитата Сообщение от Psilon Посмотреть сообщение
Можно ли его оптимизировать как-то?
Так делать можно только со структорами(т.е. не ссылочными типами данных), т.к.
Цитата Сообщение от Psilon Посмотреть сообщение
они начинают указывать на один и тот же объект, что не есть гуд.
1
Psilon
Master of Orion
Эксперт .NET
6012 / 4864 / 902
Регистрация: 10.07.2011
Сообщений: 14,477
Записей в блоге: 5
Завершенные тесты: 4
22.03.2012, 23:48  [ТС] 14
Вопрос №4: есть ли способ использовать foreach для вывода на экран массива NxN или только с помощью двух for i и for j?
0
-SeRg-
25 / 25 / 7
Регистрация: 03.06.2010
Сообщений: 76
23.03.2012, 00:00 15
синтаксис foreach для вывода такой же, как и для одномерного
0
Psilon
Master of Orion
Эксперт .NET
6012 / 4864 / 902
Регистрация: 10.07.2011
Сообщений: 14,477
Записей в блоге: 5
Завершенные тесты: 4
23.03.2012, 08:18  [ТС] 16
-SeRg-, имеется ввиду, что мне надо построчно выводить, а не все в одну строку. Этого можно добиться? Или только что-то вроде
C#
1
2
3
4
5
6
7
8
9
   int k = 0;
            foreach(int value in A)
            {
                Console.Write("{0,3:d}", value);
                if((n%++k) == 0)
                {
                    Console.WriteLine();
                }
            }
Добавлено через 13 минут
В итоге так сделал:
C#
1
2
3
4
5
6
7
8
9
10
    int k = 0;
            foreach(int value in A)
            {
                Console.Write("{0,3:d}", value);
                k++;
                if ((n - k) % n == 0) 
                {
                    Console.WriteLine();
                }
            }
0
puerh
2 / 2 / 0
Регистрация: 23.03.2012
Сообщений: 64
23.03.2012, 23:14 17
Необходимо вывести MessageBox при выходе из программы, стандартно "Да/Нет". Пишу в обработчике закрытия формы код:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
    DialogResult result = MessageBox.Show("Выход", "Выход", MessageBoxButtons.YesNo);
    if (result == System.Windows.Forms.DialogResult.Yes)
    {
         MainForm mf = new MainForm();
         mf.Close();
    }
    else
    { 
 
    }
}
При выборе "Да" программа нормально отрабатывает и закрывается, а вот что написать в "Нет" (то есть в else), чтобы MessageBox закрылся, а программа продолжала работать я не знаю. Подскажите, пожалуйста.

В else надо было написать e.Cancel = true;.
0
Памирыч
23.03.2012, 23:42     Общие вопросы по использованию C#
  #18
 Комментарий модератора 
Закрываем свалку. Один вопрос - одна тема
0
23.03.2012, 23:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2012, 23:42
Привет! Вот еще темы с ответами:

Ограничение программы по использованию процессора
здравствуйте. Есть программа которая запускает другую программу, и нужно чтоб...

Общий вопрос по практическому использованию C#
Несколько глупые вопросы, но всё же хотелось прояснить: - C# можно...

Покажите примеры по использованию NAudio.dll
Покажите пожалуйста примеры по использованию и проигрывания песен с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru