Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / главная диагональ в си / 11 сообщений из 11, страница 1 из 1
23.03.2016, 10:55
    #39198580
MachMut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
главная диагональ в си
не получается посчитать элементы главной диагонали
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
	
	int i, j;
 int myArray[11][11]; 
  printf( "massiv:\n" );   
  for ( i = 0; i < 11; i++ ) {
                   for ( j = 0; j < 11; j++ )
               {
               	printf("%d   ", (j < i && j + i > 10) ? 2 : 0);
                 }
    printf( "\n" ); 
  }
  int sum=0;
    for(i=0; i<11; i++)
   {if (myArray[i,j]%2!=1);
	 sum=sum+1;
}
for(i=0; i<11; i++)
sum+=myArray[i][i];
		 printf( "kol nechet = %d\n", sum);
        
  getchar();
	return 0;
}
...
Рейтинг: 0 / 0
24.03.2016, 02:12
    #39199202
SashaMercury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
главная диагональ в си
MachMut, а что по вашему является главной диагональю ?
...
Рейтинг: 0 / 0
24.03.2016, 11:44
    #39199421
alexy_black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
главная диагональ в си
что за жп с форматированием, не понятно же ничего!!?

главная диагональ - это как бы диагональ в квадрате от 0 0 до 11 11 ?
...
Рейтинг: 0 / 0
24.03.2016, 13:04
    #39199591
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
главная диагональ в си
Хм.

По сабжу не видно ввода данных или инициализации для int myArray[11][11]
поэтому поведение приложение неопределено.

Кроме того одном приложении мы видим 3 разных функционала.
Первое - это вывод элементов 2 и 0 из некой виртуальной матрицы размером
11 на 11 заданной формулой. При этом двойка стоит в области ограниченой двумя гиперплоскостями.
Второе это попытка посчитать количество четных элементов myArray но с
неинциализированным j. И третье - вполне себе годный код для учета суммы
элементов диагонали но выводящий непределённость в результате по причинам
которые описаны выше. Вобщем если я не ошибся с фигурными скобочками
то как-то так.
...
Рейтинг: 0 / 0
24.03.2016, 13:37
    #39199662
alexy_black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
главная диагональ в си
я вроде где-то писал..
необходимо всегда инициализировать перменные (или подумать несколко раз почему нет)
необходимо давать им нормальные имена - не i и j, а row и column
старайся объявлять переменную как можно ближе к месту использования.

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

не нужно писать что-то в духе

Код: plaintext
1.
2.
3.
int i;
for(i=0;i<100;++i) ;
for(i=0;)...

нужно писать
Код: plaintext
1.
for(int i=0;i<100;++i);



когда пишешь понятный себе (!) код, то он внезапно начинает работать хорошо. если у тебя есть вопросы по коду - ты его не понимаешь, а такой код работать хорошо не может (потому что ты написал нечто, что не понял).
...
Рейтинг: 0 / 0
24.03.2016, 13:40
    #39199667
alexy_black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
главная диагональ в си
кстати, i используемый в цикле for - это уже устоявшаясия традиция - так обозначают индекс массива. если переменная в цикле не индекс, а что-нибудь другое, то её нельзя так называть. в данном случае - это дорожка (потому что это не просто массив, а таблица или "квадрат").

также, даже если переменная обозначает индекс, но цикл вложенный, надо придать её нормальное имя. вобще вложенные циклы очень затрудняют понимание программы (очень много вариантов).
...
Рейтинг: 0 / 0
24.03.2016, 13:41
    #39199669
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
главная диагональ в си
alexy_blackнеобходимо давать им нормальные имена - не i и j, а row и column

Ну если ты работал с комплексными числами (i,j,k) или координатами в графике (x,y,z,h)
то у тебя потом не возникает лишних позывов к удлинению имен и без того простых
и понятных переменных.
...
Рейтинг: 0 / 0
24.03.2016, 13:52
    #39199694
alexy_black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
главная диагональ в си
maytonalexy_blackнеобходимо давать им нормальные имена - не i и j, а row и column

Ну если ты работал с комплексными числами (i,j,k) или координатами в графике (x,y,z,h)
то у тебя потом не возникает лишних позывов к удлинению имен и без того простых
и понятных переменных.

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

во-вторых, это весьма обоснованная причина дать именно такое имя - это общепринятое название координаты ( а собственна как еще назвать x? ). но при этом ты можешь положить их в структуру или класс, которые будет говорить что это точка например. а название объекта этого класса будет отвечать на вопрос зачем ты его создал.

в большинстве задач (в том числе в этой), нужно подбрать "длинные" имена. длинные в кавычках потому что клавный фактор тут конечно не длина, а именно информационная ценность названия. это особенно нужно новичку - если ты уже емеешь подбирать хорошие названия, ты знаешь что они дают, и можешь проанализировать последствия отказа от этой практики.. а если не умеешь то и проанализировать не сможешь.. то есть если ты еще ни разу не читал свою же нетривиальную программу через пару недель (или месяцев) после написания, то ты еще не можешь понять ценность хороших имен :)
...
Рейтинг: 0 / 0
24.03.2016, 14:01
    #39199714
alexy_black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
главная диагональ в си
MachMut,

кстати, форматирование разъехалось потому что ты смешал два стиля - табы и пробелы. нужно определится (в пределах одного проекта) каким образом ты будет делать отступы - табами или пробелами и дальше придерживаться одного стиля. их нельзя смешивать.

заметь - отступ - это отступ от левого края. выравнивание - это подгон определенного символа под символ на другой строчке. это выполняется только (!) пробелами (назависимо от того, какой стиль ты выбрал).

вот пример
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
int main(int argc, char** argv) {
	// отступ
	int some = 1;
	// отступ и выравнивание
	do_foo(
	       some );
}

заметь - я использовал табуляцию, но ничего неразьехалось - потому что на предпоследний строчке я вставил один таб а потом выравнил пробелами (то есть some должен стоять там, где скобочка открывается).

надавно на хабре читал статью об этом с опросом - оказалось большинство использую табы (вроде "пора завязывать использовать пробелы").
...
Рейтинг: 0 / 0
24.03.2016, 14:06
    #39199725
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
главная диагональ в си
Задача уже второй топик решается. Начало тут ТЗ там же нормально написано.

Не грузите ТСа заумными словами типа "инициализировать", я проще писал "массив никто не заполнил" но и это не помогло. Человек упорно ждет что за него решат его задачу, не мучая непонятными для него вопросами и намеками.
...
Рейтинг: 0 / 0
24.03.2016, 14:17
    #39199747
alexy_black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
главная диагональ в си
Dima T,

гы и код тот же, вобще без изменений :) а я думаю, кудай-то товаризч тс запропастился )))

только этот чувак там спросил "а как его заполнить"... отвечаю прочитать текст по ссылки (искал минуту) и сообразить как это сделать http://ci-plus-plus-snachala.ru/?p=129
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / главная диагональ в си / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]