Carrie Bradshaw
Гость
|
|
« Ответ #60 : 07-02-2006 13:04 » |
|
все, спасибки . уже разобралась.
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #61 : 22-02-2006 19:47 » |
|
+1 Софье за интересную игру в реверси
|
|
|
Записан
|
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #63 : 17-03-2006 10:08 » |
|
x,y - min элемент (координаты - не zero based) Xlen - длина стороны X
N= (y-1)*Xlen + (x-1)
|
|
|
Записан
|
|
|
|
Carrie Bradshaw
Гость
|
|
« Ответ #64 : 19-03-2006 18:14 » |
|
неа. через представленную формулу не получится. да и вообще пытаться вывести ее сложно (сама многократно пыталась). так что может лучше как-нить умудриться и через цикл(ы)??
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #65 : 19-03-2006 18:56 » |
|
то есть, не понял, как не получится? если взять не zb индексы (то есть которые 1,2,3 ..., Xlen и 1,2,3 ..., Ylen) , то: 1) (y-1) == количество полных строк выше найденного (x,y) элемента 2) (y-1)*Xlen == кол-во элементов в этих строках 3) (x-1) == количество элементов в строке с найденным, левее от 4) N= (y-1)*Xlen + (x-1) == всё просуммировали
|
|
|
Записан
|
|
|
|
Carrie Bradshaw
Гость
|
|
« Ответ #66 : 28-03-2006 23:32 » |
|
ACHTUNG! ACHTUNG! сейчас все дело в быстродействии. вот помните последнюю лабу, которую я спрашивала - разобралась. но теперь другая лаба, на основе этой. и подсчеты опять kaputt. я пыталась. вот (задание ужасно большое. поэтому дословно переписывать не буду, но в двух словах - создаем динамический массив при помощи malloc и calloc, удаляем через free. потом всякие разные адреса выводим. ну и конечно же, подсчитывам количество элеметов, стоящих ДО минимального. *опять лишь догадка, но просто через рандомайз в ячейках много нулей появляется. а он и есть минимальный. может все в этом дело - нулей слишком много?):#include <stdio.h> #include <stdlib.h> #include <alloc.h> #include <conio.h> #include <limits.h>
void main () { clrscr (); int i, j, n, t=0, min, a, b; int **line; int *m; printf ("\nEnter the number of lines n= "); scanf ("%d", &n); line = (int**)calloc (n,sizeof(int*)); m =(int*)malloc (sizeof(int)*n); for (i=0; i<n; i++) { printf ("\nEnter its length m[%d]= ", i); scanf ("%d", &m[i]); line[i] = (int*)calloc (m[i],sizeof(int)); for (j=0; j<m[i]; j++) { line[i][j]=random(10); printf (" %d", line[i][j]); } } printf ("\n");
for (i=0; i<n; i++) { printf ("\n"); for (j=0; j<m[i]; j++) printf (" %d", line[i][j]); }
min=INT_MAX; for (i=0; i<n; i++) for (j=0; j<m[i]; j++) { if (line[i][j]<min) min=line[i][j]; a=i, b=j; } t=a*m[i]+b; printf ("\n\n %d Numbers are before the minimal element\n", t);
printf ("\n Massiv's Address = %x", *line); printf ("\n 1st element's address ([0][0]) = %x", &line[0][0]); printf ("\n"); for (i=0; i<3; i++) printf ("\n %d line's address = %x", (i+1), *(line+i)); free(m); free(line); } кто найдет ошибку, знай: ты точно попадешь в рай. за хорошие дела. БЛАГОДАРЮ Ну и vielen Dank
|
|
« Последнее редактирование: 04-12-2007 19:24 от Алексей1153++ »
|
Записан
|
|
|
|
Carrie Bradshaw
Гость
|
|
« Ответ #67 : 29-03-2006 04:14 » |
|
всё-всё. разобралась.
|
|
|
Записан
|
|
|
|
Carrie Bradshaw
Гость
|
|
« Ответ #68 : 12-04-2006 10:48 » |
|
вопрос. вот моя прога, заменяющая в веденной строке все буковки 'a' на '1'. почему в конце строки (после трансформации) добавляются две 1 никак ума не приложу.#include <iostream.h> #include <process.h> #include <conio.h> #include <stdio.h>
char *ersatzung (char *t, char sy1, char sy2) { for (int i=0; t[i]!='\0'; i++) if (t[i]==sy1) t[i]=sy2;
return t;
}
void main () { clrscr (); char cy1, cy2; char mass[10];
cout<<"\nEnter the Line: "; gets (mass); char *to; to=new char[10]; to=mass;//to[10]=mass[10]; cy1='a'; cy2='1';
to=ersatzung (to, cy1, cy2);
cout<<"\n"; puts (to); delete [] to; }
|
|
« Последнее редактирование: 04-12-2007 19:24 от Алексей1153++ »
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #69 : 12-04-2006 11:26 » |
|
Ну первое, у тебя программа должна выдать ошибку в строке delete [] to;
Второе. Утечка памяти. Из-за строк to=new char[10]; to=mass;
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
Carrie Bradshaw
Гость
|
|
« Ответ #70 : 12-04-2006 11:39 » |
|
и что предлагаете? P.S. на дилите компилятор ошибки мне не выдал...
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #71 : 12-04-2006 11:45 » |
|
Я поэксперементировал с твоим кодом. char *ersatzung (char *t, char sy1, char sy2) { for (int i=0; t[i]!='\0'; i++) { if (t[i]==sy1) t[i]=sy2; }
return t;
}
и что предлагаете? P.S. на дилите компилятор ошибки мне не выдал..
Это ошибка не компиляции, а исполнения. Должно выскочить предупреждение, что ты пытаешся освободить участок памяти статической области.
|
|
« Последнее редактирование: 04-12-2007 19:26 от Алексей1153++ »
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
PooH
Глобальный модератор
Offline
Пол:
... и можно без хлеба!
|
|
« Ответ #72 : 12-04-2006 11:59 » |
|
Я поэксперементировал с твоим кодом. а в чем разница
|
|
|
Записан
|
Удачного всем кодинга! -=x[PooH]x=-
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #73 : 12-04-2006 12:01 » |
|
PooH, Не знаю. Но у меня цикл сам в себе закрылся. На if ни одного шага не пошло. Я конечно тоже был удивлен. Поэтому обнес if в блок.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
Carrie Bradshaw
Гость
|
|
« Ответ #74 : 12-04-2006 12:05 » |
|
благодарю, Главный Специалист Finch. в который раз выручаете
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #75 : 12-04-2006 12:06 » |
|
Хотя сейчас все нормально и без блока. Чудеса
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #76 : 12-04-2006 12:06 » |
|
Ааааа вот она ошибочка - ersatzung! Надо ersaetzung А если серьёзно - у меня борланда нет. Я на VC++ проверил твой код. из wertafra он сделал wert1fr1 - без всяких ошибок. Я только конечно ошибку исправил - так делать нельзя (или борланд всё позволяет?) to=new char[10]; to=mass; - не пойдёт!!!сначала ты получаешь указатель на объект, а потом теряешь его. отсюда утечка. Надо использовать ф-ю копирования А потом ещё хуже ты вызваешь delete для char mass[10]; вообще то я не думал что борланд такие вещи позволяет
|
|
« Последнее редактирование: 12-04-2006 12:10 от Джон »
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #77 : 12-04-2006 12:10 » |
|
Джон, У нее еше это есть, для полного счастья to=ersatzung (to, cy1, cy2);
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
Carrie Bradshaw
Гость
|
|
« Ответ #78 : 12-04-2006 12:22 » |
|
так знач. строки толко скопировать через функцию? или еще что-то?
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #79 : 12-04-2006 12:27 » |
|
Ну в принципе это to=mass;
Вполне допустимо. Ты делаеш псевдоним для переменной mass. Если тебе нужно одновременно и оригинал и измененная копия строки, тогда нужно копировать. Если нет, тогда нужно убрать строку выделения памяти. Ну и работать только через переменную mass.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #80 : 12-04-2006 12:32 » |
|
Тебе надо передать указатель на указатель - это первое. Второе скопировать строки, ну и я ещё бы обнулил буфер.
|
|
« Последнее редактирование: 12-04-2006 21:49 от Джон »
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Carrie Bradshaw
Гость
|
|
« Ответ #81 : 12-04-2006 12:41 » |
|
оч.признательна, мужчины. З.Ы. знаю-знаю. но я ни настолько прям уж принципиальна. главное - остальное прально написала
|
|
|
Записан
|
|
|
|
nikedeforest
|
|
« Ответ #82 : 12-04-2006 14:19 » |
|
Tебе надо передать указатель на указатель - это первое.
Почему??? Если передать просто указатель, то массив на выходе из функции тоже изменится. Зачем тогда указатель на указатель? Или я что-то упустил?
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
PooH
Глобальный модератор
Offline
Пол:
... и можно без хлеба!
|
|
« Ответ #83 : 12-04-2006 14:31 » |
|
тож борланда нет, но он может/должен и такое съесть: #include <iostream.h> #include <process.h> #include <conio.h> #include <stdio.h>
void ersatzung (char *t, char sy1, char sy2) { for (int i=0; t[i]!='\0'; i++) if (t[i]==sy1) t[i]=sy2; }
void main () { clrscr (); char cy1, cy2; char mass[10];
cout<<"\nEnter the Line: "; gets (mass); int nLen = strlen(mass); mass[nLen]:=0; ersatzung (mass, 'a', '1'); cout<<"\n"; puts (mass); }
|
|
« Последнее редактирование: 04-12-2007 19:29 от Алексей1153++ »
|
Записан
|
Удачного всем кодинга! -=x[PooH]x=-
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #84 : 12-04-2006 14:42 » |
|
PooH, я понимаю Борланд, но думаю мы всё-таки при С++ останемся - := эт скорее Паскаль. Или? То, что ты предлагаешь тоже можно (ошибки я не проверял, но идея ясно), только Carrie Bradshaw хочет сохранить оригинальную строку поэтому делает копию - законное желание.
|
|
« Последнее редактирование: 12-04-2006 14:44 от Джон »
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #85 : 12-04-2006 14:52 » |
|
nikedeforest, ты прав на все 100% - мы же сам указатель менять не хотим - значит достаточно одного указателя. Сорри. int ersetzung (char *t, const char sy1, const char sy2) { int nCnt = 0; for (int i=0; t[i]!='\0'; i++) { if(sy1==t[i]) { t[i]=sy2; nCnt++; } } return nCnt; }
|
|
« Последнее редактирование: 04-12-2007 19:30 от Алексей1153++ »
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
PooH
Глобальный модератор
Offline
Пол:
... и можно без хлеба!
|
|
« Ответ #86 : 13-04-2006 10:24 » |
|
:= эт скорее Паскаль. Или? PL\SQL... хочет сохранить оригинальную строку поэтому делает копию - законное желание я настолько привык юзать процедуры, что увидев to=mass даже не воспринял как копирование, скорее как привидение типов... просто я наталкивался на компиляторы (даже под линухом), которые указатели на массивы могли запросто рассматривать как char *
|
|
|
Записан
|
Удачного всем кодинга! -=x[PooH]x=-
|
|
|
Carrie Bradshaw
Гость
|
|
« Ответ #87 : 17-04-2006 10:03 » |
|
всем спасибо за помощь в последней проге. благодарю. но вот проблема новая: столько лаб, а ни по одной лекций не читали. голова пухнет. помогите, кто чем может :
Ввести массив из 10 чисел. Упорядочить массив по возрастанию. Вывести данные в окно, расположенное в нижней части экрана. Каждое значение упорядоченного массива появляется через 2 секунды, при этом звучит звуковой сигнал, который при появлении каждого нового значения становиться все выше.
Организовать меню и движение по нему с помощью клавиши ВНИЗ (после последней строчки меню вновь идёт переход на первую). Вход в программу - по паролю. Выход из меню - нажатием клавиши ENTER.
З.Ы. и вопрос вообще не втему: мне необходиимо распечатать документ .pdf, но он защищен. поэтому данная операция невозможна. эту проблему можно каким-нибудь образом решить?
|
|
« Последнее редактирование: 17-04-2006 10:08 от Carrie Bradshaw »
|
Записан
|
|
|
|
nikedeforest
|
|
« Ответ #88 : 17-04-2006 10:07 » |
|
Что именно не понятно?
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
Carrie Bradshaw
Гость
|
|
« Ответ #89 : 17-04-2006 10:10 » |
|
в первом задании, например, практически всё после слова "Вывести".
|
|
|
Записан
|
|
|
|
|