Консультация № 195866
17.06.2019, 09:55
0.00 руб.
0 23 0
Тема: «Одномерные массивы в С++».
Цель работы: получить практические навыки работы с одномерными массивами на языке высокого уровня C++.
Задание: разработать программу согласно индивидуальному варианту. Определить входные и выходные данные. Входные данные ввести с клавиатуры. Результат вывести на экран монитора. Размерность массива указать через константу.

Создать числовой массив A[1..N].
Вычислить произведение всех элементов, значения которых лежат в интервале [1,10]. Выдать на экран количество этих элементов и их произведение.

Итак, для начала вопрос: как создать данный массив? Гугление выдает результаты только по паскалю.

Обсуждение

давно
Старший Модератор
31795
6196
17.06.2019, 10:40
общий
Адресаты:
Цитата: lordwarrior161
Гугление выдает результаты только по паскалю

Паскалем и ответим:
[code lang=pascal]var A:array[1..N]of integer;[/code]
В этой строке Вы выделяете память под массив, все обращения к массиву будут происходить именно к этому участку памяти. Аналог С:
Код:
int A[N];

Единственное уточнение, паскаль автоматически приводит форму [a..N], к форме [0..N-a], в С это должен делать кодер.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
403037
55
17.06.2019, 10:45
общий
17.06.2019, 11:02
Цитата: Зенченко Константин Николаевич
int A[N];


Нужен именно С, паскаля нет в программе)) спасибо)

Компилятор уже вывалил ошибку не пойму, что имеется ввиду? что количество элементов в массиве от 1 до N?
давно
Старший Модератор
31795
6196
17.06.2019, 11:08
общий
Адресаты:
Читаем ещё раз:
Цитата: Зенченко Константин Николаевич
Единственное уточнение, паскаль автоматически приводит форму [a..N], к форме [0..N-a], в С это должен делать кодер.

Ну может больше.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
403037
55
17.06.2019, 11:12
общий
Цитата: Зенченко Константин Николаевич
в С это должен делать кодер


так вот я и не пойму, как это сделать
давно
Старший Модератор
31795
6196
17.06.2019, 11:26
общий
Адресаты:
Я уже показал как:
Код:
int A[N];

= выделить под массив N байт, слов, двойных слов - это зависит от того как компилятор понимает int.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
403037
55
17.06.2019, 11:29
общий
Цитата: Зенченко Константин Николаевич
Я уже показал как:


Все равно не понимаю. можете примерно код набросать для понимания?
давно
Старший Модератор
31795
6196
17.06.2019, 11:45
общий
Адресаты:
Покажите, что у Вас есть. И укажите что именно Вам не нравится.
Кодами мерится не будем, чтобы не было как в анекдоте:

поймали туземцы мужика.
-у нас слон грустный, расмеши его.
мужик зашел, поговорил, слон ржет.
проходит время снова мужика ловят.
-у нас слон ржет постоянно, сделай что -то.
мужик зашел, поговорил, слон плачет.
-слушай. что ты сделал, раскажи.
-ну в первый раз предложил яйцами померяться, второй раз сравнили.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
403037
55
17.06.2019, 11:47
общий
Цитата: Зенченко Константин Николаевич
Покажите, что у Вас есть.


Да вот именно, что ничего нету не понимаю, как массив объявить, от того и все проблемы
давно
Старший Модератор
31795
6196
17.06.2019, 11:56
общий
Адресаты:
Тогда читайте Это.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
403037
55
17.06.2019, 11:59
общий
17.06.2019, 12:00
Цитата: Зенченко Константин Николаевич
Тогда читайте Это.


читал и эту страницу тоже, у меня при объявлении массива вываливаются ошибки

пытаюсь сделать что-то вроде

Код:
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<iostream.h>
void main()
int A[N] = {} // и вот тут ошибка
давно
Старший Модератор
31795
6196
17.06.2019, 12:10
общий
Адресаты:
Цитата: lordwarrior161
int A[N] = {} // и вот тут ошибка

N должно быть уже определено, т.е. иметь некоторое значение.
Цитата: lordwarrior161
int A[4] = {1,2,3.4}; // и вот тут ошибка

это инициализированный массив, в котором уже при компиляции есть значения.
Цитата: lordwarrior161
int A[4];// и вот тут ошибка

пустой массив, значания которого нужно добавить во время работы программы.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
403037
55
17.06.2019, 12:14
общий
Хоть убейте, но не могу понять, как объявить A[1..N] - так тоже ошибку выдает

давно
Старший Модератор
31795
6196
17.06.2019, 13:21
общий
Адресаты:
Цитата: lordwarrior161
Хоть убейте


Бог с Вами, Вы нам ещё жывой нужны, кто будет нам "мозг выносить"?
Читаем ещё раз:
Цитата: Зенченко Константин Николаевич
Единственное уточнение, паскаль автоматически приводит форму [a..N], к форме [0..N-a], в С это должен делать кодер.

Ну может больше.

Паскаль var A:array[1..N]of integer; определяет индексы с помощю которых можно обратится к массиву, если этот индекс будет вне 1..N, то вовремя работы программы у Вас вылетит ошибка "OUT RANGE". В С\С++ ВСЕ МАССИВЫ начинаются с индекса = нуль и до N. т.е. N - указывает количество байт/слов/двойных слов(зависит от компилятора). Но жесткого контроля индексов нет.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
403037
55
17.06.2019, 13:39
общий
Цитата: Зенченко Константин Николаевич
кто будет нам "мозг выносить"?




То, что массивы начинаются с 0 - это я знаю. Я не пойму, что значит N. это какое-то число, которое я сам по условию задачи должен придумать? я понимаю выражение
Код:
 int [количество элементов] = {значения массива} 
// ну как пример
int [10] = {0,1,2,3,4,5,6,7,8,9};
// а вот так записать я уже не могу, одни ошибки сыпятся
int [1..N] = {значения};


Как было в одной из прошлых тем про ассемблер, я не понимаю, чего от меня хотят
давно
Старший Модератор
31795
6196
17.06.2019, 14:11
общий
Адресаты:
Не хватает только имени самой переменной.
Цитата: lordwarrior161
int [10] = {0,1,2,3,4,5,6,7,8,9};

где:
int - тип элемента;
тут должно быть имя переменной;
[10] - количество элементов;
= {0,1,2,3,4,5,6,7,8,9} - значение элементов.



Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
403037
55
17.06.2019, 14:14
общий
17.06.2019, 14:18
Цитата: Зенченко Константин Николаевич
Не хватает только имени самой переменной


ой, это я по невнимательности имя переменной не объявил, но это всего лишь пример

а ошибку выдает "too many decimal points"
давно
Старший Модератор
31795
6196
17.06.2019, 14:43
общий
Адресаты:
Цитата: lordwarrior161
это я по невнимательности имя переменной не объявил

И читаете тоже не внимательно:
int a[]={5,-12,-12,9,10,0,-9,-12,-1,23,65,64,11,43,39,-15};
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
403037
55
17.06.2019, 14:59
общий
17.06.2019, 15:01
Цитата: Зенченко Константин Николаевич
int a[]={5,-12,-12,9,10,0,-9,-12,-1,23,65,64,11,43,39,-15};


а что это за массив такой?

Код:
int a[] = {значения}


если нету количества элементов [], значит язык сам определяет их количество? в Swift, например, я легко могу определить диапазон массива, пусть будет от 1 до 10
Код:
var array [1..10] = [1,2,3,4,5,6,7,8,9]
,
тут вот честное слово не понимаю.. A[1..N] - N тут какое-то энное число? А какое? что от меня хотят? одни вопросы к этому языку СИ...
давно
Старший Модератор
31795
6196
17.06.2019, 15:19
общий
Адресаты:
Цитата: lordwarrior161
если нету количества элементов [], значит язык сам определяет их количество


В данном случае компилятор сам определит размер одномерного массива. Размер массива можно не указывать только при его инициализации, при обычном объявлении массива обязательно нужно указывать размер массива.


Цитата: lordwarrior161
N тут какое-то энное число? А какое?

Да, любое. Возмите десяток монет, с разным номиналом, бросьте и посчитайте сумму тех монет, которые упали "орлом" вниз. Пусть N=этой сумме.

Это Ваш код и любые: A, B, . . . , N,M, . . . , X, Y, Z - Ваши, не хотите придумывать, позвоните другу, пусть, он придумает N, а потом назовет ещё N случайных чисел.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
403037
55
17.06.2019, 15:37
общий
Цитата: Зенченко Константин Николаевич
Это Ваш код и любые: A, B, . . . , N,M, . . . , X, Y, Z


получается, что размер массива я определяю сам? от 1 до N?
давно
Старший Модератор
31795
6196
17.06.2019, 15:52
общий
Адресаты:
Вы сами, только не от 1 до N, а N-элементов массива, от 0 до N-1.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
403037
55
17.06.2019, 16:06
общий
17.06.2019, 16:21
Цитата: Зенченко Константин Николаевич
Вы сами, только не от 1 до N, а N-элементов массива, от 0 до N-1.


да, я это и имел ввиду)) уже заговариваться начал...

Второй вопрос. Как ввести значение массива в программу? Обычную переменную ввожу так:
Код:
cout<<”\n a=”; cin>>a;


Над заданием сижу с утра, вера в себя потеряна можете выложить примерное решение для понимания что и как делать?
давно
Старший Модератор
31795
6196
17.06.2019, 18:15
общий
Адресаты:
Я Вам давал ссылку там есть всё. И даже
Цитата: lordwarrior161
Как ввести значение массива в программу?

Ищите строку:
Программа должна последовательно считывать десять введённых чисел с клавиатуры.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа