C/C++ - [решено] Четыре задачи начального уровня

Ответить
Аватара пользователя
Мусик

C/C++ - [решено] Четыре задачи начального уровня

Сообщение Мусик »

мне нужно решить задачи в Pascal

1)найти f(х)

1. х^2 если х кратно 3

2.х, если при делении на 3 остаток 1

3.х/3

2)Найти наибольший общий делитель.

3)Напечатать строку из к случайных символов

4) Стороны прямоугольника заданы натуральными числами м и к. Составить программу, которая находит на сколько квадратов можно разделить данный прямоугольник, если от него каждый раз отрезается квадрат мах площади.

За ранее спасибо))))
Аватара пользователя
iskander-k

Re: C/C++ - [решено] Четыре задачи начального уровня

Сообщение iskander-k »

Для начала посмотрите
здесь
и исправьте заголовок.
Аватара пользователя
Drongo

Re: C/C++ - [решено] Четыре задачи начального уровня

Сообщение Drongo »

Мусик, Какой-то непонятный набор заданий. Да и
название темы
оставляет желать лучшего. Кстати, на каком языке это всё нужно написать?


2) Решение






Код:

Код: Выделить всё

//Программа нахождения наибольшего общего делителя
#include 
using std::cout;
using std::cin;
using std::endl;
// Функция нахождения НОД
int ged(int, int);
int main()
{
  int z,
      num1,
      num2,
      result;
  coutz;
  while(z != -1){
     coutnum1;
     coutnum2;
     result = ged(num1, num2);
     cout


Та же задача по русски




Код:

Код: Выделить всё

//Программа нахождения наибольшего общего делителя
#include 
#include 
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;
  coutz;
  while(z != -1){
     coutnum1;
     coutnum2;
     result = ged(num1, num2);
     cout
Аватара пользователя
Arrest

Re: C/C++ - [решено] Четыре задачи начального уровня

Сообщение Arrest »

Алгоритм решения №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

Re: C/C++ - [решено] Четыре задачи начального уровня

Сообщение Drongo »

Arrest,
Цитата Arrest:



Задачу 3 решать самостоятельно, генеришь случайное число от 0 до 25, добавляешь к индексу первой буквы ASCII и кастуешь в char.
C/C++ - [решено] Четыре задачи начального уровня




Можешь более подробнее объяснить? Я пробовал решить её, и знаю, что символ



Код:

Код: Выделить всё

'A' = 65
..
..
'z' = 122

сделал так, но это не совсем получается верно.



Код:

Код: Выделить всё

...
num2 = 65 + rand() % 122;
element = static_cast  (num2);
cout

Мне не понятно выражение.
Цитата Arrest:



добавляешь к индексу первой буквы ASCII
C/C++ - [решено] Четыре задачи начального уровня




Можно на примере только небольшого фрагмента кода показать как это будет?
Аватара пользователя
Arrest

Re: C/C++ - [решено] Четыре задачи начального уровня

Сообщение Arrest »

Код:

Код: Выделить всё

int randomnum = rand() % 26;
char randomchar = (char)randomnum+65;

как-то вот так
Аватара пользователя
Drongo

Re: C/C++ - [решено] Четыре задачи начального уровня

Сообщение Drongo »

Arrest, Точно, сработало. Только хочется, чтобы символы могли печататься в обоих регистрах:

num1 - переменная, которая показывает, сколько случайных символов генирировать..

Код: Выделить всё

...
for(int i = 0; i <= num1; i++){
      num2 = rand() % 26;
      element = static_cast <char> (num2 + 65);
      cout<<element<<" ";
     }
...
Аватара пользователя
Arrest

Re: C/C++ - [решено] Четыре задачи начального уровня

Сообщение Arrest »

Код: Выделить всё

for(int i = 0; i <= num1; i++){

      num2 = rand() % (26*2); // символы больших и малых регистров стоят подряд, так что можно и так

      element = static_cast <char> (num2 + 65);

      cout<<element<<" ";

     }
Аватара пользователя
Drongo

Re: C/C++ - [решено] Четыре задачи начального уровня

Сообщение Drongo »

Arrest,

PHP код:

Код: Выделить всё

num2 = rand() % (26*2); 






Значит можно выражение (26 * 2)[/i], заменить на результат произведения = 52. Изображение
Ответить

Вернуться в «Программирование и базы данных»