IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> С, работа с массивом
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 559
Пол: Мужской
Реальное имя: Бруно

Репутация: -  10  +


Добрый день! Продолжаю изучать С, поэтому новые вопросы, пытался написать процедуру, которая в массиве ищет одинаковые элементы и записывает их в виде таблички "Элемент Столбик Ряд". Функция то работает, то нет (вероятно что-то с форами напутал). Так же хотелось бы, чтобы если элемент повторяется в графе элемент он упоминался только 1 раз,то есть если повторяется А 3 раза, то должно быть так :

Элемент Столбик Ряд
А 1 2
3 1
4 4


Задание кривое, выдумал сам, надо же к чему - то стремится smile.gif. Вот что у меня вышло :
void MyFunc (int mas[n][m])  
{
int i, j, i1, j1;
printf ("Элемент Столбик Ряд\n ");
for (i = 0; i <= n - 1; i++)
for (j = 0; j <= m - 1; j++)
{
for (i1 = 0; i1 <= n - 1; i1++)
{
for (j1 = 0; j1 <= m - 1; j1++)
if ((mas[i][j] == mas[i1][j1]) && (i != i1) && (j != j1))

printf (" %d %d %d\n ",mas[i][j],i1 + 1,j1 + 1);

}

}
}


Сообщение отредактировано: Tan -


--------------------
Цитата
Imagination is more important than knowledge.
Albert Einstein
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






То есть, тебе надо, чтоб функция работала вот так:

void MyFunc (int mas[n][m]) {
printf("%20s%20s%20s\n", "Element", "Col", "Row");
for(int *curr = &mas[0][0], count = 0; count < m*n; curr++, count++) {

int cnt = 0;
int found = 0;
for(int *p = &mas[0][0]; cnt < count; p++, cnt++)
if(*p == *curr) {
found = 1; break;
}

if(!found) {
int counter = 0;
for(p = curr, cnt = count; cnt < m*n; p++, cnt++)
if(*p == *curr) {
counter += 1;
if(counter == 1) printf("%20d", *p);
else printf("%20s", "");

int num = p - &mas[0][0];
printf("%20d%20d\n", (num / m) + 1, (num - m*(num / m)) + 1);

}
}
}
}


?

(это немного не чистый С, поэтому может не компилироваться, надо все описания переменных перенести в начало функции)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 559
Пол: Мужской
Реальное имя: Бруно

Репутация: -  10  +


Да, спасибо, то, что надо буду разбираться!


--------------------
Цитата
Imagination is more important than knowledge.
Albert Einstein
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 18.04.2024 15:55
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name