Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 19
1

Заполнить массив, увеличивая элементы на коэффициент

09.06.2016, 21:53. Просмотров 830. Ответов 21
Метки нет (Все метки)

Всем доброго времени суток!

Я учусь писать свои первые коды на C++.
Опыт дней 10 самообучения)

Пытаюсь решить вот такую задачу и не могу найти/ не понимаю как её решить.
Задача
Есть произвольный массив из 15 элементов.
Мне нужно ввести данные в этот массив так чтобы первые 3 элемента этого массива были постоянными величинами ( в моем случае ==0) а начиная с четвёртого элемента выполнялось произведение 4го элемента на 0.001 и результат этого произведения был элементом 5, а дальше элемент 5ть умножался на 0,001 и так далее.
Помогите пожалуйста, сам не могу понять как действовать.

Спасибо)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2016, 21:53
Ответы с готовыми решениями:

Из массива случайных чисел сделать другой массив, умножая четные и нечетные элементы на коэффициент
В SG1 ввести несколько (=>10)целых чисел из интервала (массив №1,random).На его основе создать...

Сжать(сдвинуть элементы) массив, удалив из него все 0, и заполнить освободившиеся справа элементы значениями -1;
8. ***Сжать(сдвинуть элементы) массив, удалив из него все 0, и заполнить освободившиеся справа...

Сжать массив, удалив из него все элементы модуль которых не превышает 1. Заполнить эти элементы нулями
Во время перестановки, когда первый 0 достигает конца массива, выскакивает ошибка и прога...

Сжать массив, удалив из него все элементы, которые лежат в интервале [a,b]. Освободившиеся в конце элементы массива заполнить нулями.
У меня такая проблема: Сжать массив, удалив из него все элементы, которые лежат в интервале ....

21
6909 / 5974 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
09.06.2016, 21:57 2
C++
1
for (int i = 3; i < 14; ++i) a[i + 1] = a[i] * 1E-3;
0
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 19
09.06.2016, 22:28  [ТС] 3
Спасибо большое! Логику кажется понял)
Единственное не понял что за значение 1E-3. Это умножение на мои 0,001?)
Пытаюсь компилировать, компилятор ругается, ему E не нравится...
0
6909 / 5974 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
09.06.2016, 22:40 4
Не может такого быть. Ты E английскую поставил?
0
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 19
09.06.2016, 22:56  [ТС] 5
100% я что-то не так написал) утром перепишу
Спасибо ещё раз за помощь)
0
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 19
15.06.2016, 09:36  [ТС] 6
Можете подсказать как сделать ввод с клавиатуры элементов массива.
У меня была задача каждый нечетный эл массива увеличить на 1, а четный на 2. Я эту задачу выполнил, теперь хочу немного усложнить задачу и сделать так чтобы элементы массива вводились с клавиатуры, но ничего не выходит(
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main()
{
    double a [10];
    cout << "["<< i+1<<"]" <<":" ;
    cin>> a[i];
    
    for (int i=0; i<10; i++);
    {
        if (i % 2 ==0)
            a [i] += 1;
        else
            a [i] += 2;
        
        cout << a[i] << " " <<endl;
    }
    
    return 0;
}
0
6909 / 5974 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
15.06.2016, 09:50 7
Цикла почему нет?
C++
1
2
3
4
5
for (int i=0; i<10; i++);
{
  cout << "["<< i+1<<"]" <<":" ;
  cin>> a[i];
}
0
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 19
15.06.2016, 10:06  [ТС] 8
Отлично! Спасибо)
Можете ещё подсказать, с четными и нечетными элементами мне понятно, а если например прибавлять один или два к произвольному элементу массива имеющий значение четное или нечетное. Не могу понять как это сделать

Добавлено через 2 минуты
Ого, сам додумал)) спасибо за беспокойство)
У меня самого получилось)
0
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 19
21.06.2016, 15:09  [ТС] 9
Здравствуйте! Вы можете мне помочь вот с каким вопросом, я делаю задание 1.5 из учебника по c++ Липмана и у меня возникает ошибка в строке if (total.isbn () == trans.isbn()) пишит что это ошибка ( type std::string (aka basic_string<char>, char__traits<char>, allocator<char>>) doesn't provide a call operator

Все работало до момента как в коде появилась строка с total.isbn () что-то не нравится компилятору и все. Икал в нете инфу но толи не понял, толи не нашёл
0
6909 / 5974 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
21.06.2016, 18:24 10
Программа где?
0
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 19
23.06.2016, 21:56  [ТС] 11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include "Sales_item.h"
 
 
int main ( )
// программа для книжного магазина
{
    Sales_item total; //переменная для хранения данных следующей транзакции
    //прочитать первую транзакцию и удостовериться в наличии данных для обработки
    if (std::cin>> total)
    {
        Sales_item trans; // переменная для хранения текущей транзакции
        //  читать и обрабатывать остальные транзакции
        while (std::cin>>trans)
        {
            // если все еще обрабатывается та же книга
          [COLOR="Red"]  if ('total.isbn ()' == 'trans.isbn ()')[/COLOR] // выдает ошибку в этом месте,  не нравится isbn
                total+=trans; // пополнение текущей суммы
            else
            {
                // отображать результат по пред идущей книге
                std::cout<< total << std::endl; // теперь total относится к следующей книге
            }
        }
        std::cout<<total<<std::endl; //отобразить последнюю запись
    } else {
        // нет ввода! предупредить пользователя
        std::cerr<< "No data?!" << std::endl;
        return -1; // свидетельство отказа
    }
}
Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
#ifndef SALESITEM_H
 
#define SALESITEM_H
 
 
 
// Definition of Sales_item class and related functions goes here
 
 
 
 
 
#include <iostream>
 
#include <string>
 
 
 
class Sales_item {
    
    friend bool operator==(const Sales_item&, const Sales_item&);
    
    // other members as before
    
public:
    
    // added constructors to initialize from a string or an istream
    
    Sales_item(const std::string &book):
    
    isbn(book), units_sold(0), revenue(0.0) { }
    
    Sales_item(std::istream &is) { is >> *this; }
    
    friend std::istream& operator>>(std::istream&, Sales_item&);
    
    friend std::ostream& operator<<(std::ostream&, const Sales_item&);
    
public:
    
    // operations on Sales_item objects
    
    // member binary operator: left-hand operand bound to implicit this pointer
    
    Sales_item& operator+=(const Sales_item&);
    
    // other members as before
    
    
    
public:
    
    // operations on Sales_item objects
    
    std::string isbn;
   
    double avg_price() const;
    
    bool same_isbn(const Sales_item &rhs) const
    
    { return isbn == rhs.isbn; }
    
    // default constructor needed to initialize members of built-in type
    
    Sales_item(): units_sold(0), revenue(0.0) { }
    
    // private members as before
    
public:
    
    //std::string isbn;
    
    unsigned units_sold;
    
    double revenue;
    
    
    
};
 
 
 
 
 
// nonmember binary operator: must declare a parameter for each operand
 
Sales_item operator+(const Sales_item&, const Sales_item&);
 
 
 
inline bool
 
operator==(const Sales_item &lhs, const Sales_item &rhs)
 
{
    
    // must be made a friend of Sales_item
    
    return lhs.units_sold == rhs.units_sold &&
    
    lhs.revenue == rhs.revenue &&
    
    lhs.same_isbn(rhs);
    
}
 
 
 
inline bool
 
operator!=(const Sales_item &lhs, const Sales_item &rhs)
 
{
    
    return !(lhs == rhs); // != defined in terms of operator==
    
}
 
 
 
using std::istream; using std::ostream;
 
 
 
// assumes that both objects refer to the same isbn
 
inline
 
Sales_item& Sales_item::operator+=(const Sales_item& rhs)
 
{
    
    units_sold += rhs.units_sold;
    
    revenue += rhs.revenue;
    
    return *this;
    
}
 
 
 
// assumes that both objects refer to the same isbn
 
inline
 
Sales_item
 
operator+(const Sales_item& lhs, const Sales_item& rhs)
 
{
    
    Sales_item ret(lhs);  // copy lhs into a local object that we'll return
    
    ret += rhs;           // add in the contents of rhs
    
    return ret;           // return ret by value
    
}
 
 
 
inline
 
istream&
 
operator>>(istream& in, Sales_item& s)
 
{
    
    double price;
    
    in >> s.isbn >> s.units_sold >> price;
    
    // check that the inputs succeeded
    
    if (in)
        
        s.revenue = s.units_sold * price;
    
    else
        
        s = Sales_item();  // input failed: reset object to default state
    
    return in;
    
}
 
 
 
inline
 
ostream&
 
operator<<(ostream& out, const Sales_item& s)
 
{
    
    out << s.isbn << "\t" << s.units_sold << "\t"
    
    << s.revenue << "\t" <<  s.avg_price();
    
    return out;
    
}
 
 
 
inline
 
double Sales_item::avg_price() const
 
{
    
    if (units_sold)
        
        return revenue/units_sold;
    
    else
        
        return 0;
    
}
 
 
 
 
 
#endif
0
6909 / 5974 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
23.06.2016, 22:30 12
isbn - поле, зачем ты скобки там ставишь?
0
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 19
11.07.2016, 15:29  [ТС] 13
Подскажите пожалуйста как мне вывести значение этого вектора, через cout не выходит, что я не так делаю?
C++
1
2
3
4
5
6
7
8
9
10
{
vector <unsigned> scores (11,0);
unsigned grade;
while (cin>>grade)
 {
if (grade <=100)
++scores [grade/10];
}
cout << scores << " "<<endl;
}
0
253 / 230 / 185
Регистрация: 02.04.2016
Сообщений: 898
11.07.2016, 16:19 14
вот так выводится вектор.
C++
1
2
for (auto a:scores)
cout << a << endl;
Добавлено через 1 минуту
и твой цикл бесконечный
1
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 19
12.07.2016, 14:04  [ТС] 15
Спасибо большое за помощь! Очень помогли)

Добавлено через 21 час 27 минут
Подскажите ещё пожалуйста: у меня есть задача.1) Прочитайте последовательность слов из потока cin и сохранить их в векторе. Прочитав все слова обработайте вектор и переведите символы каждого слова в верхний регистр. 2) отобразите преобразованные элементы по 8 слов на строку.
1) часть задания у меня кажется получилась (возможно я и не прав, но результат выходит тот который надо)
C++
1
2
3
4
5
6
7
8
9
{
string s;
get line (cin, s);
for (auto &c :s) // может лишнее, но без этой строки ругается компилятор
vector <string> s;
for auto &c :s)
c =toupper (c)
cout << s; 
}
Проблема со второй часть задания, не могу понять как её сюда вписать(
0
253 / 230 / 185
Регистрация: 02.04.2016
Сообщений: 898
12.07.2016, 18:22 16
Так правильно
C++
1
2
3
4
5
6
7
int main () {
string s;
getline (cin, s);
for (auto &c :s)
c = toupper (c)
cout << s; 
}
1
Котовчанин
932 / 472 / 200
Регистрация: 16.02.2010
Сообщений: 3,332
Записей в блоге: 37
12.07.2016, 19:06 17
Цитата Сообщение от Deelooc Посмотреть сообщение
Проблема со второй часть задания, не могу понять как её сюда вписать(
Циклом, считали до пробела - первое слово. От следующего элемента опять до пробела. И так восемь раз. Потом на новую строку и опять то же самое.
1
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 19
13.07.2016, 10:55  [ТС] 18
С логикой я все понял, а вот с реализацией проблема. Я не могу понять что дальше делать, я считаю кол-во пробелов и достигаю загонного кол-ва (8 в данной задачи) после этого я должен перенести часть текста, но как это сделать я технически не представляю. Более того поёжилась ещё проблема, после того как я перенесу 8 слов, как мне сделать так чтобы данное действие повторялось и повторялось. Пока не хватает знаний чтобы это понять(
Подскажите как это сделать, спасибо!
Мой вариант цикла определяющий кол-во пробелов
C++
1
2
3
for (i=0; s[i] != 0; i++) // мои условия для проверки текста
{ if (a[i] == ' ') // определяю наличие пробелов 
++d; } // считаю их
Что делать дальше не понимаю, возможно я вообще не правильно и до этого этапа дошёл
0
253 / 230 / 185
Регистрация: 02.04.2016
Сообщений: 898
13.07.2016, 12:53 19
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main() {
    string s;
    getline(cin,s);
    int cnt = 0;
    for (int i = 0; i < s.length(); i++) {
        if (s[i] == ' ')
            cnt++;
        if (cnt == 8) {
            putchar('\n');
            cnt = 0;
        }
        else
            putchar(s[i]);
    }
    return 0;
}
0
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 19
13.07.2016, 13:58  [ТС] 20
Спасибо большое, даже огромное!! Я все утро потратил на решение этой задачи))
Спасибо Всем кто откликнулся)

Добавлено через 53 минуты
Можете сказать что делает строка 9 и 13
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.07.2016, 13:58

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a, b]. освободившиеся в конце массива элементы заполнить нулями.
Сжать массив, удалив из него все элементы, модуль которых находится в интервале . освободившиеся в...

Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. Освободившиеся в конце массива элементы заполнить нулями
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1. максимальный элемент...

Заполнить массив случайными числами в интервале [-100,100] и переставить элементы так, чтобы все положительные элементы
Заполнить массив случайными числами в интервале и переставить элементы так, чтобы все...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.