Jump to content

C++ Задачки и их решение...


druid

Recommended Posts

druid

Здравствуйте уважаемые форумчане и гости форума. Приветствую вас на своей теме по С++ программингу.

Буду здесь постить задачки и их решение на С++. Задачки буду брать из книг(в основном "ООП С++" Р. Лафоре) и интернета и предлагать своё решение.

Сам в процессе изучения этого языка, хотя уже далеко не молодой. Просто как хобби ))

Если среди читающих будут профи сильно не ругайте, конструктивная критика приветствуется.

Одна из основных моих задач найти единомышленников и популяризировать этот язык программирования.

Начну с простых и далее постепенно перейду к сложным.

Итак поехали...

Первая задачка.

Считая, что кубический фут равен 7.481 галлона, написать программу,
запрашивающую у пользователя число галлонов и выводящую на экран
эквивалентный объем в кубических футах.
#include<iostream>
using namespace std;

int main() {
   setlocale(0, "Rus");
   float galon, kfut;
   cout<<"Программа расчета объёма в кубических футах из галонов." << endl;
   cout<<"Введите количество в галонах: ";
   cin>>galon;
   kfut=galon/7.481;
   cout<<"Эквиваленте в кубических футах: " <<kfut<<endl;
   return 0;
}

 

  • Like 1
  • Excellent 1
Link to comment
Share on other sites

druid
Напишите программу, выводящую следующую таблицу:
1990 135
1991 7290
1992 11300
1993 16200
В программе использовать только один оператор cout.
 
#include<iostream>
#include<iomanip>

using namespace std;

int main() {
   cout<<setw(8)<<1990<<setw(8)<<135<<endl<<setw(8)<<1991<<setw(8)<<7290<<endl
   <<setw(8)<<1992<<setw(8)<<11300<<endl<<setw(8)<<1993<<setw(8)<<16200<<endl;
   return 0;
}

 

  • Excellent 1
Link to comment
Share on other sites

druid
Библиотечная функция islower() принимает в качестве аргумента один сим-
вол (букву) и возвращает ненулевое целое значение в том случае, если
буква является строчной, и нулевое, если буква является заглавной. Напишите программу, которая
принимает букву от пользователя, а затем выводит нулевое или ненуле-
вое значение в зависимости от того, является ли буква строчной или нет.
 
#include<iostream>
using namespace std;

int main() {
   setlocale(0, "Rus");
   char bukva;
   cout<<"Введите любую букву, строчную или заглавную: ";
   cin>>bukva;
   cout<<endl<<islower(bukva)<<endl;
   return 0;
}

 

  • Excellent 1
Link to comment
Share on other sites

druid
На биржевых торгах за 1 фунт стерлингов давали $1.487, за франк — $0.172,
за немецкую марку — $0.584, а за японскую йену — $0.00955. Напишите
программу, которая запрашивает денежную сумму в долларах, а затем вы-
водит эквивалентные суммы в других валютах.
 
#include<iostream>
using namespace std;

int main() {
   setlocale(0, "Rus");
   const float GB = 1.487F, FR = 0.172F, DE = 0.584F, JP = 0.00955F;
   float gb, fr, de, jp, dol;
   cout<<"Введите сумму в долларах США: ";
   cin>>dol;
   cout<<"В Британских фунтах стерлингах это: " << (gb = dol / GB) << endl;
   cout<<"В Фрнанцузких франках это: " << (fr = dol / FR) << endl;
   cout<<"В Немецких марках это: " << (de = dol / DE) << endl;
   cout<<"В Японских йенах это: " << (jp = dol / JP) << endl;
   return 0;
}

 

  • Excellent 1
Link to comment
Share on other sites

druid
Температуру, измеренную в градусах по Цельсию, можно перевести в гра-
дусы по Фаренгейту путем умножения на 9/5 и сложения с числом 32.
Напишите программу, запрашивающую температуру в градусах по Цель-
сию и отображающую ее эквивалент по Фаренгейту.
 
#include<iostream>
using namespace std;

int main() {
	setlocale(0, "Rus");
	float ctemp;
	cout << "Введите температуру в Цельсиях: ";
	cin >> ctemp;
	float ftemp = (ctemp * 9 / 5 + 32);
	cout << "Температура в Фаренгейтах: " << ftemp << endl;
	return 0;
}

 

  • Excellent 1
Link to comment
Share on other sites

druid
Когда размер величины, выводимой на экран с помощью манипулятора
setw(), оказывается меньше размера зарезервированного поля, по умолча-
нию незаполненные поля заполняются пробелами. Манипулятор setfill()
принимает в качестве аргумента один символ, который замещает все про-
белы на незаполненных позициях поля. Модифицируйте пример WIDTH
так, чтобы символы, разделяющие пары значений из столбцов, были не
пробелами, а точками.
 
#include<iostream>
#include<iomanip>
using namespace std;

int main() {
   setlocale(0, "Rus");
   long pop1 = 8425785, pop2 = 47, pop3 = 9761;
   cout << setw(9) << "Город" << setfill('.') << setw(26) << "Население" << endl;
   cout << setw(9) << "Москва" << setw(14) << pop1 << endl;
   cout << setw(9) << "Киров" << setw(10) << pop2 << endl;
   cout << setw(9) << "Угрюмовка" << setw(8) << pop3 << endl;
   return 0;
}

 

  • Excellent 1
Link to comment
Share on other sites

druid
Две дроби а/b и c/d можно сложить следующим образом:
a/b + c/d = (a*d + b*c)/(b*d)
Например, 1/4 + 2/3 = (1*3 + 4*2)/4*3 = 11/12
 
Напишите программу, запрашивающую у пользователя значения двух
дробей, а затем выводящую результат, также записанный в форме дроби.
Взаимодействие программы с пользователем может выглядеть, например,
следующим образом:
Введите первую дробь: 1/2
Введите вторую дробь: 2/5
Сумма равна 9/10
Вы можете использовать тот факт, что операция извлечения >> может
считывать более одного значения за раз:
cin >> а >> dummychar >> b; 
 
#include<iostream>

using namespace std;

int main() {
   setlocale(0, "Rus");
   char znak;
   int num1, num2, num3, num4, rez1, rez2;
   cout<<"Введите первую дробь: ";
   cin>>num1>>znak>>num2;
   cout<<"Введите вторую дробь: ";
   cin>>num3>>znak>>num4;
   rez1 = num1*num4+num2*num3;
   rez2 = num2*num4;
   cout <<"Сумма равна: " << rez1 << znak << rez2 << endl;
   return 0;
}

 

Link to comment
Share on other sites

druid
Устаревшая денежная система Великобритании состояла из фунтов, шил-
лингов и пенсов. 1 фунт был равен 20 шиллингам, а 1 шиллинг — 12 пен-
сам. Для записи использовалась система, состоящая из знака £ и трех деся-
тичных значений, разделенных точками. Например, запись £5.2.8 обозна-
чала 5 фунтов, 2 шиллинга и 8 пенсов (пенс — множественное число от
пенни). Современная денежная система, принятая в 50-е годы XX века, со-
стоит только из фунтов и пенсов, причем один фунт равен 100 пенсам.
Такой фунт называют десятичным. Таким образом, в новой денежной
системе указанная сумма будет обозначаться как £5.13 (если быть точнее,
£5.1333333). Напишите программу, которая будет преобразовывать сум-
му, записанную в старом формате (фунты, шиллинги, пенсы), в новый
формат (фунты, пенсы). Форматом взаимодействия программы с пользо-
вателем может являться следующий:
Введите количество фунтов: 7
Заедите количество шиллингов: 17
Введите количество пенсов: 9
Десятичных фунтов: £7.89
 
#include<iostream>
#include<cmath>
using namespace std;

int main() {
   setlocale(0, "Rus");
   const int PE = 240;
   int funt, newp;
   float oldp, oldsh;
   cout<<"Введите количество фунтов: ";
   cin>>funt;
   cout<<"Введите количество шиллингов: ";
   cin>>oldsh;
   cout<<"Введите количество пенсов: ";
   cin>>oldp;
   newp = (((oldsh*12)/PE)*100)+round((oldp/PE)*100);
   if(newp == 100) {
      funt++;
      newp = 0;
   }
   cout<<"Десятичных фунтов: "<<"Gb"<<funt<<"."<<newp<<endl;
   return 0;
}

 

Link to comment
Share on other sites

  • 6 months later...
MapleMan
On 2/1/2022 at 10:53 AM, druid said:
Устаревшая денежная система Великобритании состояла из фунтов, шил-
лингов и пенсов. 1 фунт был равен 20 шиллингам, а 1 шиллинг — 12 пен-
сам. Для записи использовалась система, состоящая из знака £ и трех деся-
тичных значений, разделенных точками. Например, запись £5.2.8 обозна-
чала 5 фунтов, 2 шиллинга и 8 пенсов (пенс — множественное число от
пенни). Современная денежная система, принятая в 50-е годы XX века, со-
стоит только из фунтов и пенсов, причем один фунт равен 100 пенсам.
Такой фунт называют десятичным. Таким образом, в новой денежной
системе указанная сумма будет обозначаться как £5.13 (если быть точнее,
£5.1333333). Напишите программу, которая будет преобразовывать сум-
му, записанную в старом формате (фунты, шиллинги, пенсы), в новый
формат (фунты, пенсы). Форматом взаимодействия программы с пользо-
вателем может являться следующий:
Введите количество фунтов: 7
Заедите количество шиллингов: 17
Введите количество пенсов: 9
Десятичных фунтов: £7.89
 
#include<iostream>
#include<cmath>
using namespace std;

int main() {
   setlocale(0, "Rus");
   const int PE = 240;
   int funt, newp;
   float oldp, oldsh;
   cout<<"Введите количество фунтов: ";
   cin>>funt;
   cout<<"Введите количество шиллингов: ";
   cin>>oldsh;
   cout<<"Введите количество пенсов: ";
   cin>>oldp;
   newp = (((oldsh*12)/PE)*100)+round((oldp/PE)*100);
   if(newp == 100) {
      funt++;
      newp = 0;
   }
   cout<<"Десятичных фунтов: "<<"Gb"<<funt<<"."<<newp<<endl;
   return 0;
}

 

Ошибочка у вас тут в том, что Вы не проверяете ввод, и если я введу 100 шиллингов, получите newp > 100, и ваша проверка с if(newp == 100) никуда не годится
Т.е. Вы либо должны проверять ввод прежде, чем принимать, либо же изменить логику обработки: 

int newps, newpf, addf;
newps = round(5*(oldp/12 +oldsh); // число новых пенсов, может быть > 99
newpf = floor(newps/100); // количество фунтов за счет неправильно ввененных шиллингов и/или пенсов

newp = newps - newpf*100; // количество новых пенсов < 100 ...
funt +=newpf // количество новых фунтов

 

Не читал все ваши посты, посмотрел только последний

Link to comment
Share on other sites

MapleMan

скобка round не закрыта, сорри

newps = round(5*(oldp/12 +oldsh));

Link to comment
Share on other sites

1ink
01.02.2022 в 19:53, druid сказал:
Введите количество фунтов: 7
Заедите количество шиллингов: 17
Введите количество пенсов: 9
Десятичных фунтов: £7.89

funt.jpg

Link to comment
Share on other sites

  • 6 months later...
АнтиФейк

Посоветуйте пожалуйста в каком редакторе программировать на С++

Я любитель, но интересуют параллельные вычисления.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Who Viewed the Topic

    57 members have viewed this topic:
    Caldogno  drago76  Полоний  Faza  trr  Starik Starikov  oldel  АнтиФейк  TruePick  Maambl  Tristar  falkie  Malibushka  gulia  hanter  Spirt  d33  Tenant  Drako  Nayamoto  dama8080  F10  Zaur37  7thsorrow  Birdman  Razor  XorAndOr  1ink  Yadan  Verman  MegadriveXX  ilgar_m  Artist77  Gluter  Masusenka  MapleMan  Seldom73  lex-mix  KYV  Dervish  Fiero  Sinus  Простолюдин  BadBigRay  Rasul Qanbayev  Boob  MyPassion is Meme  R.A.M  sem911  STRANGER  elikk  Золушка1935  hugerman  ImpendingDoom  telefonist  druid  Saxar5 
  • Who's Online   39 Members, 10 Anonymous, 56 Guests (See full list)

    • +DoctorHouse
    • +Джема
    • +Dervish
    • +invariant
    • +Buritas
    • +Zefir
    • +Sirius191
    • +Золушка1935
    • +Artist77
    • +leyla990
    • +Znaya
    • +Birdman
    • irada14
    • +War and Mir
    • +mamsy
    • +bongo
    • +Vagrant
    • +sapiens
    • +Вредный Крыс
    • Puzzle
    • +Бер
    • +Рюзаки
    • +Гамлет
    • +Отче Ваш
    • +Veronik
    • +W0lf
    • +Джо Дассен
    • +Heydar Ali
    • +-=laziale=-
    • +Lummy
    • +velmiw
    • +Elbilir
    • +Vitaliy
    • +Padre
    • +Timich
    • +Nicola Tesla
    • +MegadriveXX
    • +Migrant
    • +Nasta
×
×
  • Create New...

Important Information

Terms and Conditions