powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / главная диагональ в си
11 сообщений из 11, страница 1 из 1
главная диагональ в си
    #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
главная диагональ в си
    #39199202
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MachMut, а что по вашему является главной диагональю ?
...
Рейтинг: 0 / 0
главная диагональ в си
    #39199421
alexy_black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что за жп с форматированием, не понятно же ничего!!?

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

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

Кроме того одном приложении мы видим 3 разных функционала.
Первое - это вывод элементов 2 и 0 из некой виртуальной матрицы размером
11 на 11 заданной формулой. При этом двойка стоит в области ограниченой двумя гиперплоскостями.
Второе это попытка посчитать количество четных элементов myArray но с
неинциализированным j. И третье - вполне себе годный код для учета суммы
элементов диагонали но выводящий непределённость в результате по причинам
которые описаны выше. Вобщем если я не ошибся с фигурными скобочками
то как-то так.
...
Рейтинг: 0 / 0
главная диагональ в си
    #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
главная диагональ в си
    #39199667
alexy_black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, i используемый в цикле for - это уже устоявшаясия традиция - так обозначают индекс массива. если переменная в цикле не индекс, а что-нибудь другое, то её нельзя так называть. в данном случае - это дорожка (потому что это не просто массив, а таблица или "квадрат").

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

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

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

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

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

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

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

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

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


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