Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
CarbonBased
7 / 4 / 4
Регистрация: 27.03.2017
Сообщений: 131
1

Функция копирования массива

20.05.2017, 00:54. Просмотров 538. Ответов 2
Метки нет (Все метки)

При заданном алгоритме функция работает верно.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void copy2(const double (*ar0)[COLS], double (*ar2)[COLS], int b)
{
    int i, j;
 
    const double *pt;
    pt = &ar0[0][0];
 
    for(i = 0; i < ROWS; ++i)
    {
        for(j = 0; j < COLS; ++j)
        {
            ar2[i][j] = *pt++;
        }
    }
}
Если же я меняю алгоритм на следующий:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void copy2(const double (*ar0)[COLS], double (*ar2)[COLS], int b)
{
    int i, j = 0;
 
    const double *pt;
    pt = &ar0[0][0];
 
    for(i = 0; i < ROWS; ++i)
    {
        while(j++ < COLS)
        {
            ar2[i][j] = *pt++;
        }
    }
}
функция работает неправильно.

С чем может быть связана ошибка ?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2017, 00:54
Ответы с готовыми решениями:

Функция копирования
Второй день изучаю Си, не могу понять, что я делаю не так! О существовании strcpy, но ради практики...

Функция копирования строк
Вобщем, есть функция копирования строк, выглядит так: void strcpy4(char* s, char* t){...

Функция копирования в символьный массив
Программа работает не корректно. После первого запуска всегда пропускается ввод второй строки....

функция копирования подстроки
Написать функцию копирования подстроки строки S1, начиная с символа номер k1 до символа k2, с...

2
LFC
732 / 537 / 416
Регистрация: 17.09.2015
Сообщений: 1,599
20.05.2017, 04:10 2
Цитата Сообщение от CarbonBased Посмотреть сообщение
while(j++ < COLS)
сравнение происходит одного индекса а присваивание
Цитата Сообщение от CarbonBased Посмотреть сообщение
ar2[i][j] = *pt++;
уже индекс на 1 больше,т.к. произошел инкремент сразу после сравнения
попробуйте
C
1
2
3
4
 while(j < COLS)
        {
            ar2[i][j++] = *pt++;
        }
1
CarbonBased
7 / 4 / 4
Регистрация: 27.03.2017
Сообщений: 131
20.05.2017, 11:38  [ТС] 3
Цитата Сообщение от LFC Посмотреть сообщение
уже индекс на 1 больше,т.к. произошел инкремент сразу после сравнения
C этой функций проблем нет. Насколько я понимаю, при постфиксной форме указатель не будет увеличен до тех пор, пока значение, на которое нацелен указатель не будет прибавлено к переменной слева.

Цитата Сообщение от LFC Посмотреть сообщение
уже индекс на 1 больше,т.к. произошел инкремент сразу после сравнения
Спасибо.
0
20.05.2017, 11:38
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2017, 11:38

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

Функция копирования строк в БД
Разрабатывается приложение, в функции которого должна входить функция копирования строк. Вроде бы...

Функция копирования строки
Нужно писать функцию Strcopy1() который работает как Strcopy() , нужно переписать сиволы из 2ого...

Функция копирования строки
Есть строка,написать программу с ф-цией,которая формирует строку-копию.

API функция копирования файла
Привет. Есть прога, которая после обработки копирует файл на удаленный сервак. Процедура иногда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.