Четыре задачи начального уровня
мне нужно решить задачи в Pascal
1)найти f(х)
1. х^2 если х кратно 3
2.х, если при делении на 3 остаток 1
3.х/3
2)Найти наибольший общий делитель.
3)Напечатать строку из к случайных символов
4) Стороны прямоугольника заданы натуральными числами м и к. Составить программу, которая находит на сколько квадратов можно разделить данный прямоугольник, если от него каждый раз отрезается квадрат мах площади.
За ранее спасибо))))
|
iskander-k |
06-11-2008 13:38 944887 |
Для начала посмотрите здесь и исправьте заголовок.
|
Drongo |
06-11-2008 13:47 944895 |
Мусик, Какой-то непонятный набор заданий. Да и название темы оставляет желать лучшего. Кстати, на каком языке это всё нужно написать?
2) Решение
Код:
//Программа нахождения наибольшего общего делителя
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
// Функция нахождения НОД
int ged(int, int);
int main()
{
int z,
num1,
num2,
result;
cout<<" START '0' FINISH '-1' : ";
cin>>z;
while(z != -1){
cout<<"\n ENTER NUMBER1: ";
cin>>num1;
cout<<" ENTER NUMBER2: ";
cin>>num2;
result = ged(num1, num2);
cout<<"\n MAXIMUM OBSCHIY DELITEL CHISEL: "<<num1
<<" I "<<num2<<" RAVEN: "<<result<<endl;
cout<<"\n\n START '0' FINISH '-1' : ";
cin>>z;
}
return 0;
}
//Функция нахождения НОД
int ged(int number1, int number2)
{
int c = 1;
while(c != 0){
c = number1 % number2;
number1 = number2;
number2 = c;
}
return number1;
}
//---------------------------------------------------------------------------
Та же задача по русски
Код:
//Программа нахождения наибольшего общего делителя
#include <windows.h>
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
// Функция перекодировки символов русского языка
char* Rus(const char* text);
char bufRus[256];
char* Rus(const char* text)
{
CharToOem(text, bufRus);
return bufRus;
}
// Функция нахождения НОД
int ged(int, int);
int main()
{
int z,
num1,
num2,
result;
cout<<Rus(" Введите '0' для продолжения или '-1' для финиша : ");
cin>>z;
while(z != -1){
cout<<Rus("\n Введите 1-е число: ");
cin>>num1;
cout<<Rus(" Введите 2-е число: ");
cin>>num2;
result = ged(num1, num2);
cout<<Rus("\n Максимальный общий делитель чисел: ")<<num1;
cout<<Rus(" и ")<<num2;
cout<<Rus(" равен = ")<<result<<endl;
cout<<Rus("\n\n Введите '0' для продолжения или '-1' для финиша : ");
cin>>z;
}
return 0;
}
//Функция нахождения НОД
int ged(int number1, int number2)
{
int c = 1;
while(c != 0){
c = number1 % number2;
number1 = number2;
number2 = c;
}
return number1;
}
//---------------------------------------------------------------------------
|
Arrest |
06-11-2008 14:56 944959 |
Алгоритм решения №4 (привожу исключительно функцию нахождения без проверок ошибок и ввода/вывода), C:
Код:
int getsquares(int x, int y){
int count;
while(x>0 && y>0){
if(x>y){
x -= y;
}else{
y -= x;
}
count++;
}
return count;
}
Алгоритм решения №1(аналогично), C :) :
Код:
float f(int x){
if(x % 3 == 0){
return x*x;
}
if(x % 3 == 1){
return x;
}
return x/3;
}
Задачу 3 решать самостоятельно, генеришь случайное число от 0 до 25, добавляешь к индексу первой буквы ASCII и кастуешь в char.
|
Drongo |
06-11-2008 15:10 944972 |
Arrest,
Цитата:
Цитата Arrest
Задачу 3 решать самостоятельно, генеришь случайное число от 0 до 25, добавляешь к индексу первой буквы ASCII и кастуешь в char. »
|
Можешь более подробнее объяснить? Я пробовал решить её, и знаю, что символ
Код:
'A' = 65
..
..
'z' = 122
сделал так, но это не совсем получается верно.
Код:
...
num2 = 65 + rand() % 122;
element = static_cast <char> (num2);
cout<<element;
...
Мне не понятно выражение.
Цитата:
Цитата Arrest
добавляешь к индексу первой буквы ASCII »
|
Можно на примере только небольшого фрагмента кода показать как это будет?
|
Arrest |
06-11-2008 15:28 944992 |
Код:
int randomnum = rand() % 26;
char randomchar = (char)randomnum+65;
как-то вот так
|
Drongo |
06-11-2008 15:59 945027 |
Arrest, Точно, сработало. Только хочется, чтобы символы могли печататься в обоих регистрах:
num1 - переменная, которая показывает, сколько случайных символов генирировать..
Код:
...
for(int i = 0; i <= num1; i++){
num2 = rand() % 26;
element = static_cast <char> (num2 + 65);
cout<<element<<" ";
}
...
|
Arrest |
07-11-2008 22:24 946436 |
PHP код:
for(int i = 0; i <= num1; i++){
num2 = rand() % (26*2); // символы больших и малых регистров стоят подряд, так что можно и так
element = static_cast <char> (num2 + 65);
cout<<element<<" ";
}
|
Drongo |
08-11-2008 16:39 947017 |
Arrest, Значит можно выражение (26 * 2), заменить на результат произведения = 52. :)
|
Время: 13:58.
© OSzone.net 2001-