Показать полную графическую версию : Помогите, срешением задач! С++
Apis.NET
08-12-2001, 03:16
1)Написать программу, которая отображает у левого края экрана сплошной треугольник из звездочек, высота которого указана целым параметром side. Например,если side = 4 на экран должно выводиться
*
* * *
* * * * *
* * * * * * *
2)С помощью перегрузки функций создайте функцию convert(), переводящую гривни в доллары и наоборот.
3)Написать программу, которая получает в качестве параметра целое число и возвращает число с обратным порядком цифр
4)Вывести на экран все числа кратные 11 в диапазоне, заданном пользователем.
5)Игра «кубики». Условие: имеется два игральных кубика со значениями от 1 до 6. Игра происходит с компьютером, кубики бросаются поочередно. Побеждает тот, у кого сумма выпавших очков по итогам пяти бросков больше. Предусмотрите возможность получения первого хода человеком или компьютером. Кубики отображаются с помощью символов. В конце игры необходимо выводить среднюю сумму по броскам для обоих участников.
6)Создать программу, которая выводит на экран простые(тЕ КОТОРЫЕ ДЕЛЯТЬСЯ тоько само на себя и на 1) числа в диапазоне от 2 до 1000.
Apis.NET
Треугольник Паскаля?
Apis.NET
08-12-2001, 12:28
Треугольник Паскаля? Дык я такое первый раз ваще слышу!
#Moderation Mode
А на фига форум Программирование делали?????
Перемещено сюда (http://www.oszone.net/cgi-bin/ikonboard/topic.cgi?forum=18&topic=14)
vasketsov
08-12-2001, 16:04
3)Написать программу, которая получает в качестве параметра целое число и возвращает число с обратным порядком цифр
Напишу, так сказать, логику. А то мало ли как процент отобразится.
SOURCE - дано
BASE - основание исчисления (по умолчанию 10)
RESULT=0 - результат
i - вспомогат. переменная
while (SOURCE)
{
i = (остаток от деления SOURCE на BASE)
RESULT увеличиваем на i
RESULT умножаем на BASE
SOURCE целочисленно делим на BASE
}
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
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)
noname00.pas
Код с отступом в один пробел это ИМХО извращение.
И кстатит лучше пользовать тэги [ code] и [ /code] ( буз пробелов ) -- моноширный текст лучше читается.
noname00.pas
08-12-2001, 18:45
ivank
Код с отступом в один пробел это ИМХО извращение.
По-моему тоже... Я кстати с двумя пробелами пишу -:)
noname00.pas
Я в школе тоже с 2 писал.. :)А на Фортране с 6!!! надо..:gigi: Такой суксь......... Слушайте, а похелпить сможете с одной сложной прогой??? Или если будет на Паскале, то перевести в СИ, а?
noname00.pas
08-12-2001, 19:09
BigMac
На Паскале - всё что угодно (из аналитического).
А два пробела - это стандарт какой-то, не помню чей -:)
noname00.pas
Ага...... а в Фортране 6 надо.... иначе работать не будет.... :)
noname00.pas
По моему лучше пользовать жёсткую табуляцию, и в любимом редакторе выставлять сколько пробелов тратить на табуляцию. Мне например 4 очень нравится...
noname00.pas
08-12-2001, 22:29
BigMacivank
Но это уже совсем другая тема -;)
BigMacivank
А кто это такой? :gigi:
Apis.NET
09-12-2001, 01:40
noname00.pas Конечно спасибо,но както не помогло! Я б даже сказал на оборот.
ivank А тя ща пытать буду:
1)std:: это что? Не я не мой компилятор этого не поняли.
2) Обясни почему 2 треугольника?
А так конечно, Спасибо!!!
Apis.NET
Ответил по асе, но и сюда кину.
Твой компилятор ( MSVC 6.0 ) не мог это не понять. std это имя стандартного пространства имён. Через квалификатор std:: мы можем получить доступ к стандартный обьектам STL:
Это очень удобно так как STL определяет туеву хучу контейнеров и не только...
Короче лучше всего тебе купить книжку Бьярна Страуструпа "Язык Программирования C++ 3е издание".
ivank
А кто это такой?
:lol:
А треугольника 2 потому что я вызываю draw_triangle два раза -- один раз с параметром 5 и один раз 10ю
Apis.NET
09-12-2001, 05:47
ivank Спасибо, за толкование.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.