Модераторы: 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   Вверх
V.A.KeRneL
  Дата 25.1.2007, 05:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vadim A. Kazantsev
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 3.12.2006
Где: Moscow, Russia

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



Привет, a11ensmile

Насчёт argc и argv можешь почитать на этом же форуме: 
1) VPF::[C++] Командная строка
2) VPF::argv и argc
3) VPF::[Borland С++] Командная строка

А насчёт coding style, то лучшим_стандартным_на_мой_взгляд_несомненно_является (((GNU programming style))). Советую просмотреть все ссылки, по крайней мере, с 1-ой страницы, хотя бы кусочки кодов.

З.Ы. Учись пользоваться поиском. Удачи! smile


Это сообщение отредактировал(а) V.A.KeRneL - 26.1.2007, 03:13


--------------------
«C'est un pense-creux d'ici. C'est le meilleur et le plus irascible homme du monde...» © Ф.М. Достоевский, «Бесы»
---/)/)---(\.../)---(\(\
--(':'=)---(=';'=)---(=':')
(")(")..)-(").--.(")-(..(")(")

PM MAIL IM ICQ AOL YIM MSN   Вверх
a11en
Дата 25.1.2007, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Xenon, я поэтому и спросил, чтобы понять зачем все это, мне лично циклы удобнее смотреть в том виде в котором я их написал, теперь буду писать подробне))) и еще раз говорю нас сначала учили писать через int main(), а тут пришли к другому преподу она нам говорит вы дебилы надо подругому писать... ну хотя она и private в класах не пишет по-моему потом совсем запутаешься где какие данные, считаю что писать его надо...

V.A.KeRneL, я умею пользоваться поиком, просто попросили 10 программ такого типа вчера написать не до поиска было, хотя на каждую прогу не больше 10 минут, а с этой которая в шапке час провозился, ну бывают заскоки.
PM MAIL ICQ   Вверх
Shaggie
Дата 25.1.2007, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

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



Учись писать понятный код! Это очень важно! С такими однострочниками в любой конторе тебя пошлют далеко и надолго, так как нормальный чел в одного большой проект не напишет -> народ пишет совместимые модули -> в любой момент любому товарищу может понадобиться взглянуть на твой код, проверить чего... Поверь, нет ничего хорошего, когда один чел неделю разбирает код другого.

Рано или поздно товарищ уходит из конторы, на его место садится другой. Вот это подлянка ему достанется в наследство!


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
Ustus
Дата 25.1.2007, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(KpoHyc @  24.1.2007,  22:18 Найти цитируемый пост)
сцылку - а пока бред...main функция должна отличаться от остальных в плане объявления...и то не обязательно хоть все функции void'ом хоть int'ом... 

ISO/IEC 14882:1998 
3.6.1 - Main function
smile


Это сообщение отредактировал(а) Ustus - 25.1.2007, 13:41
PM MAIL   Вверх
a11en
Дата 25.1.2007, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Shaggie, у меня мало практики, но вобще проги пишу аккуратно и понятно, просто для меня понятнее(как и для того кому я это писал), когда цикл, естественно если он не большой, в одну строку, но спасибо за совет.
PM MAIL ICQ   Вверх
Rockie
Дата 26.1.2007, 01:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(a11en @  24.1.2007,  21:59 Найти цитируемый пост)
на то что влияет на скорость программы

a11en, эта задача может решаться за 1 проход и без использования дополнительного массива.
Код

#include<iostream>

int main()
{
    const int s = 5;
    int A[s][s];                                                  //объявление двумерного массива

    for(int i=0;i<s;i++)
    {
      int sum = 0;

      for(int j=0;j<s;j++)
        {   
           std::cout<<( A[i][j]=i+j )<<' ';                       //присваивание элементам значений
           sum+=A[i][j];
        } 

      std::cout<<" sum of " <<i+1 <<" string = " <<sum <<std::endl;   //вывод суммы
    }

    return 0;
}


Добавлено @ 01:59 
KpoHyc, это не Си. C4430



--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

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

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

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

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


 




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


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

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