Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.fds-net.ru/ashowflat.php?Number=11321646&src=&showlite=l
Дата изменения: Unknown
Дата индексирования: Sat Mar 1 15:54:26 2014
Кодировка: Windows-1251
[c++] возможно ли произвольное число циклов без рекурсии? - Public forum of MSU united student networks
Technical >> Development (Archive)

Страницы: 0 | 20 | 40 | 60 | 80 | (94) | 100 | показать все
71201010 : Re: [c++] возможно ли произвольное число циклов без рекурсии?  [re:ksa]   23.01.2013 13:49    | Reply | Edit |
-1
вы не должны этого хотеть

В ответ на:

пределы для простоты одинаковые, только переменные цикла естественно разные, в самом внутреннем цикле все счетчики используются для вычисления некого выражения.




code:
#include <stdlib.h> #include <stdio.h> int ipow(a,b){ int r=1; while(b--) r *= a; return r; } int main(int argc, char **argv){ if (argc < 2) return 1; int k = atoi(argv[1]); int l = atoi(argv[2]); printf("Nested loops: %d\nIndex limit: %d\nIndexes values:\n", k, l); int i,j; for (i=0; i < ipow(l,k); i++){ for (j=k-1; j >=0; j--){ printf("%d ", (i%ipow(l,j+1))/ipow(l,j)); } printf("\n"); } return 0; }


code:
$ ./nested_cycles_unroll.x 2 3 Nested loops: 2 Index limit: 3 Indexes values: 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2 2


Bernard   [re:ksa]   29.01.2013 00:50    | Reply | Edit |
0

 
code:
#include <stdio.h> #include <stdlib.h> int global_a = 0; typedef struct Lst{ struct Lst *next; void (*implement)(int,struct Lst*); }List; void my_func(int b, List*p){ int i = 0; for (; i<b; ++i){ p->implement(b,p->next); } } void norm_func(int b, List*p){ ++global_a; } List* def(){ List * head = NULL; head = (List*)malloc(sizeof(List)); head->implement = my_func; head->next = NULL; return head; } void add(List*head){ List*t = head; while(t->next!=NULL){ t = t->next; } List * p = t->next; p= (List*)malloc(sizeof(List)); p->implement = my_func; p->next = NULL; t->next = p; } void stop(List * head){ List*t = head; while(t->next!=NULL){ t = t->next; } List*p = t->next; p = (List*)malloc(sizeof(List)); p->implement = norm_func; p->next = NULL; t->next = p; } int countToNULL(List*head){ List*p = head; int count = 0; while(p!=NULL){ count++; p=p->next; } return count; } int main(int argc, char* argv[]){ int i = 0; List * good_list = NULL; good_list = def(); for (; i<2; ++i){ add(good_list); } stop(good_list); printf("nodes: %d", countToNULL(good_list)); //compute here good_list->implement(5,good_list->next); printf("\n a = %d\n",global_a); return 0; }


dtbeaver   [re:Bernard]   29.01.2013 11:38    | Reply | Edit |
-3

 
В ответ на:

typedef struct Lst{
struct Lst *next;
void (*implement)(int,struct Lst*);
}List;




советую выяснить, что такое stl вообще и std::list - в частности

unkulunkulu   [re:dtbeaver]   29.01.2013 11:42    | Reply | Edit |
2
советую выяснить, что такое Си, но код у него с фантазией написан, конечно :)

dtbeaver   [re:unkulunkulu]   29.01.2013 11:55    | Reply | Edit |
-1
а при чем тут си?

unkulunkulu   [re:dtbeaver]   29.01.2013 11:57    | Reply | Edit |
2
он написал прогу на Си

DizzyDen   [re:dtbeaver]   29.01.2013 12:03    | Reply | Edit |
0
Quote:

советую выяснить, что такое stl вообще и std::list - в частности



Еще std::forward_list заодно выясни.

dtbeaver   [re:unkulunkulu]   29.01.2013 12:12    | Reply | Edit |
-4
Он написал прогу на смеси C и C++ в теме про C++
Смешал код и объявления, использовал однострочный комментарий. Оно конечно скомпилируется gcc и будет работать, но не надо говорить что это чисто хардкорный C.
По-моему это классический случай недопонимания разницы между C и C++.

unkulunkulu   [re:dtbeaver]   29.01.2013 12:17    | Reply | Edit |
0
:crazy: http://en.wikipedia.org/wiki/C99

dtbeaver   [re:unkulunkulu]   29.01.2013 12:20    | Reply | Edit |
0
ладно, убедил, это Си. Но все равно тема была про C++.

unkulunkulu   [re:dtbeaver]   29.01.2013 12:32    | Reply | Edit |
2
Тут плюсовое решение только я предлагал, и то засрали тащемта, так что не аргумент.

DizzyDen   [re:dtbeaver]   29.01.2013 13:39    | Reply | Edit |
-1
Таки да.
Смотри.
Его программа - wrong context.
Твое утверждение - wrong proposition in wrong context.
А теперь они два раза перевернутые. (c)

Top