Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > элементы массива


Автор: 555shiro 16.10.2010, 11:06
Здравствуйте !
 попробовал написать простенькую прогу,хотел чтобы она выводила все элементы массива,но вместо этого выводится 5,почему ?


Код

#include <iostream.h>
#include <conio.h>
void main ()
{
int i;
 int a[5];
       for(i=0;i<5;i++)
cin>>i;
cout<<a[i]<<" ";

getch ();
}


Автор: mekhanikus 16.10.2010, 12:04
Хорошо, что она вообще что-то выводит, а не громко падает.
Почитай ещё про циклы и  про массивы.

Код

#include <iostream.h>
#include <conio.h>
void main ()
{
int i;
 int a[5];
       for(i=0;i<5;i++) cin>>a[i];
       for(i=0;i<5;i++) cout<<a[i]<<" ";

getch ();
}

Автор: LeD4eG 16.10.2010, 12:50
может, это пригодиться:
1. запомни, что переменная i - это не значение элемента массива. i - это номер элемента. в данном случае (размерность массива 5) номера будут 0, 1, 2, 3, 4. а чтобы получить значение элемента, стоящего на определённом месте, необходимо подставить номер этого элемента, то есть a[0], a[1] и т.д. тем самым ты как говоришь: просмотреть значение элемента массива а, стоящем на i месте.

2. после того, как объявил массив, необходимо ввести его элементы (ну это для нас, для новичков smile ). так нельзя сразу записать все элементы, заводим цикл, который будет пробегать по значениям номеров элементов. и на каждой итерации будет вводится одно значение элемента и записываться в определённый номер.

3. по началу, пока в голове не отложится чёткое понимание, сопровождай программу контрольным выводом значений массива. для также заводится цикл и за одну итерацию также выводится одно значение элемента, стоящего на определённом месте. после проверки строки с выводом массива можно, либо удалить, либо закомментировать.

и запомни номера элементов в массивах начинаются не с 1, а с нуля 0. обращение к элементам массива за пределами размерности массива - это очень серьёзная ошибка! то есть в твоём случае размерность равна 5. как я уже писал элементы у тебя будут стоять на номерах: 0, 1, 2, 3, 4. но при попытке обратиться к элементу a[5] будет возникать ошибка. для человека размерность равна n=5, но для обращения всегда номер элемента будет n-1.

Автор: 555shiro 16.10.2010, 13:10
При случае с двумерным массивом,как сделать чтобы выводились элементы не в одну строчку через пробел,а как матрица квадратная чтобы понятней  и удобней было ?

Код

#include <iostream.h>
#include <conio.h>
void main ()
{
int i,j;
 int a[4][4];
for(i=0;i<4;i++)
for(j=0;j<4;j++)
   cin>>a[i][j];
for(i=0;i<4;i++)
for(j=0;j<4;j++)
   cout<<a[i][j]<<" ";
getch ();
}

Автор: Teleport 16.10.2010, 14:54
Код

#include <iostream>

using namespace std;

int main()
{
    int a[4][4];
    int i, j;
    // ввод массива вручную
    for (i = 0; i < 4; i++)
        for (j = 0; j < 4; j++)
        {
            cout << "Vvedite element " << i << " " << j << endl;
            cin >> a[i][j];
        }

    cout << "Massiv:" << endl;
    // вывод массива на экран
    for (i = 0; i < 4; i++)
    {
        for (j = 0; j < 4; j++)
            cout << a[i][j] << "  ";
        cout << endl; //тут обрываем строку
    }
    return 0;
}

Автор: 555shiro 18.10.2010, 07:03
а как обратиться не к элементу(например a[0][1] ) а к целой строке сразу или столбцу ? и вообще возможно ли такое на данном языке ?

Автор: ATAMAN200 18.10.2010, 20:20
Чтение из массива и вывод на экран

Код

#include "stdafx.h" 
#include <iostream>
#include "conio.h" 
using namespace std;
int aaa[] = {110,210,220,567,895,479}, bbb;
int main()
{
    for(aaa[bbb]; bbb < sizeof(aaa)/4; bbb++)
        cout << aaa[bbb]  << endl;
    getch();
}

Автор: Crafty 18.10.2010, 20:38
Цитата(ATAMAN200 @  18.10.2010,  21:20 Найти цитируемый пост)
Чтение из массива и вывод на экран

Код

sizeof(aaa)/4
 int не обязательно 4 байта.
Код

#include <iostream>

using namespace std;
int aaa[] = {110,210,220,567,895,479};
int main()
{
  for(size_t bbb = 0; bbb < sizeof(aaa)/sizeof(*aaa); ++bbb)
    cout << aaa[bbb]  << endl;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)