![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
zall |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 18.12.2008 Репутация: нет Всего: нет |
#include <conio.h>
#include <iostream.h> #include <stdio.h> void Expand( const long *pIn, const int n, long **ppOut, int *pn , int *pm); int main() { long In[] = {3,7,8,4,11,6,15983,2 }; int n = sizeof(In)/sizeof(long); int m; long *pOut = 0; Expand( In, n, &pOut, &n, &m ); for( int i=0; i<n; ++i ) { printf("\n Out[%d] = %d", i, *(pOut+i)); } delete pOut; printf("\n count= %d", m); getch(); return 0; } //end of main void Expand( const long *pIn, const int n, long **ppOut, int *pn, int *pm) { int i; int count = 0; for( i=0; i<n; ++i ) { if( !(pIn[i] & 0x1) )// chetn count++; } long *pWork = new long [n+count]; int j; for( i=0, j=0; i<n; ++i ) { pWork[j++] = pIn[i]; if( !(pIn[i] & 0x1) ) { pWork[j++] = 0; } } *ppOut = pWork; *pn = n+count; *pm = count; } напишите коменты к коду плиз а то чтот непонятное программа добавляет после каждого чётного элемента 0 |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
может правильнее будет , чтоб Вы сами написали комменты, а форумчане подправят где неправильно или на сложных моментах ?
|
|||
|
||||
zall |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 18.12.2008 Репутация: нет Всего: нет |
дело в том, что программу писал не я, а человек уехавший отдыхать, а мне сдавать надо. Без коментов вообще никак, а сам я их написать не в состоянии, ибо не понял алгоритма
|
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
Мдя... Вот у некоторых человечков, хорошие привычки. Типа сделайте то да это за меня.
Вот, не трудно. Принципиально не помогу. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
zall |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 18.12.2008 Репутация: нет Всего: нет |
ну хотяб не ко всему а
int n = sizeof(In)/sizeof(long); и long *pWork = new long [n+count]; int j; for( i=0, j=0; i<n; ++i ) { pWork[j++] = pIn[i]; if( !(pIn[i] & 0x1) ) { pWork[j++] = 0; |
|||
|
||||
Dmi3ev |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 13 Всего: 41 |
делишь размер массива In на размер типа данных long, получаешь 8, тк в массиве 8 элементов, каждый имеет тип long Добавлено через 2 минуты и 3 секунды
*pWork - это указатель, ты выделяешь память для хранения n+count значений типа long. -------------------- |
||||
|
|||||
zall |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 18.12.2008 Репутация: нет Всего: нет |
спасибо
![]() |
|||
|
||||
kurtis |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 10.8.2007 Репутация: нет Всего: нет |
А в программе случаем нету ошибки?
Мы передаем указатель из функции main() в функцию Expand()
Т.е. разве не следует в конце функции Expand() удалить pWork ? |
||||||
|
|||||||
NewDima |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: нет Всего: 12 |
Добавлено через 3 минуты и 59 секунд
нет, он удаляется в вызывающей функции, так как в ней еще используется.
если ты его освободишь в expand(), то что будешь возвращать? |
||||||
|
|||||||
zall |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 18.12.2008 Репутация: нет Всего: нет |
#include <conio.h>
#include <iostream.h> #include <stdio.h> void matrix( int m[5][5]); int main() { int m[5][5] = { {11, 00, 31, 41, 51}, {12, 00, 32, 42, 52}, { 0, 00, 0, 0, 0}, {14, 00, 34, -44, 54}, {15, 00, 35, 45, 55}, }; matrix( m ); getch(); return 0; }//end of main // // row function set // int IsRowZero( int *r, const int n ); void SetRowToZero( int *r, const int n ); void MoveRowUp( int *rUp, int *rBottom, const int n ); int p_number( int *r, const int n ); // //column function set // int IsColumnZero( int *c, const int n, const int m ); void SetColumnToZero( int *c, const int n, const int m ); void MoveColumnLeft( int *cLeft, int *cRight, const int n, const int m ); void matrix( int m[5][5] ) { int n = 5; int i, //rows j; //columns int nPositive = -1; // //checkup rows // for( i = 0; i<n; i++ ) { if( nPositive < 0 && p_number( &m[i][0], 5 ) ) { nPositive = i+1; } int fZero = IsRowZero( &m[i][0], 5); if( fZero ) { for( int k=i; k < n-1; k++ ) { MoveRowUp( &m[k][0], &m[k+1][0], 5 ); } SetRowToZero( &m[k][0], 5 ); n--; i--; } } // //checkup columns // n = 5; for( j = 0; j<n; j++ ) { int fZero = IsColumnZero( &m[0][j], 5, 5 ); if( fZero ) { for( int k=j; k < n-1; k++ ) { MoveColumnLeft( &m[0][k], &m[0][k+1], 5 ,5 ); } SetColumnToZero( &m[0][k], 5 , 5 ); n--; j--; } } // //print results // for( i=0; i<5; i++ ) { for( j=0; j<5; j++ ) { printf( "%d\t", m[i][j]); } printf("\n"); } if( nPositive > 0 ) { printf( "Row %d contains positive element", nPositive ); } }//end of matrix // //row fuction set implementation // int IsRowZero( int *r, const int n ) { for( int i=0; i<n; i++ ) { if( r[i] != 0 ) { return 0; } } return 1; } void SetRowToZero( int *r, const int n ) { for( int i=0; i<n; i++ ) { r[i] = 0; } } void MoveRowUp( int *rUp, int *rBottom, const int n ) { for( int i=0; i<n; i++ ) { rUp[i] = rBottom[i]; } } int p_number( int *r, const int n ) { for( int i=0; i<n; i++ ) { if( r[i] > 0 ) { return 1; } } return 0; } // //column fuction set implementation // int IsColumnZero( int *c, const int n, const int m ) { for( int i=0; i<n; i++ ) { if( c[i*m] != 0 ) { return 0; } } return 1; } void SetColumnToZero( int *c, const int n, const int m ) { for( int i=0; i<n; i++ ) { c[i*m] = 0; } } void MoveColumnLeft( int *cLeft, int *cRight, const int n, const int m ) { for( int i=0; i<n; i++ ) { cLeft[i*m] = cRight[i*m]; } } в этой проге что такое p_number и nPositive |
|||
|
||||
NewDima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: нет Всего: 12 |
соглашусь... ни здрасте, и ни досвиданья, даще спасибо не скажут |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
что это было? Это сообщение отредактировал(а) Lazin - 22.12.2008, 12:30 |
|||
|
||||
zall |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 18.12.2008 Репутация: нет Всего: нет |
поблагодарить не могу, потому что 100 постов ещё нету
|
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
ну можно попросить, и поставят плюс тому кому хотите от Вашего имени, хотя благодарность необязательно выражается в плюсах.. Это сообщение отредактировал(а) mes - 22.12.2008, 17:04 |
|||
|
||||
NewDima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: нет Всего: 12 |
конечно, просто спасибо пойдет, здесь же все не за деньги идет, а репутация - второе дело
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |