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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобраться, ввод, вывод масива 
:(
    Опции темы
revolmaxus
  Дата 31.12.2008, 01:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго времени суток!
Помогите разобраться с заданием:
1.Ввести массив 2 на 10.
2.отобразить его на экране.
3.Поменять местами столбцы: 1 с 10м, 2 с 9м и т.д. через отдельно-созданную функцию.
Сделал сам (я чайник)так што прошу сильно не ржать:
Код

#include <iostream.h>
#include <stdio.h>
#include <conio.h>
const int n=2, m=10;
int transmas(int mas[n][m])
{
int i,j,k;
for (j=0;j<n;j++)
    {
    for (i=0,k=m-1;i<=m/2,k>=m/2;i++,k--)
  {
  mas[j][i]=mas[j][i]+mas[j][k];
  mas[j][k]=mas[j][i]-mas[j][k];
  mas[j][i]=mas[j][i]-mas[j][k];
  }
    }
return mas[n][m];
}
int main()
{
int mas[n][m],i,j;
char answer;
             for(i=0;i<n;i++)
                         for(j=0;j<m;j++)
                        {
                         cout<<"'\n' enter "<<j+1<<" symbol of "<<i+1<<" string ";
                         cin>>mas[i][j];
                         }
cout<< "'\n' It is your mas? : ";
cout<< mas[n][m];
cout<<"answer-";
cin>>answer;
mas[n][m]=transmas(mas);
return 0;
}

Загвоздка в том, что вместо масива выводит код:0х0012ff34.
Пробовал решить многими способами ,но выводит тоже самое.
Кому не трудно- помогите разобраться.

Это сообщение отредактировал(а) revolmaxus - 31.12.2008, 12:04
PM MAIL WWW ICQ   Вверх
mes
Дата 31.12.2008, 01:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(revolmaxus @  31.12.2008,  01:16 Найти цитируемый пост)
cout<< mas[n][m];

выводит не массив, а элемент с коoрдинатами [n,m], который находится за границей Вашего массива.
чтоб вывести массив целиком добавьте цикл.




--------------------
PM MAIL WWW   Вверх
ISergeyN
Дата 31.12.2008, 02:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Попробуй так:

Код

void outMas(const int mass[n][m])
{
    for(int i = 0 ; i<n; i++)
    {
        if(i>0) cout<<"]"<<endl;
        cout<<"[ ";
        for(int j = 0; j<m; j++)
        {
            cout<<mass[i][j]<<" ";
        }
    }
    cout<<"]"<<endl;
}



и здесь 
Цитата

int transmas(int mas[n][m]) 

замени на
Код

 int& transmas(int mas[n][m])

PM MAIL Skype   Вверх
xvr
Дата 31.12.2008, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



  •  В цикле for (i=0,k=m-1;i<=m/2,k>=m/2;i++,k--) неправильно записано условие: должно быть  for (i=0,k=m-1;i<=m/2 && k>=m/2;i++,k--)
  •  В этом же цикле условие можно записать гораздо проще - i<k
  •  Выражение mas[n][m]=transmas(mas); делает нечто непонятное (и неправильное). Массивы так не присваивают (и в С/С++ массивы вообще присвоить нельзя)
  •  В конце неплохо было бы вывести то, что получилось
  •  'Оптимизация' в обмене элементов массивов явно идет во вред: вместо того, что бы завести 1 временную переменную и сделать 3 обращения к массиву, к нему бедному обращаются аж 9 раз. И вообще, коль уж у тебя С++ то надо быть проще: std::swap(mas[j][i],mas[j][k]); (только не забудь сделать #include <algorithm>)

PM MAIL   Вверх
revolmaxus
Дата 31.12.2008, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

Попробуй так:
Код

void outMas(const int mass[n][m])
{
    for(int i = 0 ; i<n; i++)
    {
        if(i>0) cout<<"]"<<endl;
        cout<<"[ ";
        for(int j = 0; j<m; j++)
        {
            cout<<mass[i][j]<<" ";
        }
    }
    cout<<"]"<<endl;
}




и здесь Цитата

int transmas(int mas[n][m]) 


замени накод C++
1:
   int& transmas(int mas[n][m])





   

Спасибо!Попробовал, но не работает :(

Добавлено через 10 минут и 1 секунду
Цитата

 В цикле for (i=0,k=m-1;i<=m/2,k>=m/2;i++,k--) неправильно записано условие: должно быть  for (i=0,k=m-1;i<=m/2 && k>=m/2;i++,k--)

А амперсанты тут зачем, раз показал- обьесняй пожалуйта smile 
Цитата

В этом же цикле условие можно записать гораздо проще i<k

а если масив будет не парный?
Цитата

 В конце неплохо было бы вывести то, что получилось

она не полностью доделана и как я могу вывести результат есси с выводом вводимого не могу разобраться smile 
Цитата

std::swap(mas[j][i],mas[j][k]); (только не забудь сделать #include <algorithm>)

а вот за это- спасибо! smile 
PM MAIL WWW ICQ   Вверх
revolmaxus
  Дата 31.12.2008, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ничего не помогает, все перепробовал, текст изменил, но так ничего и не работает smile 
PM MAIL WWW ICQ   Вверх
xvr
Дата 31.12.2008, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(revolmaxus @ 31.12.2008,  11:27)
Добавлено @ 11:37
Цитата

 В цикле for (i=0,k=m-1;i<=m/2,k>=m/2;i++,k--) неправильно записано условие: должно быть  for (i=0,k=m-1;i<=m/2 && k>=m/2;i++,k--)

А амперсанты тут зачем, раз показал- обьесняй пожалуйта smile 

Условие i<=m/2,k>=m/2 вообще лишено смысла и полностью эквивалентно k>=m/2. Запятая между частями этого условия - это бинарный оператор ',' языка С (С++), он вычисляет последовательно оба своих аргумента и возвращает результат последнего. В твоем случае очевидно имелось в виду, что ОБА этих условия должна быть истинными, что и проверяет оператор && (логическое И)
Цитата

Цитата

В этом же цикле условие можно записать гораздо проще i<k

а если масив будет не парный?
Будет работать для любого массива.
Цитата

она не полностью доделана и как я могу вывести результат есси с выводом вводимого не могу разобраться smile 
А что не работает в OutMas от ISergeyN? Кстати, ты ее вообще вызывал?  smile 

PM MAIL   Вверх
revolmaxus
Дата 1.1.2009, 02:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем спасибо огромное!!!
Дело было в криво поставленом дистрибутиве smile 
спасибо
ISergeyN
все работает, && я так и не поставил- работает как надо и без них smile 
 smile 
PM MAIL WWW ICQ   Вверх
ISergeyN
Дата 2.1.2009, 02:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(revolmaxus @  1.1.2009,  02:58 Найти цитируемый пост)
&& я так и не поставил- работает как надо и без них 

сам не пойму как оно работает...(в етом  случае)

PM MAIL Skype   Вверх
xvr
Дата 5.1.2009, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(ISergeyN @ 2.1.2009,  02:31)
Цитата(revolmaxus @  1.1.2009,  02:58 Найти цитируемый пост)
&& я так и не поставил- работает как надо и без них 

сам не пойму как оно работает...(в етом  случае)

Работает только второе условие, первое игнорируется. Работать будет, так как оба условия почти эквивалентны, а то место, где они не эквивалентны, никак не влияет на результат.
Но наличие там запятой, вместо &&, говорит о том, что автор влепил что-то откуда то толком не разобравшись, и похоже без желания разбираться, что тоскливо  smile 
PM MAIL   Вверх
revolmaxus
Дата 27.1.2009, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



прошу прощения smile , получил задание почти не зная языка, разбиралсо сам, просто небыло много времени, штоб во всем по отдельности устраивать "разбор полётов" smile 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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