Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Помогите, срешением задач! С++ (http://forum.oszone.net/showthread.php?t=30892)

Apis.NET 08-12-2001 03:16 210687

1)Написать программу, которая отображает у левого края экрана сплошной треугольник из звездочек, высота которого указана целым параметром side. Например,если side = 4 на экран должно выводиться
        *

     * * *

  * * * * *

* * * * * * *

2)С помощью перегрузки функций создайте функцию convert(), переводящую гривни в доллары и наоборот.
3)Написать программу, которая получает в качестве параметра целое число и возвращает число с обратным порядком цифр
4)Вывести на экран все числа кратные 11 в диапазоне, заданном пользователем.
5)Игра «кубики». Условие: имеется два игральных кубика со значениями от 1 до 6. Игра происходит с компьютером, кубики бросаются поочередно. Побеждает тот, у кого сумма выпавших очков по итогам пяти бросков больше. Предусмотрите возможность получения первого хода человеком или компьютером. Кубики отображаются с помощью символов. В конце игры необходимо выводить среднюю сумму по броскам для обоих участников.
6)Создать программу, которая выводит на экран простые(тЕ КОТОРЫЕ ДЕЛЯТЬСЯ  тоько само на себя и на 1) числа в диапазоне от 2 до 1000.


Maxvell 08-12-2001 05:00 210688

Apis.NET
Треугольник Паскаля?

Apis.NET 08-12-2001 12:28 210689

Цитата:

Треугольник Паскаля?
Дык я такое первый раз ваще слышу!

BigMac 08-12-2001 14:14 210690

#Moderation Mode

А на фига форум Программирование делали?????

Перемещено сюда

vasketsov 08-12-2001 16:04 210691

3)Написать программу, которая получает в качестве параметра целое число и возвращает число с обратным порядком цифр


Напишу, так сказать, логику. А то мало ли как процент отобразится.
SOURCE - дано
BASE - основание исчисления (по умолчанию 10)
RESULT=0 - результат
i - вспомогат. переменная
while (SOURCE)
{
 i = (остаток от деления SOURCE на BASE)
 RESULT увеличиваем на i
 RESULT умножаем на BASE
 SOURCE целочисленно делим на BASE
}

ivank 08-12-2001 17:05 210692

Цитата:

Apis.NET
1)Написать программу, которая отображает у левого края экрана сплошной треугольник из звездочек, высота которого указана целым параметром side. Например,если side = 4 на экран должно выводиться
* * * * *

* * ** * *

* * * * * *

* * * * * * *
Я вас удивлю но в C++ экрана не существует! Существует телетайпный вывод через cout/printf.

надеюсь в коде сами разберётесь:
Код:

#include <iostream>

void draw_triangle( unsigned int size );

int main()
{
 * *draw_triangle( 5 );
 * *draw_triangle( 10 );
 * *return 0;
}

inline void out_chars( unsigned int num, char ch )
{
 * *for( ; num ; --num )
 * * * *std::cout << ch;
}

void draw_triangle( unsigned int size )
{
 * *unsigned int to_draw = 1;
 * *for( ; size ; --size )
 * *{
 * * * *out_chars( size - 1, ' ' );
 * * * *out_chars( to_draw, '*' );
 * * * *std::cout << "\n";
 * * * *to_draw += 2;
 * *}
}

Цитата:

2)С помощью перегрузки функций создайте функцию convert(), переводящую гривни в доллары и наоборот.
Не понял чего тут сложного, и на хрена перегрузка.
Цитата:

3)Написать программу, которая получает в качестве параметра целое число и возвращает число с обратным порядком цифр
Кривое решение:
Код:

#include <iostream>

unsigned int reverse( unsigned int in );

int main()
{
 * *std::cout << reverse( 12345 ) << "\t" << reverse( 67890 );
 * *return 0;
}

unsigned int reverse( unsigned int in )
{
 * *unsigned int out = 0;
 * *while( in )
 * *{
 * * * *out += in % 10;
 * * * *out *= 10;
 * * * *in /= 10;
 * *}
 * *return out;
}

Цитата:

4)Вывести на экран все числа кратные 11 в диапазоне, заданном пользователем.
5)Игра «кубики». Условие: имеется два игральных кубика со значениями от 1 до 6. Игра происходит с компьютером, кубики бросаются поочередно. Побеждает тот, у кого сумма выпавших очков по итогам пяти бросков больше. Предусмотрите возможность получения первого хода человеком или компьютером. Кубики отображаются с помощью символов. В конце игры необходимо выводить среднюю сумму по броскам для обоих участников.
Оба задания легче некуда.
Цитата:

6)Создать программу, которая выводит на экран простые(тЕ КОТОРЫЕ ДЕЛЯТЬСЯ *тоько само на себя и на 1) числа в диапазоне от 2 до 1000.
Сейчас лень писать, вечерком это напишу.

(Отредактировал(а) ivank - 14:11 - 8 Дек., 2001)


(Отредактировал(а) ivank - 15:12 - 8 Дек., 2001)

noname00.pas 08-12-2001 17:55 210693

Apis.NET
Ну не знаю я Си, хотя было бы полезно. По этой самой причине привожу тексты программ на Паскале. В принципе понять, что делает программа нетрудно, тебе остаётся только перевести в код на Си.

1.
Код:

var
 *side, i, j : byte;
 *s : string;
begin
 *readln(side);
 *for i := 0 to (side-1) do begin
 * *s := '*';
 * *for j := 1 to (side - i - 1) do s := ' ' + s;
 * *for j := 1 to i do s := s + '**';
 * *writeln(s);
 *end;
end.

2. Не знаю, что ты называешь перегрузкой функций, но такие функции на Паскале могут выглядеть так:

Код:

{$N+}
const Kypc = 1; {Здесь нужно вместо 1 подставить курс доллара в гривнах}

Function Griven_to_dollar(Grivens : Double) : double;
begin
 *Griven_to_dollar := Grivens / Kypc;
end;

Function Dollar_to_griven(Dollars : Double) : double;
begin
 *Dollar_to_griven := Dollars * Kypc;
end;

3.
Код:

var
 *l : longint;
 *res : longint;
 *code : integer;
begin
 *val(paramstr(1), l, code); {Это просто получение параметра в переменную L}
 *res := 0;
 *while l > 0 do begin
 * *res := res*10 + (l mod 10);
 * *l := l div 10;
 *end;
 *halt(res); { Тот же return (res) в си... }
End.

4.
Вариант 1:
Код:

var
 *d, u : longint;
 *l : longint;
begin
 *write('From: ');
 *readln(d);
 *write('To: ');
 *readln(u);
 *for l := d to u do
 * *if (l mod 11) = 0 then writeln(l);
end.

Вариант 2(работает быстрее):
Код:

var
 *d, u : longint;
 *l : longint;
begin
 *write('From: ');
 *readln(d);
 *write('To: ');
 *readln(u);
 *if (d >= 0) and ((d mod 11) = 0) then writeln(d);
 *l := (d div 11);
 *if L < 0 then l := l * 11 else l := (l + 1) * 11;
 *while l <= u do begin
 * *writeln(l);
 * *inc(l, 11);
 *end;
end.

5. Ну это извращение, там только реализация. Сам пиши.

6.
Вариант 1(сложность алгоритма - O(N*Log(N))):
Код:

var
 *i, j : integer;
 *s : boolean;
 *simple : array[0..168] of integer; {в данном диапазоне именно 168 простых чисел}
begin
 *for i := 2 to 1000 do begin
 * *s := true;
 * *for j := 1 to simple[0] do if (i mod simple[j]) = 0 then begin
 * * *s := false;
 * * *break;
 * *end;
 * *if s then begin
 * * *inc(simple[0]);
 * * *simple[simple[0]] := i;
 * *end;
 *end;
 *for i := 1 to simple[0] do writeln(simple[i]);
end.

Вариант 2(сложность алгоритма - O(N*N), зато экономит память):
Код:

var
 *i, j : integer;
 *s : boolean;
begin
 *for i := 2 to 1000 do begin
 * *s := true;
 * *for j := 2 to (i - 1) do if (i mod j) = 0 then begin
 * * *s := false;
 * * *break; {прервать цикл}
 * *end;
 * *if s then writeln(i);
 *end;
end.

Maxvell
Цитата:

Треугольник Паскаля?
Слышал такое словосочетание, но не знаешь, что это такое? -:)

Треугольник Паскаля это примерно следующее
* * *1
* * 1 1
* *1 2 1
*1 *3 3 1
1 4 *6 *4 1
1 5 10 10 5 1

Каждое число считается как сумма двух вышестоящих. Используется при вычислении количества сочетаний (например).
Ну и для других вещей -:)


(Отредактировал(а) noname00.pas - 12:40 - 8 Дек., 2001)

ivank 08-12-2001 18:08 210694

noname00.pas
Код с отступом в один пробел это ИМХО извращение.

И кстатит лучше пользовать тэги [ code] и [ /code] ( буз пробелов ) -- моноширный текст лучше читается.

noname00.pas 08-12-2001 18:45 210695

ivank
Цитата:

Код с отступом в один пробел это ИМХО извращение.
По-моему тоже... Я кстати с двумя пробелами пишу -:)

BigMac 08-12-2001 18:52 210696

noname00.pas
Я в школе тоже с 2 писал.. :)А на Фортране с 6!!! надо..:gigi: Такой суксь......... Слушайте, а похелпить сможете с одной сложной прогой??? Или если будет на Паскале, то перевести в СИ, а?

noname00.pas 08-12-2001 19:09 210697

BigMac
На Паскале - всё что угодно (из аналитического).

А два пробела - это стандарт какой-то, не помню чей -:)

BigMac 08-12-2001 20:36 210698

noname00.pas
Ага...... а в Фортране 6 надо.... иначе работать не будет.... :)

ivank 08-12-2001 21:09 210699

noname00.pas
По моему лучше пользовать жёсткую табуляцию, и в любимом редакторе выставлять сколько пробелов тратить на табуляцию. Мне например 4 очень нравится...

noname00.pas 08-12-2001 22:29 210700

BigMacivank
Но это уже совсем другая тема -;)

ivank 09-12-2001 01:29 210701

Цитата:

BigMacivank
А кто это такой? :gigi:

Apis.NET 09-12-2001 01:40 210702

noname00.pas Конечно спасибо,но както не помогло! Я б даже сказал на оборот.
ivank А тя ща пытать буду:
1)
Цитата:

std::
это что? Не я не мой компилятор этого не поняли.
2) Обясни почему 2 треугольника?

А так конечно, Спасибо!!!

ivank 09-12-2001 02:10 210703

Apis.NET
Ответил по асе, но и сюда кину.

Твой компилятор ( MSVC 6.0 ) не мог это не понять. std это имя стандартного пространства имён. Через квалификатор std:: мы можем получить доступ к стандартный обьектам STL:

Это очень удобно так как STL определяет туеву хучу контейнеров и не только...

Короче лучше всего тебе купить книжку Бьярна Страуструпа "Язык Программирования C++ 3е издание".

BigMac 09-12-2001 02:16 210704

ivank
Цитата:

А кто это такой?
:lol:

ivank 09-12-2001 02:18 210705

А треугольника 2 потому что я вызываю draw_triangle два раза -- один раз с параметром 5 и один раз 10ю

Apis.NET 09-12-2001 05:47 210706

ivank Спасибо, за толкование.


Время: 18:41.

Время: 18:41.
© OSzone.net 2001-2025