Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
2 / 1 / 0
Регистрация: 01.12.2011
Сообщений: 45
1

Учусь умножать

03.08.2013, 17:07. Показов 2198. Ответов 36
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, дорогие обитатели CyberForum
Есть небольшая просьба, прошу подтолкнуть меня к правильному решению задачи.
Изначально мне нужно было написать программу, которая считывает с клавиатуры имя и возраст, и потом их выводит на экран, но после выполнения этого задания возникло новое, тяжело дающееся мне задание: Нужно вводить возраст в годах и выводить его в месяцах. Нужного материала для решения этой задачи я не смог найти, поэтому обращаюсь к знающим: Помогите, пожалуйста
Еще мне интересно, почему возраст выводится не в скобках, как я пытался сделать. Если кто поймет в ходе просмотра кода, укажите на мою ошибку, пожалуйста.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
inline void keep_window_open() {char ch; cin>>ch; }
 
int main()
{
    setlocale[LC_ALL, "Russian"];
    cout << "Пожалуйста, введите свое имя и возраст\n";
    string first_name;
    int age;
    cin >> first_name;
    cin >> age;
    int age_obc;
    age_obc==age*12;
    age==age_obc;
    cout << "Hello, " << first_name << " (age " << age << ")\n";
        keep_window_open();
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.08.2013, 17:07
Ответы с готовыми решениями:

Учусь ли я?
Вот создаю консольные программы которые что-то узнают по каким то алгоритмам, пытаюсь на разных...

Учусь c ++
В общем читал статью в учебнике &quot;Умные опеpатоpы&quot;. Дальше идет такая пpогpаммка. #include...

Создать независимую функцию, которая будет умножать две матрицы
Добрый день всем!:) Такой вопрос. Создала свой класс &quot;двухмерной&quot; матрицы. Хочу создать...

Написать функцию которая будет умножать любую строку на уже заданную матрицу
Написать функцию которая будет умножать любую строку на уже заданную матрицу

36
Discoverer
03.08.2013, 17:41     Учусь умножать
  #21

Не по теме:

Вот меня умиляют эти трогательные советы насчет "попроще". Автор спрашивал кого-нибудь об этом?
И вообще, эта книга как раз и предназначена для тех, кто никогда не занимался программированием.

0
Даниил
03.08.2013, 17:41
  #22

Не по теме:

На будущее, чтоб писать чей-то ник не нужно вручную всё делать, просто нажимаете по нику и всё :)

0
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
03.08.2013, 17:45 23
Цитата Сообщение от worp1 Посмотреть сообщение
VLK, "Тяжело в учении, легко в бою"!
Но если начнется действительно что-то очень тяжелое для меня, последую Вашему совету, спасибо
Учение и бой, это физические упражнения, тут это закономерно, программирование это уже работа головой, и тут главное понять, и чем проще, тем лучше, потому что если ты что то не так понимаешь, то это потом может печально закончиться, а если у тебя возникают такие вопросы:

Цитата Сообщение от worp1 Посмотреть сообщение
А system("pause"); это разве не тоже самое, что и keep_window_open();?
то ты явно много понимаешь не так, причем на столько элементарные вещи.
0
2 / 1 / 0
Регистрация: 01.12.2011
Сообщений: 45
03.08.2013, 18:06  [ТС] 24
Спасибо, Даниил, теперь буду кликать по нику

VLK, не нужно на меня давить, пожалуйста.
Я хочу попробовать свои силы именно с этой книжкой, ибо мне она понравилась. Приятный автор
Обещаю, если я почувствую, что эта книга, которую Страуструп написал именно для новичков, покажется мне сложной, то я обращусь к Вам за более легкой литературой по программированию, либо полезу в поисковик, если у Вас не будет на меня времени/желания
А на счет понимания, часто само понимание приходит во время выполнения/попытки выполнить чего-либо.
Никому зла не желаю, поэтому без обид, пожалуйста.
0
15 / 15 / 2
Регистрация: 26.04.2012
Сообщений: 1,091
03.08.2013, 18:37 25
Полчаса думал над строкой
C++
1
char name[100];
!!! И вы знаете, до меня дошло- это несколько переменных, точнее сто, и их всех зовут name, и каждая типа char.
Так ли я понимаю, что он образуют некую последовательность? Ведь это наверно так можно и нужно понимать.
Тогда как происходит ввод std::cin >> name; Как машина определяет, какая буква куда попадет, и главное, как выходит, что при выводе буквы выводятся не кучей, а в той же последовательности?

Добавлено через 11 минут
Скомпилировал. При попытке выполнить вместо вменяемых слов, символы, весьма напаминающие кирилицу 16 века...
0
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
03.08.2013, 18:42 26
char - это значит что тип данных символы
name[100] - это значит массив из 100 элементов

char name[100] - массив символов из 100 элементов, если опустить что цифры, плюсы и минусы тоже являются символами, и мы будем вводить только буквы, то это массив из 100 букв


[100] - начинается этот массив с 0 и заканчивается 99, т.е. name[0] - name[99]

std::cin >> name;

каждая введенная буква будет записываться в массив, т.е. если ты введешь - Batonov, то

name[0] - B
name[1] - a
name[2] - t
name[3] - o
name[4] - n
name[5] - o
name[6] - v

Все остальные элементы ([7] - [99]) заполнятся пустотой (или пробелами, я уже точно не помню)

если при вводе ты введешь больше 100 элементов, то 101, 102 и т.д. символы будут проигнорированы

Что бы вывести определенной элемент массива, надо написать
std::cout << name[5];
что бы вывести весь массив, соответственно:
std::cout << name;

Добавлено через 2 минуты
Цитата Сообщение от Dimka-novitsek Посмотреть сообщение
Скомпилировал. При попытке выполнить вместо вменяемых слов, символы, весьма напаминающие кирилицу 16 века...
Вводить надо латинские буквы, до кириллицы еще рано.
1
15 / 15 / 2
Регистрация: 26.04.2012
Сообщений: 1,091
03.08.2013, 18:45 27
СПАСИБО!!!!!!!!!!!!!!!!!!!!!
0
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
03.08.2013, 18:54 28
Кстати программа работает довольно интересно если попробовать ввести по мимо имени еще и фамилию, например Batonov Anton

Добавлено через 7 минут
Да, наверное даже сейчас создам отдельную тему, почему так, самому стало интересно
0
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
03.08.2013, 19:01 29
Цитата Сообщение от VLK Посмотреть сообщение
Все остальные элементы ([7] - [99]) заполнятся пустотой (или пробелами, я уже точно не помню)
В элемент [7] запишется нуль-символ, в последующих останется мусор.

Цитата Сообщение от VLK Посмотреть сообщение
если при вводе ты введешь больше 100 элементов, то 101, 102 и т.д. символы будут проигнорированы
Будет выход за пределы массива.
1
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
03.08.2013, 19:01 30
Хотя нет, у меня косяк в коде
std::cout << "Имя: " << name << " возраст: " << age << " месяцев \n";
0
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
03.08.2013, 19:03 31
Цитата Сообщение от VLK Посмотреть сообщение
Кстати программа работает довольно интересно если попробовать ввести по мимо имени еще и фамилию, например Batonov Anton
>> читает до пробельного символа. Используйте istream::getline
0
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
03.08.2013, 19:11 32
Цитата Сообщение от Schizorb Посмотреть сообщение
Будет выход за пределы массива.
точно? (это вопрос), а в каком случае будет игнорироваться?
на сколько я помню если писать name[101] вот тогда действительно будет выходить, и если выводить, std::cout << name[101] тоже будет выводить значения из других ячеек памяти, за пределами программы.

Добавлено через 1 минуту
Хотя да, дейвительно, будет выходить за придел массива

Добавлено через 3 минуты
И насчет мусора верно.

Добавлено через 1 минуту
Цитата Сообщение от Schizorb Посмотреть сообщение
>> читает до пробельного символа. Используйте istream::getline
не, у меня был косяк в программе за место возраста имя выводило, а за место имени возраст, и я минут 5 не мог найти ошибку, жесть.. свои ошибки тяжело увидеть. Ну в смысле в этом заключалась интересность работы программы.
1
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
03.08.2013, 19:11 33
Цитата Сообщение от VLK Посмотреть сообщение
точно? (это вопрос), а в каком случае будет игнорироваться?
Можно явно указать длину вводимой строки, с помощью setw:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <iomanip>
 
int main()
{
    const int size = 5;
    char name[size];
    
    std::cin >> std::setw(size) >> name;
    std::cout << name;
}
Так получится ввести строку без пробелов, длиной size - 1 (последний элемент - под нуль-символ)
2
15 / 15 / 2
Регистрация: 26.04.2012
Сообщений: 1,091
03.08.2013, 19:24 34
А прикиньте, что в исходном варианте при вводе пробела возникает вобще тупо глюк!! Вот
Миниатюры
Учусь умножать  
0
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
03.08.2013, 19:25 35
хотя не знаю что у тебя за ошибки, ладно, мне пора..
0
Schizorb
03.08.2013, 19:27
  #36

Не по теме:

Цитата Сообщение от Dimka-novitsek Посмотреть сообщение
А прикиньте
Строка ("вышекшо") из потока считалась нормально, а потом ожидается int, а вы подсовываете хрень. Вот и весь глюк.

0
15 / 15 / 2
Регистрация: 26.04.2012
Сообщений: 1,091
03.08.2013, 20:09 37
Как имено это происходит. Прога дальше не ждет ввода возраста, а исполняет все дальше без паузы, выдавая то самое. Как-то так.

Добавлено через 32 секунды
Ну, да.

Добавлено через 38 минут
Простите, а как это все работает? И что это std::setw(size)?
0
03.08.2013, 20:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.08.2013, 20:09
Помогаю со студенческими работами здесь

Шаблон класса массив, который будет выводить матрицы, а также складывать/вычитать/умножать
Всем привет. Нужно создать шаблон класса массив, который будет выводить матрицы, а также...

Учусь программированию на языке с++ самостоятельно
Учусь программированию на языке с++ самостоятельно (уроки Дениса Маркова в Ютуб). После урока с...

Перегрузка операторов. Учусь. Ошибка
перегрузка операторов.. ЗАДАНИЕ: М2=М1-V – из М1 удалить строки, сумма элементов которых больше...

учусь разбирать чужой код
что делает эта функция? static unsigned long foo (char *w) { int c; unsigned long u = 0;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru