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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Простейшая программа двумерный массив. не пойму где ошибка 
V
    Опции темы
a11en
Дата 24.1.2007, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вообщем прорамма должна создавать матрицу 5*5 записывать в элемент сумму значения его строки и столбца, т.е. A[0][1]=1, A[3][3]=6 и тд., и считать сумму элементов строки,
Код

#include<iostream.h>
#define SZ 5
void main()
{
    int A[SZ][SZ];//объявление двумерного массива
    int b[SZ];//объявление одномерного массива для получение суммы
    for(int i=0; i<SZ;i++)for(int j=0;j<SZ;j++)A[i][j]=i+j;//присваивание элементам значений
    for(i=0; i<SZ;i++)for(int j=0;j<5;j++) b[i]+=A[i][j];//присваивание элементу, суммы строки
    for(i=0; i<SZ;i++)cout<<"Сумма элементов"<<i+1<<"строки ="<<b[i]<<endl;//вывод суммы
}

собственно проблема в том что выводит какую-то чушь. Програму пишу в VC++6.0

Ну что бы не было такого простого вопроса, объясните мне для чего используется, #define или ссылочку на это дайте.
PM MAIL ICQ   Вверх
Sartorius
Дата 24.1.2007, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

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



 массив b не проинициализирован... чего же ты хочешь?

Это сообщение отредактировал(а) Sartorius - 24.1.2007, 20:32
PM MAIL ICQ   Вверх
a11en
Дата 24.1.2007, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо, так протупил, извените...
PM MAIL ICQ   Вверх
Xenon
Дата 24.1.2007, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Код

const int SZ = 5;
int main(int argc, char* argv[])
{
    int A[SZ][SZ];//объявление двумерного массива
    int b[SZ];//объявление одномерного массива для получение суммы
    for(int i=0; i<SZ;i++)
    {
        for(int j=0;j<SZ;j++)
        {
            A[i][j] = i + j;//присваивание элементам значений
        }
    }
    for(int i=0; i<SZ;i++)
    {
        b[i]=0;
        for(int j=0;j<5;j++)
        {
            b[i]+=A[i][j];//присваивание элементу, суммы строки
        }
    }
    for(int i=0;i<SZ;i++)
    {
        cout << "Сумма элементов" << i+1 <<"строки =" << b[i] << endl;
    }//вывод суммы
    _getch();
    return 0;
}


На всякий пожарный

Это сообщение отредактировал(а) Xenon - 24.1.2007, 20:51


--------------------
user posted image  
PM MAIL   Вверх
a11en
Дата 24.1.2007, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ну и код(!!!) на всякий пожарный, вот вполне рабочий.

Код

#include<iostream.h>
#define SZ 5
void main()
{
    int A[SZ][SZ];
    int b[SZ];
    for(int i=0; i<SZ;i++)for(int j=0;j<SZ;j++){A[i][j]=i+j; b[i]=0;}
    for(i=0; i<SZ;i++)for(int j=0;j<5;j++) b[i]+=A[i][j];
    for(i=0; i<SZ;i++)cout<<b[i]<<endl;
}


Или я дурак(нас учили писать как можно лаконичнее) или у вас много лишнего(я не осуждаю,возможно для наглядности, а быть может я чего не знаю), про мой Define молчу ибо так нас массивы учили описывать а руки не доходят найти инф что это вообще такое
1. нафиг константу еще и интом объявлять?
2. Ну и гетч в VC++ не нужна.(ну ясно что не только в этой среде пишут)
3. Зачем делать int main() и return 0, если можно просто void main().
4. Зачем фигурные скобки для 1-го действия.

Это сообщение отредактировал(а) a11en - 24.1.2007, 21:18
PM MAIL ICQ   Вверх
zkv
Дата 24.1.2007, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



Цитата(a11en @  24.1.2007,  21:13 Найти цитируемый пост)
1. нафиг константу еще и интом объявлять?

а есть альтернативы? те вы знаете способ объявить константу без указания типа?
Цитата(a11en @  24.1.2007,  21:13 Найти цитируемый пост)
2. Ну и гетч в VC++ не нужна.

вообще то программу пишут для получения ехе файла (упрощенно), а в нем уже никаких задержек не будет перед выходом
Цитата(a11en @  24.1.2007,  21:13 Найти цитируемый пост)
3. Зачем делать int main и return 0, если можно просто.

int - хороший тон, а ретурн все равно подставят, хотите вы или нет smile
Цитата(a11en @  24.1.2007,  21:13 Найти цитируемый пост)
4. Зачем фигурные скобки для 1-го действия. 

не обязательно, но и на скорость никак не повлияют

а вообще код в первую очередь должен быть понятен, от того что вы экономите место при написании программа ни лучше ни хуже не становится, а читать ваш код ну очень неудобно, поверьте.

#define SZ 5 - директива компилятору везде где он встретит SZ воспринимать ее как число 5


Это сообщение отредактировал(а) zkv - 24.1.2007, 21:27
PM MAIL   Вверх
JackYF
Дата 24.1.2007, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Цитата(a11en @  24.1.2007,  21:13 Найти цитируемый пост)
нафиг константу еще и интом объявлять?


1. А константа - она тоже тип имеет. И может иметь далеко не только интовый тип. Здесь, может, и не важно, а вот в более сложных программах...
3. Нельзя. Не по стандарту. По стандарту С++ объявления главной функции должно быть int main() (можно с параметрами, можно без).
4. Да. Можно и без них. Но с ними читабельней.

Добавлено @ 21:26 
 smile  smile Опоздал на секунды... 


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Dov
Дата 24.1.2007, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Цитата(a11en @  24.1.2007,  20:13 Найти цитируемый пост)
Или я дурак(нас учили писать как можно лаконичнее)

Не правильно вас учили. Так нада экономить:
Код
void main(){int A[SZ][SZ];int b[SZ];for(int i=0; i<SZ;i++)for(int j=0;j<SZ;j++){A[i][j]=i+j; b[i]=0;}for(i=0; i<SZ;i++)for(int j=0;j<5;j++) b[i]+=A[i][j];for(i=0; i<SZ;i++)cout<<b[i]<<endl;}




--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Sartorius
Дата 24.1.2007, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

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



Dov,  smile  это +
PM MAIL ICQ   Вверх
a11en
Дата 24.1.2007, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



У коршуны;), спасибо за пояснения, буду благодарен если дадите ссылочку на то как писать стандартно и на то что влияет на скорость программы и про #define поподробнее не только же для этого используется и чем отличается если объявить то же SZ константой.
Еще если не трудно поясните, что эти параметры делают int main(int argc, char* argv[])

2Dov, оригинал слов нету, вот еврей он и есть еврей(естествено шутка, не в обиду)

Добавлено @ 22:00 
Я в этот форум влюблен, нигде больше не встречал таких отзывчивых людей!
PM MAIL ICQ   Вверх
Sartorius
Дата 24.1.2007, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

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



 Вот статейка по оформлению 
http://www.codenet.ru/progr/cpp/C-Style.php

На http://www.rsdn.ru/ советую философию программирования посмотреть.

 Из книжек - Страуструп и Скот Майерс. Прочитай что найдешь - не пожалеешь. Люди действительно не просто стандарт описывают, а показывают как надо код писать.



PM MAIL ICQ   Вверх
KpoHyc
Дата 24.1.2007, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



a11en, argc - хранит количество аргуметнов коммандной строки, argv - сами их параметры...

JackYF
Цитата(JackYF @  24.1.2007,  21:24 Найти цитируемый пост)
По стандарту С++ объявления главной функции должно быть int main() (можно с параметрами, можно без).


 сцылку - а пока бред...main функция должна отличаться от остальных в плане объявления...и то не обязательно хоть все функции void'ом хоть int'ом...
--------------------
AScript + Pascal + C -> C++ ->C#Adobe Photoshop 7.0/CS 2.0 + GIMP+ Visual Studio .NET(sp1)/2005 pro(sp1)
PM MAIL ICQ Skype GTalk Jabber   Вверх
a11en
Дата 24.1.2007, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



KpoHyc, ничего не понял наверное надо подробнее читать!
PM MAIL ICQ   Вверх
KpoHyc
Дата 24.1.2007, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

main (int argc, char *argv[])
{
  for(int i=1; i<argc; i++) printf(argv[i]);
}

--------------------
AScript + Pascal + C -> C++ ->C#Adobe Photoshop 7.0/CS 2.0 + GIMP+ Visual Studio .NET(sp1)/2005 pro(sp1)
PM MAIL ICQ Skype GTalk Jabber   Вверх
Xenon
Дата 24.1.2007, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



a11en, нагнал на меня тут  smile 
Ну я просто пишу почти по всем канонам правильности smile) Ну чтобы максимально приятнее читать было. Просто на код с фигурными скобками глянешь быстро - все понятно станет и редактировать его проще, быстрее. 
Это дело каждого. Я делаю так. Думаю, читать код в таком стиле не противно

Добавлено @ 00:06 
KpoHyc, это стандартом считается. Потому что в linux`e, например, нормальным завершением программы считается завершение, при котором возвращается 0. Ну, и по дефолту это int


--------------------
user posted image  
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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