Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проверьте задачи, легкие очень, подскажите немножко 
:(
    Опции темы
Zakary
Дата 21.9.2008, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 3.5.2006

Репутация: нет
Всего: нет



Здрасьте всем..начал изучать с++ и возникли некоторые маленькие вопросы. 
1 задача.
ввести число сантиметров, затем программа должна преобразовать это число в дюймы(inch) округлив до ближайшего целого числа (int).
затем эти дюймы должна разложить на ярды, футы и собственно дюймы. 
вопрос:
а) для округления числа надо прибавлять 0,5? ну чтоб правильно округлил, а то int просто убирает цифры после запятой.
б) как сделать так чтобы при выведении на экран, было не так: 1 feet(foot), а так 1 foot, а если больше одного то feet. это делается с помощью if? я не умею =( 
в) ещё как-то криво эти строчки написаны по-моему:  
yard = inch/36;
foot= inch%36 / 12;
 inch = (inch%36)%12;
Код

#include <iostream>
using namespace std;
int main ()
{
    double centimeters;
    int yard, foot, inch;

    cout << "input centimeters: ";
    cin >> centimeters;
    cout<< endl;
    inch = centimeters/2.54 + 0.5;
    yard = inch/36;
    foot= inch%36 / 12;
    inch = (inch%36)%12;
    
    cout<< centimeters<<" centimeters is equal to " << yard<< " yard(s), "   
        << foot << " feet(foot), and "<< inch << " inch(es) " <<endl;
    return 0;
}


2. при вводе 4 значного числа (int type) оно должно выводиться в столбик. 
т.е. ввели 3456, должно на экране получится
3
4
5
6

вопросы:
а) чет я криво все сделал, можно наверное попроще =\
б) как мне сделать так, что если ввели не четырехзначный интегер, выводить сообщение: НЕПРАВИЛЬНО! попробуйте ещё разsmile 

Код


#include <iostream>
using namespace std;
int main ()
{
int integer4dig, thousands, hundreds, tens, ones;

cout << "Input 4-digit integer:";
cin>> integer4dig;



thousands= integer4dig - integer4dig%1000;

hundreds = integer4dig-integer4dig%100-thousands;
tens= integer4dig-integer4dig%10-thousands-hundreds;
ones = integer4dig-thousands-hundreds-tens;

cout << thousands/1000<< endl;
cout << hundreds/100<<endl;
cout <<tens/10<<endl;
cout<<ones<<endl;

return 0;
}


и наконец номер 3:)

надо просто чтоб на экране показалась картинка типа: "С++" тока большая, составленная из символов С и плюсов..
вопрос: опять как-то все криво, как попроще это сделать все? так и должно быть в ряд 16 плюсов подряд, нет никакой функции типа один + 16 раз повторить. а ещё как мне сделать хотя бы используя \t чтоли, а то пробелы тоже stringom делать приходится..вообщем надо самое легкое и необычное решение о_О

Код

#include <iostream>
using namespace std;
int main ()
{
int integer4dig, thousands, hundreds, tens, ones;

cout << "Input 4-digit integer:";
cin>> integer4dig;



thousands= integer4dig - integer4dig%1000;

hundreds = integer4dig-integer4dig%100-thousands;
tens= integer4dig-integer4dig%10-thousands-hundreds;
ones = integer4dig-thousands-hundreds-tens;

cout << thousands/1000<< endl;
cout << hundreds/100<<endl;
cout <<tens/10<<endl;
cout<<ones<<endl;

return 0;
}
}



я вас буду очень сильно сильно благодарен  smile 

Это сообщение отредактировал(а) Zakary - 21.9.2008, 00:38
PM MAIL   Вверх
IKM2007
Дата 21.9.2008, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca

Репутация: 3
Всего: 40



Zakary, Первая прога.
Код

#include <iostream>
using namespace std;
int main ()
{
    double centimeters;
    int yard, foot, inch;

    cout << "input centimeters: ";
    cin >> centimeters;
    cout<< endl;
    inch = (int)(centimeters/2.54 + 0.51);
    yard =(int)( centimeters/91.44+ 0.51);//с сантиметрами по-проще
    foot=(int)( centimeters/30.48+0.51);//с сантиметрами по-проще
    //inch = (inch%36)%12;//здесь зачем во второй раз считаешь дюйм?
    
    cout<< centimeters<<" centimeters is equal to " << yard<<" yard"<<((yard>1)?"s, ":", "   )
        << foot <<((foot>1)?" feet":"foot")<<", and "<< inch <<" inch"<<((inch>1)?"es":"" )<<endl;
    return 0;

}


Добавлено через 13 минут и 42 секунды
Zakary, вторая прога.
Код

#include <iostream>
using namespace std;
int main ()
{
int integer4dig, thousands, hundreds, tens, ones;
x:
cout << "Input 4-digit integer:";
cin>> integer4dig;
if(!(integer4dig/1000>0&&integer4dig/1000<10))
{
cout<<"Incorrectly. Enter once again.\n";
goto x;
}

thousands= integer4dig/1000;
hundreds = integer4dig/100-10*thousands;
ones = integer4dig%10;
tens= (integer4dig%100-ones)/10;

cout << thousands<< endl;
cout << hundreds<<endl;
cout <<tens<<endl;
cout<<ones<<endl;

return 0;

}




--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
IKM2007
Дата 21.9.2008, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca

Репутация: 3
Всего: 40



Цитата(Zakary @  21.9.2008,  00:36 Найти цитируемый пост)
и наконец номер 3:)надо просто чтоб на экране показалась картинка типа: "С++" тока большая, составленная из символов С и плюсов..вопрос: опять как-то все криво, как попроще это сделать все? так и должно быть в ряд 16 плюсов подряд, нет никакой функции типа один + 16 раз повторить. а ещё как мне сделать хотя бы используя \t чтоли, а то пробелы тоже stringom делать приходится..вообщем надо самое легкое и необычное решение о_О

Не понял, что должна делать эта прога.
Цитата(Zakary @  21.9.2008,  00:36 Найти цитируемый пост)
надо просто чтоб на экране показалась картинка типа: "С++" тока большая, составленная из символов С и плюсов..

То есть ты вводишь, сколько символов C и сколько символов + нужно печатать и все?

Цитата(Zakary @  21.9.2008,  00:36 Найти цитируемый пост)
нет никакой функции типа один + 16 раз повторить.

используй for.


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
Zakary
Дата 21.9.2008, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 3.5.2006

Репутация: нет
Всего: нет



Задача 1: 
я с сантиметрами немогу. в задании - перевести в инчи, и затем округлить. надо брать 0.51? не 0.50?

да, второй раз зря беру, можно просто взять %12, т.к. 36 кратно 12.

спасибо большое.

Задача 3:

должна получиться примерно так: 

СССССССССС                   ++                                  ++
СС                                     ++                                  ++
СС                       ++++++++++++++        ++++++++++++++
СС                       ++++++++++++++        ++++++++++++++
СС                                     ++                                  ++
СССССССССС                   ++                                  ++                  


Я вообще очень благодарен за потраченное время...правда правда...

Добавлено через 2 минуты и 18 секунд
Блин у меня какая то ерудна, при любой копировании и вставке у меня вылазит какая-то хрень =(( 
http://***/?id****ничего скопировать немогу..может это вирус..чего за ссылка?? ссылку не стал давать, а то вдруг кто-то зайдет ещё =\


Это сообщение отредактировал(а) Zakary - 21.9.2008, 09:21
PM MAIL   Вверх
IKM2007
Дата 21.9.2008, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca

Репутация: 3
Всего: 40



Вот 3-ий код.
Код

#include <iostream>
#include <iomanip>
using namespace std;
void f(int a,int p1,int b,int p2,int c)
{
cout.fill('C');
cout<<setw(a+1)<<' ';
cout.fill(' ');
cout<<setw(p1+1)<<' ';
cout.fill('+');
cout<<setw(b+1)<<' ';
cout.fill(' ');
cout<<setw(p2+1)<<' ';
cout.fill('+');
cout<<setw(c+1)<<' ';
cout<<" "<<endl;
}
void main ()
{
    f(10,9,2,15,2);
    f(2,17,2,15,2);
    f(2,11,14,3,14);
    f(2,11,14,3,14);
    f(2,17,2,15,2);
    f(10,9,2,15,2);
}

Цитата(Zakary @  21.9.2008,  09:20 Найти цитируемый пост)
 надо брать 0.51? не 0.50?

Да, был не прав.Надо 0.5. smile 


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
Zakary
Дата 21.9.2008, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 3.5.2006

Репутация: нет
Всего: нет



Вообщеее...так крутоо....спасибо большое......откомпилить щас немогу......завтра сделаю...ваще спасибо огромное  smile   smile 
PM MAIL   Вверх
Zakary
Дата 25.9.2008, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 3.5.2006

Репутация: нет
Всего: нет



Так, откомпилил все работает..
оюъясните пожалйста как работает программа 2_2 cout.fill заполняет, setw отступает, почему отступает на а+1?
и нижнее что это f() и числа разные, что оно делаешЬ? 
все понял, а вот это вообще непонятно =\ 
пожааалуйста))
PM MAIL   Вверх
bsa
Дата 25.9.2008, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(Zakary @ 25.9.2008,  09:18)
Так, откомпилил все работает..
оюъясните пожалйста как работает программа 2_2 cout.fill заполняет, setw отступает, почему отступает на а+1?
и нижнее что это f() и числа разные, что оно делаешЬ? 
все понял, а вот это вообще непонятно =\ 
пожааалуйста))

http://www.cplusplus.com/reference/iostream/manipulators/

ios::fill - устанавливает символ, которым заполняется пустое место при форматировании (манипулятор std::setfill)
ios::width - устанавливает минимальную ширину вывода (манипулятор std::setw)
итого:
Код
std::cout << std::setw(5) << std::setfill('0') << 'x' << std::endl;
Выведет "0000x"
PM   Вверх
Zakary
Дата 25.9.2008, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 3.5.2006

Репутация: нет
Всего: нет



вообще все понял, спасибо большое....
но 1 новый, для чего мы 2 раза открываем закрываем скобки?

Добавлено через 1 минуту и 46 секунд
и могу ли я вместо void f использовать int f; return 0; ? 
кстати, если ставишь вместо void main () - int main () то он почему-то не требует return 0;

просто проблемы в линуксе с войд, лучше инт наверное...


PM MAIL   Вверх
IKM2007
Дата 26.9.2008, 04:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca

Репутация: 3
Всего: 40



Цитата(Zakary @  25.9.2008,  22:55 Найти цитируемый пост)
 для чего мы 2 раза открываем закрываем скобки?

Не понял, о чем ты. Можешь сказать в каких строках?


Цитата(Zakary @  25.9.2008,  22:55 Найти цитируемый пост)
и могу ли я вместо void f использовать int f; return 0; ? 

Да, но нету смысла, так как функция ничего не возвращает.


Цитата(Zakary @  25.9.2008,  22:55 Найти цитируемый пост)
кстати, если ставишь вместо void main () - int main () то он почему-то не требует return 0;

Это в новых компиляторах, раньше так не было.


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
bsa
Дата 26.9.2008, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(Zakary @ 25.9.2008,  22:55)
и могу ли я вместо void f использовать int f; return 0; ? 
кстати, если ставишь вместо void main () - int main () то он почему-то не требует return 0;

просто проблемы в линуксе с войд, лучше инт наверное...

По стандарту функция main должна быть вида:
Код
int main(int argc, char *args[])
{
...
}
Но возможно и без аргументов написать:
Код
int main()
{
...
}
Соответственно в конце ее должен быть return. Причем, считается, если программа вернула 0, то она выполнила свою задачу верно, в противном случае произошла ошибка.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1036 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.