Компьютерный форум 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=122134)

Мусик 06-11-2008 13:03 944848

Четыре задачи начального уровня
 
мне нужно решить задачи в 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<= num1i++){
      
num2 rand() % (26*2); // символы больших и малых регистров стоят подряд, так что можно и так
      
element static_cast <char> (num2 65);
      
cout<<element<<" ";
     } 


Drongo 08-11-2008 16:39 947017

Arrest,
PHP код:

num2 rand() % (26*2); 

Значит можно выражение (26 * 2), заменить на результат произведения = 52. :)


Время: 13:58.

Время: 13:58.
© OSzone.net 2001-