Помогите решить задачи на C++
Помогите, пожалуйста.
1. Дан прямоугольник с размерами a*b.От него отрезают квадраты максимального размера,пока это возможно.Затем от оставшегося прямоугольника вновь отрезают квадраты максимально возможного размера и т.д.На какие квадраты и в каком их количестве будет разрезан исходный прямоугольник? 2.Дано к грибов. Вводя определенное число,нам экран выдает "Мы собрали к [гриб,грибов или гриба]"пример: Мы собрали 1 гриб или 22 гриба. заранее спасибо!!! |
Про грибы типа так...
/* грыбы*/ #include <windows.h> #include <winuser.h> #include <iostream> using namespace std; void main() { int size = 0; int octatok = 0; char buf[255]; // включение русского языка в консоли char res [9]; CharToOem("Введите количество грибов: ",buf); CharToOem("Mы нашли ",res); cout << buf; cin >> size; octatok=size; if (size == 1) CharToOem(" гриб",buf); else { while (true) { octatok=octatok%10; if (octatok<9)break; } if (octatok == 2 && octatok == 3 && octatok == 4 ) CharToOem(" грибa",buf); else CharToOem(" грибов",buf); } // Вывод результата cout << res << size << buf<< endl; cin.get(); } PS: я не спец в Сях, возможно есть более красивое решение... |
во второй задаче в условие не въехал, это задача на нахождение машинного нуля?
|
вот пример в цифрах.
дан прямоугольник с размерами 425*131.От него отрезают квадраты со стороной 131.,пока это возможно.Затем от оставшегося прямоугольника вновь отрезают квадраты со стороной,равно 425-131*3=32 ,и т.д.На какие квадраты и в каком количестве будет разрезан исходный прямоугольник. |
/*квадраты*/
#include <windows.h> #include <winuser.h> #include <iostream> using namespace std; void main() { int a, b, temp, step=0; int kvadr[100]; char buf[255]; // включение русского языка в консоли CharToOem("Введите стороны прямоугольника a = ",buf); cout << buf; cin >> a; CharToOem("Введите стороны прямоугольника b = ",buf); cout << buf; cin >> b; while(a!=0 && b!=0) { if (a<b) { temp=a; a=b; b=temp; } kvadr[step]=b; step++; a=a-b; } // Вывод результата CharToOem("Шаг --- Сторона квадрата",buf); cout << buf<< endl; for (int i=0; i< step; i++) { cout << i+1 << " --- " << kvadr[i]<< endl; } cin.get(); } Прога работает, хотя я написал ее скорее в стиле паскаля, (ну не сишник я...) И еще массив kvadr[] я объявил на 100 элементов. |
Про грибы. Только сообразил, что 101 это тоже гриб, поэтому должно быть так
/* грыбы*/ #include <windows.h> #include <winuser.h> #include <iostream> using namespace std; /************************************************** ************* Главный модуль ************************************************** ***************/ void main() { int size = 0; int octatok = 0; char buf[255]; // включение русского языка в консоли char res [9]; CharToOem("Введите количество грибов: ",buf); CharToOem("Mы нашли ",res); cout << buf; cin >> size; octatok=size; if (size == 1) CharToOem(" гриб",buf); else { while (true) { octatok=octatok%10; if (octatok<9)break; } if (octatok == 1 && size!=11) CharToOem(" гриб",buf); else { if (octatok == 2 || octatok == 3 || octatok == 4 ) CharToOem(" грибa",buf); else CharToOem(" грибов",buf); } } // Вывод результата cout << res << size << buf<< endl; cin.get(); } |
По поводу грибов.
Если я правильно понимаю код, то: Цитата:
2. octatok%10 всегда будет < 10 поэтому логичнее будет написать вместо этого куска кода строчку: Цитата:
Предлагаю свой вариант: Код:
#include <iostream> Код:
#include <windows.h> |
С прогой по квадратам полностью согласен, но сделал бы чуть попроще вывод результата, и м.б. убрал бы жёсткую завязку на винды, но тут на вкус и цвет...
На всякий случай постю свой вариант :) Код:
#include <iostream> |
Большое,как говорится,человеческое спасибо.
|
Здравствуйте! Мне жутко нужна помощь....Допуск к экзамену.... Нужно написать программу стекового калькулятора на Си(((( У меня никак не получается.... Вот условие самой задачи: "На входе - строка, содержащая выражение в постфиксной записи. На выходе - строка, результат вычислений.
пример: ввод: 1 23 + 4 - 5 1 - *. вывод: 80 Числа: целые неотрицательные. Должны поддерживаться следующие двуместные арифметические операции: + - * / Каждая из них берет аргумент со стека, сначала первый, потом - второй, выполняет над ним действие и результат помещает на вершину стека. Кроме того должна поддерживаться операция '.' - она берет один аргумент со стека и печатает его на вывод." Вот такая задача.... Заранее очень благодарна хоть в какой-то помощи)) |
Часовой пояс GMT +4, время: 12:00. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.