Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > Две задачи на C#.


Автор: Equilibrium 20.10.2005, 00:13
Народ, помогите пожайлуйста! Очень надо smile Я даже понятия не имею как делать это. Особенно первое. (язык С#)

1. Дано натуральное n, действительные а1,...аn. Получить
a1a2...an, где k=n, если n нечетное и k=n-1, если n четное.

2. Вывести последовательность символов:
а) ABBCCC...ZZ...Z;
б)ZYYXXX...AA...A;
в)ABC...ZBC...Z...Z.

Всем заранее спасибо!

Автор: Kurt 20.10.2005, 02:27
Цитата
Очень надо

Понимаю. Бывает. Но для таких вопросов специально создан http://forum.vingrad.ru/index.php?showforum=142, куда я и перемещаю тему. smile

Цитата
1. Дано натуральное n, действительные а1,...аn. Получить
a1a2...an, где k=n, если n нечетное и k=n-1, если n четное.

Ниасилил. smile
Что означает "a1a2...an"? Последовательность? строка? И причем тут k? Ведь в строке "a1a2...an" этого символа вообще нет. К какому выражению следует относить фразу "где k=n, если..."

Цитата
2. Вывести последовательность символов:
а) ABBCCC...ZZ...Z;
б)ZYYXXX...AA...A;


Можно так:
Код

using System;
using System.Text;

namespace SymbolList
{

    class MainClass
    {
        [STAThread]
        static void Main(string[] args)
        {
            int i;
            int j;
            StringBuilder myBuffer;
            byte[] chars = new byte[26];  //создадим массив ASCII-кодов латинского алфавита.  26 - кол-во букв в алфавите. 65 - ASII-код буквы "A"
            for(i = 0; i < 26; i++) //если честно, не помню, можно ли их как-то автоматом получить
            {
                chars[i] = (byte)(i+65);
            }

            //1-я последовательность:
            Console.WriteLine("First string:");
            myBuffer = new StringBuilder();
            for(i = 0; i < 26; i++)
            {
                for(j = 0; j<=i; j++)
                {
                    myBuffer.Append(Encoding.ASCII.GetChars(chars, i, 1));
                }
            }
            Console.WriteLine(myBuffer);

            //2-я последовательность:
            Console.WriteLine("Second string:");
            myBuffer = new StringBuilder();
            for(i = 0; i < 26; i++)
            {
                for(j = 0; j<=i; j++)
                {
                    myBuffer.Append(Encoding.ASCII.GetChars(chars, 25-i, 1));
                }
            }
            Console.WriteLine(myBuffer);

            Console.ReadLine();
        }
    }
}



Цитата
в)ABC...ZBC...Z...Z.

Последовательность не понял.

Автор: Самурай 20.10.2005, 15:20
Может так пойдет треться последовательность?

Код

            //3-я последовательность:
            Console.WriteLine("Second string:");
            myBuffer = new StringBuilder();
            for(i = 0; i < 26; i++)
            {
                for(j = i; j < 26; j++)
                {
                    myBuffer.Append(Encoding.ASCII.GetChars(chars, 25-i, 1));
                }
            }
            Console.WriteLine(myBuffer);


Не могу проверить, т. к. нет под рукой компилятора, но логика я думаю вполне ясна.

Автор: Equilibrium 20.10.2005, 18:26
Млин... агрооомнейшее спасиба! smile

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

######
1.
Дано натуральное n, действительные а1,...,an. Получить:
a1a2...ak, где k=n, если n нечетное, и k=n-1, если n четное.
######

2 Самурай.
Делает все точно так же как и первая тольно начиная с z...z и уменьшается к а. Все равно спасибо! smile


Автор: Kurt 20.10.2005, 21:06
Equilibrium
Цитата
Дано натуральное n, действительные а1,...,an. Получить:
a1a2...ak, где k=n, если n нечетное, и k=n-1, если n четное.

Что такое "a1a2...ak"? Просто строка или перемножение a1 на a2 и на a3 ... на ak?

И еще ты не объяснил, что за последовательность нужна во второй задаче в третьем пункте.

Автор: Самурай 20.10.2005, 21:10
Цитата(Kurt @ 20.10.2005, 21:06)
И еще ты не объяснил, что за последовательность нужна во второй задаче в третьем пункте.

Похоже на это:

abcd...zbcd...zcd...zd...z...zz

Автор: Equilibrium 20.10.2005, 22:34
2 Kurt
Переписал все как и в книге! Наверное просто строка, т.к. знак умножения в этой книге обозначается по другому.

По поводу второй задачи... тоже самое что и в книге smile

Вы извините, я в этом деле новичек... сам нифига не понимаю smile

Автор: bend0r 21.10.2005, 03:01
Цитата(Equilibrium @ 20.10.2005, 18:26)
1.
Дано натуральное n, действительные а1,...,an. Получить:
a1a2...ak, где k=n, если n нечетное, и k=n-1, если n четное.


Код

ulong n = 0;
ulong k = 0;
long [] mas1;
long [] mas2;
String str;
            
Console.WriteLine("Ввод n:");
str = Console.ReadLine();
n = UInt64.Parse(str);
mas1 = new long[n];
for(int i = 0; i < mas1.Length; i++)
{
    Console.WriteLine("Ввод дейтвительных чисел:");
    str = Console.ReadLine();
    mas1[i] = Int64.Parse(str);
}

if((n % 2) == 0) k = n - 1;
else k = n;
mas2 = new long[k];
for(int i = 0; i < mas2.Length; i++)
{
    mas2[i] = mas1[i];
}


Если условие понел правильно то так

Автор: bend0r 21.10.2005, 03:39
Цитата
abcd...zbcd...zcd...zd...z...zz

если такая последовательность то
Код


using System;
using System.Collections;

byte[] chars = new byte[26];  
for(int i = 0; i < 26; i++) 
{
    chars[i] = (byte)(i+65);
}

ArrayList al = new ArrayList();
for(int i = 0; i < chars.Length; i++)
{
    al.Add((char)chars[i]);
}

for(int i = 0; i < chars.Length; i++)
{
    chars[i] = 90;
    for(int j = 0; j < chars.Length; j++)
        {
                     al.Add((char)chars[j]);
        }

}



Автор: Equilibrium 21.10.2005, 10:51
Вы извините... но я ни в первом, ни во втором случае не понял как это вывести на экран 0:-)
Ламер smile Самое смешное, что я один из трех человек который в группе на лабараторных все сам делает smile

Автор: bend0r 21.10.2005, 13:39
В первой
Код

foreach(long m1 in mas1)//а1,...,an
Console.WriteLine(m1);

Console.WriteLine();

foreach(long m2 in mas2)//a1,a2...ak
Console.WriteLine(m2);


Во второй
Код

foreach(char ch in al)
Console.Write(ch);





Автор: Equilibrium 21.10.2005, 17:44
Большое всем спасибо!
Эм... вам можно репутацию поднять? smile

З.Ы.
И еще... вы не скажете мне, что я сильно обнаглел, если выложу еще одну или две задачи!?

Автор: Exception 21.10.2005, 18:09
не скажем smile
но выкладывай только если совсем сложно будет..

Автор: Kurt 21.10.2005, 18:12
Цитата
И еще... вы не скажете мне, что я сильно обнаглел, если выложу еще одну или две задачи!?

Постарайся сначала их решить самостоятельно - гораздо больше пользы. Для тебя. smile
Ну, а если совсем уж не получается - спрашивай. Для этого и создан этот раздел.

Автор: Exception 21.10.2005, 18:15
репу я им повысил, а ты сможешь по достижению 100 очков

Автор: Equilibrium 24.10.2005, 14:29
Доброго времени суток!
Конечно, я понимаю, что лучше написать самому... поэтому прикладываю все усилия, чтобы так оно и было, может быть со временем я бы и сам разобрался с этими задачами, но иногда бывают такие моменты, когда присутствует фактор времени... Даже то, что вы пишете, стараюсь сам разбирать и вникать что к чему! Заранее большое спасибо!

1. Изменить программу круг так, чтобы число строк и столбцов данной квадратной матрицы (aij) определялось константой n.

Текст программы:

Program круг (input, output)
label 1;
type строка=array[1...15] of integer;
таблица=array[1...15] of строка;
var a: таблица; i,j: integer;
begin
for i:=1 to 15 do
for j:=1 to 15 do read (a[i][j]);
for :=1 to 14 do
for j:=i+1 to 15 do
if a[i][j]+a[j][i]<>2
then begin
write('Есть ошибки');
goto 1
end;
write('Ошибок нет');
1: end.

2. Пришлось нарисовать smile


Автор: bend0r 26.10.2005, 02:46

Код

label 1;
type строка=array[1...15] of integer;
таблица=array[1...15] of строка;
var a: таблица; i,j: integer;
begin
for i:=1 to 15 do
for j:=1 to 15 do read (a[i][j]);
for :=1 to 14 do
for j:=i+1 to 15 do
if a[i][j]+a[j][i]<>2
then begin
write('Есть ошибки');
goto 1
end;
write('Ошибок нет');
1: end.


чего это за язык?

Автор: Equilibrium 26.10.2005, 11:26
2 bend0r
Это паскаль!

Фух... я со второй упарился, сначала я думал что знаю как ее делать... но потом... я никак не могу понять, причем здесь вообще пи квадрат на шесть!

Автор: Equilibrium 28.10.2005, 15:17
Эх... smile

Автор: Kurt 30.10.2005, 13:45
Equilibrium
Правила форума гласят:
1) Название должно отображать суть вопроса;
2) Один топик - один вопрос.
Смотри - тема называется "Задачи на C#", ты же теперь просишь решения задач на Pascal'е.
Сюда не заходят знатоки Pascal'я.
Лучше создай отдельную тему (в этом разделе).
Уверен, тебе обязательно помогут.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)