tos
|
|
« Ответ #180 : Ноябрь 27, 2008, 08:45:17 » |
|
а может обмен значениями??
|
|
|
Записан
|
|
|
|
broken-wings
wings of empathy
ЧеГеварный
Проректор
Карма: +176/-6
Offline
Пол: Награды:
Сообщений: 4531
Эксперт по какашкам и поиску смыслов
|
|
« Ответ #181 : Ноябрь 27, 2008, 08:47:08 » |
|
tos, ну да, неправильно выразил мысль.
|
|
|
Записан
|
кругом одно и то же свинство но я умею выделять по незначительным нюансам спорт журналистику кино
|
|
|
Kenny
|
|
« Ответ #182 : Ноябрь 29, 2008, 02:04:43 » |
|
Abrakadabra Abrakadabra::operator +(Abrakadabra tmp){ Abrakadabra temp; int i; temp.N=N+tmp.N; string temp.*Stroka=new string[temp.N];<------- как правильно записать выделение в определенном объекте. for(i=0;i<N;i++){ temp.Stroka=Stroka; } for(i=N+1;i<temp.N;i++){ temp.Stroka=tmp.Stroka; } return temp; } error C2143: syntax error : missing ';' before '.' error C2371: 'temp' : redefinition; different basic type ( Отправлено в: Ноябрь 29, 2008, 01:02:14 ) понятно, что в этой строке переопределение, но а как иначе?
|
|
|
Записан
|
|
|
|
Артем
sprata
Mодератор
Завкаф
Карма: +40/-5
Offline
Пол:
Сообщений: 1107
|
|
« Ответ #183 : Ноябрь 29, 2008, 08:54:52 » |
|
string temp.*Stroka=new string[temp.N];<------- как правильно записать выделение в определенном объекте. temp.Stroka = new string[temp.N];
|
|
|
Записан
|
|
|
|
Kenny
|
|
« Ответ #184 : Ноябрь 29, 2008, 12:05:35 » |
|
string temp.*Stroka=new string[temp.N];<------- как правильно записать выделение в определенном объекте. temp.Stroka = new string[temp.N]; спасибо.
|
|
|
Записан
|
|
|
|
Магнетон Бора
ЖИЗНЬ - БАЯН
Cтудент
Карма: +1/-0
Offline
Пол:
Сообщений: 61
|
|
« Ответ #185 : Ноябрь 30, 2008, 10:29:04 » |
|
Народ, а тут такой вопрос: Допустим мы работаем в графическом режиме и нам нужно вернуться в текстовый режим и далее работать в нём. Я пробывал это делать по-разному: просто закрывать графическую библиотеку ( функция closegraph() ), пробывал использовать функцию restoctrmode(); но везде одна и таже проблема - после возврата в текстовый режим из графического шрифт, которым выводятся данные изменился и стал немного больше и как его изменить на страый ума не приложу ( старый это тот который был до того как был активирован графический режи, там символы были помельче ). Тут вот есть код, который иллюстрирует эту проблему: #include<graphics.h> #include<stdlib.h> #include<stdio.h> #include<conio.h> #include<iostream.h>
int main(void) { int gdriver = DETECT, gmode, errorcode; int x, y;
cout<<"We're in text mode\n"; getch(); initgraph(&gdriver, &gmode, "C:\\BORLANDC\\BGI");
errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); }
x = getmaxx() / 2; y = getmaxy() / 2;
settextjustify(CENTER_TEXT, CENTER_TEXT); outtextxy(x, y, "Press any key to exit graphics:"); getch();
/* "Пытаемся восстановить старый графический режим" */ restorecrtmode(); printf("We're now in text mode.\n"); printf("Press any key to return to graphics mode:"); getch();
setgraphmode(getgraphmode());
settextjustify(CENTER_TEXT, CENTER_TEXT); outtextxy(x, y, "We're back in graphics mode."); outtextxy(x, y+textheight("W"), "Press any key to halt:");
getch(); closegraph(); return 0; }
Кто-нибудь знает как сдлеать шрифт нормальным ? ЗЫ. Компилятор BC 3.1
|
|
|
Записан
|
|
|
|
Артем
sprata
Mодератор
Завкаф
Карма: +40/-5
Offline
Пол:
Сообщений: 1107
|
|
« Ответ #186 : Ноябрь 30, 2008, 11:11:13 » |
|
Скорее всего текстовый режим 80*50 строк, после перехода в граф режим и возврата в текстовый, меняется на 80*25. Попробуй использовать ф-ию textmode(C4350) чтобы вернуться в режим 80*50.
|
|
|
Записан
|
|
|
|
Магнетон Бора
ЖИЗНЬ - БАЯН
Cтудент
Карма: +1/-0
Offline
Пол:
Сообщений: 61
|
|
« Ответ #187 : Ноябрь 30, 2008, 11:17:42 » |
|
спасибо, artem90; получилось )))))))
|
|
|
Записан
|
|
|
|
Alder
|
|
« Ответ #188 : Ноябрь 30, 2008, 12:40:13 » |
|
Я бы предложил способ лучше - сохранять настройки текстового режима перед входом в графический режим и восстанавливать их на выходе. На BP это выглядело так: uses Crt; var OriginalMode: integer; begin OriginalModer:=LastMode; .... .... TextMode (OriginalMode); end.
|
|
|
Записан
|
"There are things known and there are things unknown, and in between are the doors..." (Jim Morrison)
|
|
|
Магнетон Бора
ЖИЗНЬ - БАЯН
Cтудент
Карма: +1/-0
Offline
Пол:
Сообщений: 61
|
|
« Ответ #189 : Ноябрь 30, 2008, 01:12:57 » |
|
Я бы предложил способ лучше - сохранять настройки текстового режима перед входом в графический режим и восстанавливать их на выходе. На BP это выглядело так:
Я уже в принципе так и сделал, но спасибо за совет, Alder
|
|
|
Записан
|
|
|
|
Магнетон Бора
ЖИЗНЬ - БАЯН
Cтудент
Карма: +1/-0
Offline
Пол:
Сообщений: 61
|
|
« Ответ #190 : Декабрь 13, 2008, 10:36:06 » |
|
Уважаемы коллеги, возникла следующая трудность: при завершении работы написанной программы выскакиват ошибка Null pointer assignment, должен сказать моя любимая. В принципе я понимаю, что идет запись или удаление чего-то из нулевой области, как эффективно отследить эту ошибку, на одном форуме один чел делал троссировка и в watch добавил (char*)4, но почему именно эту область? В общем посоветуйте что-нибудь как избавиться от этой ошибки. Заранее благодарен.
|
|
|
Записан
|
|
|
|
ZaQ
Бакалавр
Карма: +6/-1
Offline
Пол:
Сообщений: 128
|
|
« Ответ #191 : Декабрь 13, 2008, 02:31:39 » |
|
дя начала платформа какая? во вторых, конкретно кусок кода, куда ассерт ссылается, в третьих вопрос почетче опиши, гадать на кофейной гуще не охота.
|
|
|
Записан
|
|
|
|
Магнетон Бора
ЖИЗНЬ - БАЯН
Cтудент
Карма: +1/-0
Offline
Пол:
Сообщений: 61
|
|
« Ответ #192 : Декабрь 13, 2008, 02:52:53 » |
|
Платформа BC 3.1, вопрос такой как отследить ошибку Null pointer assignment, кусок кода кинуть не могу могу только весь код, в этом-то и беда
|
|
|
Записан
|
|
|
|
ZaQ
Бакалавр
Карма: +6/-1
Offline
Пол:
Сообщений: 128
|
|
« Ответ #193 : Декабрь 13, 2008, 05:42:43 » |
|
вообщем гляди как используешь указатели, где зануленые можешь использовать, где используешь неинициализированные. вообще в ВС тяжело чет намудрить
|
|
|
Записан
|
|
|
|
Магнетон Бора
ЖИЗНЬ - БАЯН
Cтудент
Карма: +1/-0
Offline
Пол:
Сообщений: 61
|
|
« Ответ #194 : Декабрь 13, 2008, 06:26:48 » |
|
вообщем гляди как используешь указатели, где зануленые можешь использовать, где используешь неинициализированные. вообще в ВС тяжело чет намудрить Я уже разобрался. В том то и дело, что я спрашивал какой-нибудь эффективный способ нахождения утечки памяти или просто некоректного обращения с последний, обычный способ просмотра при 1200 строчках кода затруднительный как минимум. И должен сказать, что опыт показывает как раз в ВС 3.1 можно намудрить и очень, очень сильно у меня 10-ки примеров и не только со своего опыта...
|
|
|
Записан
|
|
|
|
Артем
sprata
Mодератор
Завкаф
Карма: +40/-5
Offline
Пол:
Сообщений: 1107
|
|
« Ответ #195 : Январь 13, 2009, 12:27:21 » |
|
Тема разделена, вопросы по алгоритмам теперь задаем тут
|
|
|
Записан
|
|
|
|
SPL
Cтудент
Карма: +1/-0
Offline
Пол:
Сообщений: 57
|
|
« Ответ #196 : Февраль 09, 2009, 09:27:54 » |
|
Здравствуйте) Писал тут программку, заметил некоторую странность. Кусок моего кода: #include <stdio.h> #include <stdlib.h>
void CreateArray(int *a, int m, int n) { int i,j; randomize(); for (i=0;i<m;i++) for (j=0;j<n;j++) *(a+i*n+j)=random(30); }
void PrintArray (int *a, int m, int n) { int i,j; for (i=0;i<m;i++) { for (j=0;j<n;j++) printf ("%7.1d", *(a+i*n+j)); printf ("\n"); } }
main() { int m,n, array[20][20],i,j; printf ("Enter size of matrix (max 20x20):\n"); do { scanf ("%d", &m); scanf ("%d", &n); } while (m!=n || m<=0 || m>20); CreateArray(array[0], m, n); PrintArray (array[0], m, n); printf("\n\n"); for (i=0;i<m;i++) { for (j=0;j<n;j++) printf ("%7.1d", array[i][j]); printf ("\n"); } return 0; }
Результат выходит такой: Почему выходит так, что матрица распечатанная в функции PrintArray отличается от распечатанной в main?
|
|
|
Записан
|
|
|
|
EvilMax
Администратор
Завкаф
Карма: +59/-0
Offline
Пол:
Сообщений: 1072
Злой и страшный :)
|
|
« Ответ #197 : Февраль 09, 2009, 09:35:25 » |
|
Здравствуйте) Писал тут программку, заметил некоторую странность. Кусок моего кода: Почему выходит так, что матрица распечатанная в функции PrintArray отличается от распечатанной в main? Потому что некоторые штатские не слушают на лекции И не знают, что матрица хранится по строкам в памяти, и размер строки определяется объявлением. Так как ты её объявил как матрицу 20х20, то размер одной строки равен 20 элементам, а не введенному пользователем n. Таким образом правильная адресация элементов *(a +i*20 + j). Ну и 20 можно сделать константой с помощью #define COLS 20 или передать еще один параметр в функцию, который отражает общее число столбцов (помимо параметра, отражающего, сколько из них хочет использовать программист).
|
|
|
Записан
|
Оптимальная концентрация кофе - это когда код уже дает советы, как его написать, но еще не спорит с тобой и не подкалывает в случае неудач... --- Существует три способа распространения программного обеспечения: воровство, грабёж и обмен краденым. (c) Неизвестный программист
|
|
|
Storm
Верховный
Администратор
Аспирант
Карма: +29/-0
Offline
Пол:
Сообщений: 484
|
|
« Ответ #198 : Февраль 09, 2009, 09:42:15 » |
|
В программе все правильно. Массив какого размера выделил? 20 на 20 вот при вычислении array[j] == (a+i*20+j) этот размер и принимается, а при вычислении (a+i*n+j) берется тобою заданное n. здесь лучше динамически память с помощью malloc выделять под массив, сколько надо столько и выделяешь.
|
|
|
Записан
|
Только две вещи бесконечны: вселенная и тупость, и я еще не уверен по поводу вселенной. (Альберт Эйнштейн) ---------------------------------------------------- "There are two major products that came out of Berkeley: LSD and UNIX. We don't believe this to be a coincidence." (с) Jeremy S. Anderson
Проходит ирландец мимо паба....
|
|
|
EvilMax
Администратор
Завкаф
Карма: +59/-0
Offline
Пол:
Сообщений: 1072
Злой и страшный :)
|
|
« Ответ #199 : Февраль 09, 2009, 09:44:12 » |
|
В программе все правильно. Где ж всё правильно, если вот это: (a+i*n+j) ))) Впрочем, мы оба ответили на вопрос ))
|
|
|
Записан
|
Оптимальная концентрация кофе - это когда код уже дает советы, как его написать, но еще не спорит с тобой и не подкалывает в случае неудач... --- Существует три способа распространения программного обеспечения: воровство, грабёж и обмен краденым. (c) Неизвестный программист
|
|
|
|