КИТА unofficial
Май 06, 2024, 11:54:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   ПРАВИЛА Помощь WIKI PDA Войти Регистрация  


Страниц: 1 ... 8 9 [10] 11 12   Вниз
  Печать  
Автор Тема: Вопросы в С/С++  (Прочитано 149665 раз)
0 Пользователей и 1 Гость смотрят эту тему.
tos
Mодератор
Декан
*****

Карма: +80/-16
Offline Offline

Награды:
1 место в фотоконкурсе \1,3 место в фотоконкурсе \II место в фотоконкурсе \
Сообщений: 1949


♪♪ ♫Nice boys don`t play Rock`n`Roll♫ ♪♪


« Ответ #180 : Ноябрь 27, 2008, 08:45:17 »

а может обмен значениями??
Записан
broken-wings
wings of empathy
ЧеГеварный
Проректор
*****

Карма: +176/-6
Offline Offline

Пол: Мужской
Награды:
3 место в фотоконкурсе \За III место в фотоконкурсе \За победу в конкурсе футбольных прогнозистов \
Сообщений: 4531


Эксперт по какашкам и поиску смыслов


« Ответ #181 : Ноябрь 27, 2008, 08:47:08 »

tos, ну да, неправильно выразил мысль.
Записан

кругом одно и то же свинство
но я умею выделять
по незначительным нюансам
спорт журналистику кино
Kenny
^___^
Проректор
*****

Карма: +69/-11
Offline Offline

Пол: Мужской
Награды:
3 место в фотоконкурсе \За II, III места в фотоконкурсе Вид из окна
Сообщений: 2352



WWW
« Ответ #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 Offline

Пол: Мужской
Сообщений: 1107


« Ответ #183 : Ноябрь 29, 2008, 08:54:52 »

string temp.*Stroka=new string[temp.N];<------- как правильно записать выделение в определенном объекте.
temp.Stroka = new string[temp.N];
Записан
Kenny
^___^
Проректор
*****

Карма: +69/-11
Offline Offline

Пол: Мужской
Награды:
3 место в фотоконкурсе \За II, III места в фотоконкурсе Вид из окна
Сообщений: 2352



WWW
« Ответ #184 : Ноябрь 29, 2008, 12:05:35 »

string temp.*Stroka=new string[temp.N];<------- как правильно записать выделение в определенном объекте.
temp.Stroka = new string[temp.N];

спасибо.
Записан
Магнетон Бора
ЖИЗНЬ - БАЯН
Cтудент
*

Карма: +1/-0
Offline 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 Offline

Пол: Мужской
Сообщений: 1107


« Ответ #186 : Ноябрь 30, 2008, 11:11:13 »

Скорее всего текстовый режим 80*50 строк, после перехода в граф режим и возврата в текстовый, меняется на 80*25. Попробуй использовать ф-ию textmode(C4350) чтобы вернуться в режим 80*50.
Записан
Магнетон Бора
ЖИЗНЬ - БАЯН
Cтудент
*

Карма: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 61



« Ответ #187 : Ноябрь 30, 2008, 11:17:42 »

спасибо, artem90; получилось )))))))
Записан
Alder
Администратор
Проректор
*****

Карма: +331/-16
Offline Offline

Пол: Мужской
Награды:
За II место в конкурсе поэзии (весна-2007)2 место в фотоконкурсе \За II место в фотоконкурсе \3 место в фотоконкурсе \2 место в фотоконкурсе \Лучший знаток музыки 2009Лучший знаток музыки 2010
Сообщений: 11224


just for fun


WWW
« Ответ #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 Offline

Пол: Мужской
Сообщений: 61



« Ответ #189 : Ноябрь 30, 2008, 01:12:57 »

Цитировать
Я бы предложил способ лучше - сохранять настройки текстового режима перед входом в графический режим и восстанавливать их на выходе. На BP это выглядело так:

Я уже в принципе так и сделал, но спасибо за совет, Alder  Улыбка
Записан
Магнетон Бора
ЖИЗНЬ - БАЯН
Cтудент
*

Карма: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 61



« Ответ #190 : Декабрь 13, 2008, 10:36:06 »

Уважаемы коллеги, возникла следующая трудность: при завершении работы написанной программы выскакиват ошибка Null pointer assignment, должен сказать моя любимая. В принципе я понимаю, что идет запись или удаление чего-то из нулевой области, как эффективно отследить эту ошибку, на одном форуме один чел делал троссировка и в watch добавил (char*)4, но почему именно эту область? В общем посоветуйте что-нибудь как избавиться от этой ошибки. Заранее благодарен.
Записан
ZaQ
Бакалавр
**

Карма: +6/-1
Offline Offline

Пол: Мужской
Сообщений: 128



« Ответ #191 : Декабрь 13, 2008, 02:31:39 »

дя начала платформа какая?
во вторых, конкретно кусок кода, куда ассерт ссылается, в третьих вопрос почетче опиши, гадать на кофейной гуще не охота.
Записан
Магнетон Бора
ЖИЗНЬ - БАЯН
Cтудент
*

Карма: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 61



« Ответ #192 : Декабрь 13, 2008, 02:52:53 »

Платформа BC 3.1, вопрос такой как отследить ошибку Null pointer assignment, кусок кода кинуть не могу могу только весь код, в этом-то и беда
Записан
ZaQ
Бакалавр
**

Карма: +6/-1
Offline Offline

Пол: Мужской
Сообщений: 128



« Ответ #193 : Декабрь 13, 2008, 05:42:43 »

вообщем гляди как используешь указатели, где зануленые можешь использовать, где используешь неинициализированные. вообще в ВС тяжело чет намудрить Улыбка
Записан
Магнетон Бора
ЖИЗНЬ - БАЯН
Cтудент
*

Карма: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 61



« Ответ #194 : Декабрь 13, 2008, 06:26:48 »

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

Я уже разобрался.
В том то и дело, что я спрашивал какой-нибудь эффективный способ нахождения утечки памяти или просто некоректного обращения с последний, обычный способ просмотра при 1200 строчках кода затруднительный как минимум.
И должен сказать, что опыт показывает как раз в ВС 3.1 можно намудрить и очень, очень сильно у меня 10-ки примеров и не только со своего опыта...
Записан
Артем
sprata
Mодератор
Завкаф
*****

Карма: +40/-5
Offline Offline

Пол: Мужской
Сообщений: 1107


« Ответ #195 : Январь 13, 2009, 12:27:21 »

Тема разделена, вопросы по алгоритмам теперь задаем тут
Записан
SPL
Cтудент
*

Карма: +1/-0
Offline 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 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 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 Offline

Пол: Мужской
Сообщений: 1072


Злой и страшный :)


« Ответ #199 : Февраль 09, 2009, 09:44:12 »

В программе все правильно.
Где ж всё правильно, если вот это:

(a+i*n+j)
)))

Впрочем, мы оба ответили на вопрос ))
Записан

Оптимальная концентрация кофе - это когда код уже дает советы, как его написать, но еще не спорит с тобой и не подкалывает в случае неудач...
---
Существует три способа распространения программного обеспечения: воровство, грабёж и обмен краденым. (c) Неизвестный программист
Страниц: 1 ... 8 9 [10] 11 12   Вверх
  Печать  
 
Перейти в:  

Penguins Counter Powered by MySQL Powered by PHP Powered by SMF 1.1.8 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS! Internetmap
Страница сгенерирована за 0.08 секунд. Запросов: 36.