Показать сообщение отдельно

  #540  
Старый 29.12.2007, 13:03
dinar_007
Флудер
Регистрация: 18.01.2005
Сообщений: 2,298
Провел на форуме:
13936387

Репутация: 1844


Отправить сообщение для dinar_007 с помощью ICQ
По умолчанию

Цитата:
Сообщение от Neovild  
Сейчас на С перехожу. Написал самое простое что есть- Стек написал (не думайте что я в алгоритмах не шарю, кучи Фибоначчи, 3х связные списки и т.д. потом) посмотрите на сами указатели, просто думаю a- массив, int *p=a -коряво или нет?
Код:
#include <stdio.h>
#include <stdlib.h>
void Add(int *a[], int *kol, int el);
int Del(int *a[], int *kol);
void Display(int *a[], int *kol);

void Add(int *a[], int *kol, int el)
{
     int *p=a;
     ++(*kol);
     *(p+*kol)=el;
}
int Del(int *a[], int *kol)
{
    if (*kol<=-1) return 0;
    int *p=a;
    --(*kol);
    *(p+*kol+1)=0;
    return 1;
}
void Display(int *a[], int *kol)
{
     printf("stack:");
     int i;
     for (i=0; i<=*kol; ++i) {
         printf("%i,", a[i]);
         }
     printf("\n");
}
int main(int argc, char *argv[])
{
    int a[100], el=0, kol=-1,i;
    int *p=a;
    while (1) {
          printf("1:add, -1:del, 0:exit. command=");
          scanf("%i",&i);
          if (i==0) break;
          if (i==1) {
                    printf("ELEMENT=");
                    scanf("%i",&el);
                    Add(a,&kol,el);
                    }
          if (i==-1) 
             if (!Del(a,&kol)) exit(1);
          Display(a,&kol);
          }	
  return 0;
}
Честно сказать, не в обиду конечно, но это самый тупой пример работы с указателями который я когда либо видел в жизни, нах... Кучи переменных, которые ты туда сюда тусуешь. Зачем заводить два указателя на один и тот же массив? Под настроение?

Последний раз редактировалось dinar_007; 29.12.2007 в 13:07..
 
Ответить с цитированием