Вопросы по программированию

Автор Богдан, 03 Листопад 2007, 11:41:18

Попередня тема - Наступна тема

resiver

мне уже про ето говорили, и правила я читал..ну я же 2 сообщения не подряд отправлял, а на протяжении нескольки часов, и по етому можна.
Подпись отображается внизу каждого Вашего сообщения. Вы также можете использовать BB код и смайлы.

FalseMan

1 пользуйся тегом [code] 2. точка с запятой на 17-ой. 3. Ну и зачем ты к указателю sum (имени массива) чето присваиваешь? может стоит написать не просто sum а sum?? Дальше разбираться нет желания.[/code]

Edd.Dragon

#352
Цитата: resiver від 21 Листопад 2008, 18:30:42
помогите найти и исправить ошибки!
Какие ошибки? Не вижу их текстов...
Предполагаешь нам почувствовать себя в роли компиляторов?  ???

1. Не ошибка, совет:  не используй define - это ДОкомпиляторная фишка, которая по невнимательности может привести к совершенно фантастическим глюкам, т.к. не проверяет никих соответствий и т.д. Тупо в коде заменяются куски кода на то, что ты задефинил. Т.е. код перед компилятором преобразуется, а ты даже не видишь как.

Вместо
   #define SIZE 5
никто не мешает написать
   const int SIZE = 5;

2. for (j = 0; j<SIZE; j++)
                    sum += a[j];

а) Где фигурные скобки? Ну и что, что один оператор - читать тяжело.

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

в) sum += a[j]; - это что? что такое sum и как ты к нему прибавляешь int?

3.  printf ("summa strok no sorted: %4d\n", sum);
С каких пор prinf умеет выводить на экран содержимое массива? Почему тогда выше ты так не написал, а выводил отдельные элементы?

4. if (sum < sum[i+1])
Представь себя программой и объясни как ты собираешься сравнить ВЕСЬ массив с одним из его элементов? Когда пишешь программу, в уме подставляй какие-нибудь значения переменных, которые ты используешь. Это ОБЯЗАТЕЛЬНО. Ты должен визуально представлять то что ты делаешь и с чем работаешь.

Итак, визуально предствим, что ты попытался сделать в этой строке. Ты поставил условие, цитирую: "Если {5, 3, 8, 12, 10} меньше чем 5, то ....". Это как?

5. for (pr = 1; pr<SIZE; pr++){ //k-vo proxodov
               for (i = 0; i<SIZE; i++){ //4islo sravneniy

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

Наиболее эффективный метод из трех классических\простейших, преподаваемых на информатике, это метод, повторяющий логику человека при сортировке массива:

Мы видим перед собой массив {5, 3, 8, 1, 10}. Нужно отсортировать его от болшьшего к меньшему. При этом у нас есть только эти 5 ячеек, т.е. вынимать числа из фигурных скобок нельзя, можно только менять местами.

Как ты поступишь?

- Осмотрев весь список по порядку, найдешь максимум 10.
Поставишь его на первое место (пятерку с первого на его бывшее место)
- Забудешь о десятке - она на месте!
- Повторишь все то же самое, только уже со второй позиции и до конца.
- Повторишь все то же самое, только уже с третьей позиции и до конца.
- Повторишь все то же самое, только уже с четвертой позиции и до конца.
- В конце осталось само собой минимальное.

Готово. Теперь тоже самое запишем в коде.



const int SIZE = 5;

int array[SIZE];

// как вышеописано - мы находили максимум сначала в первую позицию
// потом во вторую, потом ...., потом в ПРЕДпоследнюю
// а последняя сама по себе получится
// это и запишем в виде цикла
for (int i = 0; i < SIZE - 1; i++)
{
    // индекс максимального элемента, который мы найдем в сл. цикле
    int index_of_max = i; // пока же предположим, что это i, т.е. максимум уже на своем месте

    // переберем в поисках максимума все элементы до конца, стоящие за i
    for (int j = i + 1; j < SIZE; j++)
    {
        if(array[j] > array[index_of_max])
        {
            index_of_max = j;
        }
    }

    // нашли максимальный элемент - пхаем его в его законную позицию (i)
    // возможно это и есть i-ый элемент, т.е. поменяем его с самим собой -
    // ничего страшного.
    int temp = array[index_of_max];
    array[index_of_max] = array[i];
    array[i] = temp;
}


// Или без коментов:


for (int i = 0; i < SIZE - 1; i++)
{
    int index_of_max = i;
    for (int j = i + 1; j < SIZE; j++)
    {
        if(array[j] > array[index_of_max])
        {
            index_of_max = j;
        }
    }
    int temp = array[index_of_max];
    array[index_of_max] = array[i];
    array[i] = temp;
}



И главное:
6. В твоей проге есть сортировка массива сумм - отлично. А что с ОСНОВНЫМ массивом, строки которого и просили перетасовать? Похоже он остался нетронут, т.е. задачу никто не решал вовсе )))

FalseMan

Цитата: edd_k від 21 Листопад 2008, 23:10:14
Какие ошибки? Не вижу их текстов...
Предполагаешь нам почувствовать себя в роли компиляторов?  ???

1. Не ошибка, совет:  не используй define - это ДОкомпиляторная фишка, которая по невнимательности может привести к совершенно фантастическим глюкам, т.к. не проверяет никих соответствий и т.д. Тупо в коде заменяются куски кода на то, что ты задефинил. Т.е. код перед компилятором преобразуется, а ты даже не видишь как.
Ну насколько я понял он использует С а не С++, а в чистом С это в порядке вещей... или я ошибаюсь  :-\

Edd.Dragon

Цитата: FalseMan від 22 Листопад 2008, 00:12:25
Ну насколько я понял он использует С а не С++, а в чистом С это в порядке вещей... или я ошибаюсь  :-\
В порядке вещей или нет - это зависит от самого программиста. Я понимаю, когда дефинами красиво решался какой-то геморой. Но константы им объявлять - очень плохая привычка

βεερ_βooρ

Цитата: edd_k від 22 Листопад 2008, 00:14:45
Я понимаю, когда дефинами красиво решался какой-то геморой. Но константы им объявлять - очень плохая привычка
Как раз наоборот. Делать что-то через жопу дефайнами - очень плохая привычка. С константами ты по крайней мере не ошибешься - препроцессор подставит значение константы и все.
Кстати
#define SOMECONST  111
и
int const someconst = 111;
приведет к генерации разного кода, что иногда может иметь значение.
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

resiver

#356
однако обсуждение было не мелким! я не говорью вам что б ви себя испитивали в роли компиляторов, а просто говорью что компилятор меня пропускает а программа с ошибкой, и не работает.
Вот  написал как надо:
#include <stdio.h>
#include <conio.h>
#define M 5
#define N 5
   int main () {
     
      int a[M][N] = {{2,7,4,3,1},{4,9,2,1,3}, {7,1,4,9,0}, {2,3,8,6,4}, {1,5,3,9,4}};
      int i, j, k;
      int sum[5];
      int dop[5];//???
      int pr;
      int tmp;

   for (i = 0; i<5; i++){ // vivod izna4alnoy matr
       for (j = 0; j<5; j++) printf ("%2d", a[j]);
      printf ("\n");
    }

   for (i = 0; i<5; i++){
      sum=0;
      for (j = 0; j<5; j++) sum+= a[j];
    }

   for (i=0; i<5; i++){
       printf ("%d\n", sum);
     }   
   for (pr = 1; pr<5; pr++){ //k-vo proxodov
      for (i = 0; i<5; i++){ //4islo sravneniy
          if (sum < sum[i+1]){
            tmp = sum;
            sum = sum[i+1];
            sum[i+1] = tmp;
            for(k = 0; k < M; k++) {  //меняем местами столбцы матрицы
               tmp = a[k];
               a[k] = a[i + 1][k];
               a[i + 1][k] = tmp;
            }
         }
      }        
   }
   for (i = 0; i < 5; i++) {
      //printf ("%d   ", sum);
      for (j = 0; j < 5; j++) printf ("%2d", a[j]);
      printf ("\n");
   }
return 0;

}

уже и матрица сортируеться как надо. РЕСПЕКТ edd_k за псевдокод сортировки матрици!



Подпись отображается внизу каждого Вашего сообщения. Вы также можете использовать BB код и смайлы.

Andrii

У мене проблема з Денвером: після 30-40 хв нормальної роботи з ним, браузери (Хром, Опера, Авант) відказуються працювати. Наприклад, Хром пише таку помилку:
Веб-страница недоступна.

Веб-страница по адресу http://localhost/PHP/simple.php, возможно, временно недоступна или постоянно перемещена по новому адресу.

  Дополнительная информация об этой ошибке.
Ошибка 2 (net::ERR_FAILED): Неизвестная ошибка.

Відключаю Денвер - нічого не міняється, приходиться комп перезапускати. Хтось знає в чому проблема і як її рішити?

Богдан

Цитата: Andrii від 22 Листопад 2008, 18:36:05
У мене проблема з Денвером: після 30-40 хв нормальної роботи з ним, браузери (Хром, Опера, Авант) відказуються працювати. Наприклад, Хром пише таку помилку:
Веб-страница недоступна.

Веб-страница по адресу http://localhost/PHP/simple.php, возможно, временно недоступна или постоянно перемещена по новому адресу.

  Дополнительная информация об этой ошибке.
Ошибка 2 (net::ERR_FAILED): Неизвестная ошибка.

Відключаю Денвер - нічого не міняється, приходиться комп перезапускати. Хтось знає в чому проблема і як її рішити?

Пам'ятаю, в тебе була точно така проблема із звичайним виходом в Інтернет. Ти впевнений, що винен Денвер?

Andrii

Цитата: Богдан від 22 Листопад 2008, 18:41:26
Пам'ятаю, в тебе була точно така проблема із звичайним виходом в Інтернет. Ти впевнений, що винен Денвер?
Так була, але я позвонив на Укртелеком і вони "продули" систему. Але це зявляється ТІЛЬКИ коли працюю з Денвером!

resiver

подскажите а что ви делаете что у вас при ответе появляеться окно код и там исходники и т.д
Подпись отображается внизу каждого Вашего сообщения. Вы также можете использовать BB код и смайлы.

firefire

Цитата: resiver від 22 Листопад 2008, 20:40:28
подскажите а что ви делаете что у вас при ответе появляеться окно код и там исходники и т.д
Я сохраняю код в формате txt. Типа такое. Я правильно ваш вопрос понял?  ???

FalseMan

Цитата: resiver від 22 Листопад 2008, 20:40:28
подскажите а что ви делаете что у вас при ответе появляеться окно код и там исходники и т.д
Цитата: FalseMan від 21 Листопад 2008, 20:29:13
1 пользуйся тегом code

dojik

Цитата: resiver від 22 Листопад 2008, 20:40:28
подскажите а что ви делаете что у вас при ответе появляеться окно код и там исходники и т.д
Выдели свой код и нажми кнопку "решетка" # над ржущим смайлом.

Edd.Dragon

Цитата: beep_boop від 22 Листопад 2008, 01:29:00
Кстати
#define SOMECONST  111
и
int const someconst = 111;
приведет к генерации разного кода, что иногда может иметь значение.
В обычных условиях define патчит исходник прежде чем отдать его компилятору, подставляя 111 в явном виде, везде где оно используется. А const int уже сам компилятор во время компиляции точно так же расставить явно там где оно используется и получится то же самое. Если конечно типы совпадают, т.е. не потребуется их преобразование в одном случае, а в другом нет.

Цитата: beep_boop від 22 Листопад 2008, 01:29:00
Как раз наоборот. Делать что-то через жопу дефайнами - очень плохая привычка. С константами ты по крайней мере не ошибешься - препроцессор подставит значение константы и все.
Тоже верно

βεερ_βooρ

Цитата: edd_k від 23 Листопад 2008, 12:32:04
В обычных условиях define патчит исходник прежде чем отдать его компилятору, подставляя 111 в явном виде, везде где оно используется.
Да, это так, но:
Цитата: edd_k від 23 Листопад 2008, 12:32:04
А const int уже сам компилятор во время компиляции точно так же расставить явно там где оно используется и получится то же самое.
Это неверно. Компилятор выделит ячейку памяти, положит в нее 111 и конструкция:
a=someconst;
Приведет приблезительно к такому коду:

mov ax,[someconst]
mov [a],ax

Если использовать препроцессор:
a=SOMECONST;
Преобразуется в:

mov [a], 111



Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

Edd.Dragon

Цитата: beep_boop від 23 Листопад 2008, 14:37:59
Это неверно. Компилятор выделит ячейку памяти, положит в нее 111 и конструкция:
a=someconst;
Приведет приблезительно к такому коду:

mov ax,[someconst]
mov [a],ax

Даже с включенной оптимизацией кода? Если не ошибаюсь, то явная подстановка константных значений - это одна из стандартных оптимизаций в компиляторах



βεερ_βooρ

Цитата: edd_k від 23 Листопад 2008, 14:45:43
Даже с включенной оптимизацией кода? Если не ошибаюсь, то явная подстановка константных значений - это одна из стандартных оптимизаций в компиляторах
Оптимизация - отдельный разговор.
А так:
#define SOMECONST 222
int main()
{
const int someconst = 111;
int a;

a=someconst;
a=SOMECONST;
a=333;
return 0;
}

В главной роли GCC, коментарии мои:
.file "1.c"
.text
.globl main
.type main, @function
main:
//Формируем стековый кадр:
leal 4(%esp), %ecx
andl $-16, %esp
pushl -4(%ecx)
pushl %ebp
movl %esp, %ebp
pushl %ecx
subl $16, %esp
//инициализируем константу someconst
movl $111, -12(%ebp)
//Помещаем значение константы в переменную а, используя как буфер регистр еах
movl -12(%ebp), %eax
movl %eax, -8(%ebp)
// Значения указаные явно передаются с использованием непосредственной адресации:
movl $222, -8(%ebp)
movl $333, -8(%ebp)
// return 0
movl $0, %eax
addl $16, %esp
popl %ecx
popl %ebp
leal -4(%ecx), %esp
ret
.size main, .-main
.ident "GCC: (GNU) 4.2.3"
.section .note.GNU-stack,"",@progbits

Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

resiver

Цитата: dojik від 23 Листопад 2008, 12:12:19
Выдели свой код и нажми кнопку "решетка" # над ржущим смайлом.
Спасибо!
Подпись отображается внизу каждого Вашего сообщения. Вы также можете использовать BB код и смайлы.

resiver

И все таки уважаеми программисты нужна ваша помощь! не могу разобраться с такой структурой данних как СПИСКИ, чото там в них сильно все замудрено что я хз.вот читаю книгу и там есть следуюший код

typedef struct snd
{  float  val;       
     struct snd *n ;   
     } DL;
       DL *p;             
       DL *dl;

обясните пожалуйста поподробнее что и как сдесь создаеться и как работает список етот и как можна доавить число в его елемент?
Подпись отображается внизу каждого Вашего сообщения. Вы также можете использовать BB код и смайлы.

Edd.Dragon

У тебя есть структура, содержащая
- само значение val
- ссылку на следующий (и предыдущий если надо) элемент

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

resiver

#371
1.скажите для чего ето значение val ? и что оно делает?а разве етот val не являеться первим елементом списка?
2.ссылка мне нужна только на следуюший елемент списка потому что задача у меня с однонаправленним списком.
3.а как мне создавать новий елемент? где и что надо писать что б создавать елементи списка?и при етом же применять укзатель на следуюший елемент.
4.если я не ошибаюсь то на первий елемент тоже надо укзатель ставить.ешё одно,при работе со списком ми можем обрашаться к любому елементу списка?или только в порядке с первого до последнего.
Подпись отображается внизу каждого Вашего сообщения. Вы также можете использовать BB код и смайлы.

Edd.Dragon

Цитата: resiver від 24 Листопад 2008, 20:37:07
1.скажите для чего ето значение val ?
Для ТЕБЯ! Список ЧЕГО ты строишь? Список ЗНАЧЕНИЙ каких-то. Вот этих вот val-ов.

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

Цитата2.ссылка мне нужна только на следуюший елемент списка потому что задача у меня с однонаправленним списком.
Отлично, я что против? ))))

Цитата3.а как мне создавать новий елемент?
Обявлением статической переменной этого типа или динамическим выделением памяти под указатель. Это касается не именно списков, а вообще любого создаваемого тобой типа.

Цитатаесли я не ошибаюсь то на первий елемент тоже надо укзатель ставить.
Да, хранить переменную "указатель на начало списка". И называть принято например root. Точно так же ты можешь кроме нее хранить еще десяток переменных на любые другие элементы списка - сугубо твое дело. У комнаты вовсе не обязательно должна быть всего одна дверь.

resiver

 :(может ви и прави нашот того что мне  еще рано въезжать в тонкости списков!
раскажите поподробнее про их необходимость!
опять же задача моя такая . Построить список натуральных чисел длиной N.  Сжать  получен¬ный список, убрав все четные числа.
Подпись отображается внизу каждого Вашего сообщения. Вы также можете использовать BB код и смайлы.

Edd.Dragon

Цитата: resiver від 24 Листопад 2008, 20:49:33
:(может ви и прави нашот того что мне  еще рано въезжать в тонкости списков!
раскажите поподробнее про их необходимость!
Забудь про свою задачу. Представь себе что-то другое. Вот например у тебя есть цепочка каких-то сложных объектов. Ну не знаю. Большие картинки, идущие одна за одной. Их 100 000 штук. Каждая весит по метру - итого 100 гигабайт. Вот тебя просят вставить картинку после 1000-ой. Ты что, будешь передвигать массив из 99 гигов, чтобы появилось окно для вставляемой картинки? А может пусть они валяются как угодно, но у каждой будет ссылка на предыдущую и на последующую. Так ты всегда сможешь по цепочке их перебрать. А вставить проще простого. ПРосто положим картинку в конец и впишем к ней ссылки-связи с предыдущей и следующей (а в предыдущей и в следующей - на новую картинку).

У тебя вместо картинок обычные числа. Ну и ссылка "назад" не нужна.

resiver

Своим примером ви меня запутали, ви могли б свой пример рассказать с какой то одной единицей измерения? тобиж 100000 штук, или 100гб
Подпись отображается внизу каждого Вашего сообщения. Вы также можете использовать BB код и смайлы.

Edd.Dragon

файлов 100 000 штук. Весят они 100 Gb. Как можно рассказать по-другому? И какая вообще разница, сколько оин весят. Я просто привел пример, чтобы было понятно, что перемещать такие массивы, если бы это был привычный статический массив - глупо. Т.е. раскладывать картинки по-порядку физически - нецелесообразно. И порядок следования нужно организовывать иным способом. А физически картинки лежат как получится.

Принцип размещения файлов на винте знаешь? Что такое файл? Это как раз список секторов. Каждый сектор указывает на следующий. Начало в файловой таблице. Сами сектора по всему винту раскиданы - где было место там и лягло. А если бы ты требовал чтобы файлы были цельными - пришлось бы при каждой записи кучу всего двигать.


resiver

Цитата: edd_k від 24 Листопад 2008, 21:18:21
файлов 100 000 штук. Весят они 100 Gb. Как можно рассказать по-другому? И какая вообще разница, сколько оин весят. Я просто привел пример, чтобы было понятно, что перемещать такие массивы, если бы это был привычный статический массив - глупо. Т.е. раскладывать картинки по-порядку физически - нецелесообразно. И порядок следования нужно организовывать иным способом. А физически картинки лежат как получится.

Принцип размещения файлов на винте знаешь? Что такое файл? Это как раз список секторов. Каждый сектор указывает на следующий. Начало в файловой таблице. Сами сектора по всему винту раскиданы - где было место там и лягло. А если бы ты требовал чтобы файлы были цельными - пришлось бы при каждой записи кучу всего двигать.
Теперь я начал понимать что ви хотите сказать! :) тоесть основой списка есть связь по цепочке!
размешение файлов на винте я знаю.ну а как дальше все ето связивать со списками?
Подпись отображается внизу каждого Вашего сообщения. Вы также можете использовать BB код и смайлы.

Edd.Dragon

Цитатану а как дальше все ето связивать со списками?
Ну вот у тебя элемент списка - это сектор файла + ссылка на следующий такой же элемент, т.е. на следующий "сектор+ссылка" и т.д.

resiver

теперь все ясно.скажите ранно ли мне теперь начинать реализацию хоть маленького списка или надо ешё примери подробние почитать??
Подпись отображается внизу каждого Вашего сообщения. Вы также можете использовать BB код и смайлы.

Edd.Dragon

Цитата: resiver від 24 Листопад 2008, 22:11:33
теперь все ясно.скажите ранно ли мне теперь начинать реализацию хоть маленького списка
Хоть какого угодно. Он хоть на 100 элементов, хоть на миллион - одно и то же - цепочка.

Пробуй, реализовывай. Вспоминай или смотри в предыдущих работающих примерах, как память выделяется, как удаляется.

resiver

вот я ешё почитаю про указатели и тогда попробую реализовать список, засипать его случайними числми и вивесити содержимое списка на екран(подскажите для начала такая прога пойдет?). только мне одно не до конца понятно то что елементи списка можна создавать до конца оперативки, и создание списка статического размера, суть етой картинки не сильно усёк.
Подпись отображается внизу каждого Вашего сообщения. Вы также можете использовать BB код и смайлы.

Edd.Dragon

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

Цитатаи создание списка статического размера
Ну это я не знаю что имелось ввиду.

resiver

Доброе время суток! никто не подскажет какая математическая формула применяеться в следующем примере, или может закон какой???

Example: 179487 * 4 = 717948

17 * 4 = 71 (base 9)

as (9 * 1 + 7) * 4 = 7 * 9 + 1
Подпись отображается внизу каждого Вашего сообщения. Вы также можете использовать BB код и смайлы.

x-jek

Извиняюсь что не в тему: нужно установить Паскаль, я пробую установить, а вылетает ошибка на каждом файле, и так все время мол файл поврежден или что-то типа этого. Юзаю висту.
AMD Athlon X2 4200+, MSI K9NGM4, 2GB Ram, Geforce 8600GT, Samsung 320 GB, Codegen 300 ВТ

Edd.Dragon

Какой Паскаль? Досовский?
Не знаю как в Висте с поддержкой 16-битных DOS-приложений... Но то, что старючий инсталлер вополне может не работать в современной Висте - ничего удивительного.

Сделай себе загрузочную флешку и из-под Доса на нее же и установи (по сути распакуй). А будет ли уже сам паскаль из под висты работать - не знаю. В XP работает.


x-jek

Цитата: edd_k від 03 Грудень 2008, 16:21:25
Какой Паскаль? Досовский?
Не знаю как в Висте с поддержкой 16-битных DOS-приложений... Но то, что старючий инсталлер вополне может не работать в современной Висте - ничего удивительного.

Сделай себе загрузочную флешку и из-под Доса на нее же и установи (по сути распакуй). А будет ли уже сам паскаль из под висты работать - не знаю. В XP работает.


Название папки с установщиком TPASCAL.71. Вот что странно basic работает нормально. а паскаль не хочет. и еще вопрос, а чем отличаются старые версии Бейсика 3.22 от 3.23(а то в школе на компах стоят 3.22. а я в нете скачал 3.23, и вот думаю каким пользоваться)
AMD Athlon X2 4200+, MSI K9NGM4, 2GB Ram, Geforce 8600GT, Samsung 320 GB, Codegen 300 ВТ

Edd.Dragon

ЦитатаВот что странно basic работает нормально. а паскаль не хочет.
Ты уточни, у тя паскаль не работает или его инсталлка?

x-jek

Цитата: edd_k від 03 Грудень 2008, 16:34:48
Ты уточни, у тя паскаль не работает или его инсталлка?

Инсталка не хочет устанавливать паскаль
AMD Athlon X2 4200+, MSI K9NGM4, 2GB Ram, Geforce 8600GT, Samsung 320 GB, Codegen 300 ВТ

Edd.Dragon

Цитата: x-jek від 03 Грудень 2008, 16:36:27
Инсталка не хочет устанавливать паскаль
Ну так при чем тогда что установленый бейсик работает? Установленый Паскаль видимо тоже пойдет без проблем

x-jek

Цитата: edd_k від 03 Грудень 2008, 16:37:29
Ну так при чем тогда что установленый бейсик работает? Установленый Паскаль видимо тоже пойдет без проблем

Кто сказал что бейсик я устанавливал? я пользуюсь старой версией GWBASIK где идет только exe файл
AMD Athlon X2 4200+, MSI K9NGM4, 2GB Ram, Geforce 8600GT, Samsung 320 GB, Codegen 300 ВТ

Edd.Dragon

Цитата: x-jek від 03 Грудень 2008, 16:46:26
Кто сказал что бейсик я устанавливал? я пользуюсь старой версией GWBASIK где идет только exe файл
Вот именно!
Я и спрашиваю - почему ты сравниваешь одно с другим?
Работает ли Паскаль - ты НЕ знаешь, т.к. проблема у тебя с некоторой старой инсталлкой, а не с Паскалем.

Установи там где устанавливается и перенеси в свою Висту



skif

я оце одного не розумію: чому з початку виходу програм Basic i Pascal їх середовище та інтерфейс практично не змінювали?

FalseMan

Цитата: skif від 04 Грудень 2008, 21:38:11
я оце одного не розумію: чому з початку виходу програм Basic i Pascal їх середовище та інтерфейс практично не змінювали?
Потому что они развиваются в более современных версиях, а "канонические" просто прекратили разрабатывать еще в 90-х

Phantom of the Opera

Цитата: skif від 04 Грудень 2008, 21:38:11
я оце одного не розумію: чому з початку виходу програм Basic i Pascal їх середовище та інтерфейс практично не змінювали?
ІМНО Тому що в досі у текстовому режимі простіше писати програму, програма швидше працювала в текстовому режимі, ..., і переходити в графічний режим не було достатньо причин. А в текстовому режимі хіба що кольори поміняти (а режими 80х25 і 80х43 (ніби) символів і так міняти можна). А вже під виндовс свого часу випустили паскаль з графічним інтерфейсом. А потім пішло дельфі.
"Мыслящий ум - тот, который постоянно учится, никогда не делая заключений; стили и шаблоны уже приведены к заключениям, и, таким образом, они не могут способствовать мышлению." Брюс Лі

Edd.Dragon

Цитата: skif від 04 Грудень 2008, 21:38:11
я оце одного не розумію: чому з початку виходу програм Basic i Pascal їх середовище та інтерфейс практично не змінювали?
Basic --> Microsoft Visual Basic
Pascal - Delphi - Borland Developement Studio

Andrii

Привіт усім! Короче вчу я ПХП, і не можу розібратися з таким:

  • Для чого використовують масиви
  • Для чого використовують функції
Хтось знає чи є стаття для правильного написання ПХП-програми? І яку книгу ви порадите для вивчення ПХП, а то в моїй полоаина прог не запускаються.
Ось код:
<?php
require 'formhelpers.php';

// Это работает аналогично функции input_text( ) из formhelpers.php, но
// выводит поле для пароля (в котором звездочки скрывают вводимое значение)
// вместо обычного текстового поля

function input_password($field_name, $values) {
      print
'<input type="password" name="' . $field_name .'" value="';
      print
htmlentities($values[$field_name]) . '">';
}

session_start( );

if (
$_POST['_submit_check']) {
     if (
$form_errors = validate_form( )) {
         
show_form($form_errors);
     } else {
           
process_form( );
     }
} else {
     
show_form( );
}

function
show_form($errors = '') {
      print
'<form method="POST" action="'.$_SERVER['PHP_SELF'].'">';

      if (
$errors) {
           print
'<ul><li>';
           print
implode('</li><li>',$errors);
           print
'</li></ul>';
      }
      print
'Username: ';
     
input_text('username', $_POST);
      print
'<br/>';</pre>
      print
'Password: ';
     
input_password('password', $_POST);
      print
'<br/>';

     
input_submit('submit','Log In');

      print
'<input type="hidden" name="_submit_check" value="1"/>';
      print
'</form>';
}

function
validate_form( ) {
     
$errors = array( );

     
// Несколько имен и паролей для примера
     
$users = array('alice' => 'dog123',
                             
'bob' => 'my^pwd',
                             
'charlie' => '**fun**');
     
// Проверка имени на допустимость
     
if (! array_key_exists($_POST['username'], $users)) {
           
$errors[ ] = 'Please enter a valid username and password.';
      }

     
// Проверка допустимость пароля
     
$saved_password = $users[ $_POST['username'] ];
     if (
$saved_password != $_POST['password']) {
         
$errors[ ] = 'Please enter a valid username and password.';
     }
     
     return
$errors;
}

function
process_form( ) {
     
// Добавление имени к сессии
     
$_SESSION['username'] = $_POST['username'];

      print
"Welcome, $_SESSION[username]";
}
?>

Чогось він не працює! А в файлі formhelpers.php шось має бути?

Edd.Dragon

#397
Цитата: Andrii від 09 Грудень 2008, 12:35:21
Привіт усім! Короче вчу я ПХП, і не можу розібратися з таким:

  • Для чого використовують масиви
  • Для чого використовують функції
Вообще-то ты задал языконезависимый вопрос. Отсюда вывод - сначала тебе надо бы поучить алгоритмизацию и задаться какой-то целью, отличной от "зачем-то выучить PHP".

0. Что такое массив? Что такое функция?

1.Что такое строка или текстовый файл одной строкой? Последовательность символов? Так зачем нужны массивы?
Что такое картинка? Двумерная матрица чисел? Текстовый файл построчно - это последовательность строк_последовательностей_символов, т.е. снова матрица? Так зачем нужны двумерные массивы? А так же трех, четырех и N-мерные...

2. У меня есть жутко сложное Драконово преобразование, размером в 200 строк кода. Так же у меня есть 10 программ, которые его используют. При чем в каждой из них это преобразование используется по меньшей мере в 10 местах. Предлагаешь расксерить 200-строчный алгоритм во все эти как минимум 100 мест? А если поменяешь в нем чего-то, будешь все эти места искать и 100 раз в каждом менять одно и тоже?


ЦитатаА в файлі formhelpers.php шось має бути?
Ну судя по названию там полезные функции для работы с формой?
А проги у тебя НЕ "почему-то не работают". Они тебе пишут конкретные ошибки.
И чтобы научиться программить перво-наперво нужно научиться их ЧИТАТЬ и ПОНИМАТЬ )))
В частности тебе там наверняка говорится, что прога понятия не имеет о функции Blah-blah(), т.к. ты не удосужился предоставить файл, в котором текст этой функции. А то и просто говорит "А что это ты меня за файл просишь использовать? Нету такого!".


FalseMan

Цитата: Andrii від 09 Грудень 2008, 12:35:21
Привіт усім! Короче вчу я ПХП, і не можу розібратися з таким:

  • Для чого використовують масиви
  • Для чого використовують функції
Хтось знає чи є стаття для правильного написання ПХП-програми? І яку книгу ви порадите для вивчення ПХП, а то в моїй полоаина прог не запускаються.
Ось код:
<?php
require 'formhelpers.php';

// Это работает аналогично функции input_text( ) из formhelpers.php, но
// выводит поле для пароля (в котором звездочки скрывают вводимое значение)
// вместо обычного текстового поля

function input_password($field_name, $values) {
      print
'<input type="password" name="' . $field_name .'" value="';
      print
htmlentities($values[$field_name]) . '">';
}

session_start( );

if (
$_POST['_submit_check']) {
     if (
$form_errors = validate_form( )) {
         
show_form($form_errors);
     } else {
           
process_form( );
     }
} else {
     
show_form( );
}

function
show_form($errors = '') {
      print
'<form method="POST" action="'.$_SERVER['PHP_SELF'].'">';

      if (
$errors) {
           print
'<ul><li>';
           print
implode('</li><li>',$errors);
           print
'</li></ul>';
      }
      print
'Username: ';
     
input_text('username', $_POST);
      print
'<br/>';</pre>
      print
'Password: ';
     
input_password('password', $_POST);
      print
'<br/>';

     
input_submit('submit','Log In');

      print
'<input type="hidden" name="_submit_check" value="1"/>';
      print
'</form>';
}

function
validate_form( ) {
     
$errors = array( );

     
// Несколько имен и паролей для примера
     
$users = array('alice' => 'dog123',
                             
'bob' => 'my^pwd',
                             
'charlie' => '**fun**');
     
// Проверка имени на допустимость
     
if (! array_key_exists($_POST['username'], $users)) {
           
$errors[ ] = 'Please enter a valid username and password.';
      }

     
// Проверка допустимость пароля
     
$saved_password = $users[ $_POST['username'] ];
     if (
$saved_password != $_POST['password']) {
         
$errors[ ] = 'Please enter a valid username and password.';
     }
     
     return
$errors;
}

function
process_form( ) {
     
// Добавление имени к сессии
     
$_SESSION['username'] = $_POST['username'];

      print
"Welcome, $_SESSION[username]";
}
?>

Чогось він не працює! А в файлі formhelpers.php шось має бути?

Да, по ходу, этот файл ты должен был создать на одном из предыдущих уроков, насколько я понял.

Edd.Dragon

Цитата: FalseMan від 09 Грудень 2008, 14:31:12
Да, по ходу, этот файл ты должен был создать на одном из предыдущих уроков, насколько я понял.
Не обязательно. Это просто на диске к книге может храниться. Если мы используем в уроках сотню стандартных функций из стандартных библиотек языка - это же не повод добавить в книгу 10 000 страниц с их листингом. Но точно так же для уроков может понадобиться и авторская библиотека, для которой тем не менее в книге места нет, т.к. она длинная и для ее обсуждения нужно сначала прочесть книгу.