Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 2 [3] 4   Вниз
  Печать  
Автор Тема: где ошибка?  (Прочитано 89740 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Carrie Bradshaw
Гость
« Ответ #60 : 07-02-2006 13:04 » 

все, спасибки  Да-да. уже разобралась.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #61 : 22-02-2006 19:47 » 

+1 Софье за интересную игру в реверси Улыбаюсь
Записан

Carrie Bradshaw
Гость
« Ответ #62 : 17-03-2006 09:02 » 

туплю...  Здесь была моя ладья... никак не могу определить, сколько элементов матрицы расположено правее минимального элемента...
Алексей  Ага  Да-да
« Последнее редактирование: 17-03-2006 09:04 от Carrie Bradshaw » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline 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 » 

неа. через представленную формулу не получится. да и вообще пытаться вывести ее сложно (сама многократно пыталась). так что может лучше как-нить умудриться и через цикл(ы)??
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline 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
Спокойный
Администратор

il
Offline 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
Спокойный
Администратор

il
Offline 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
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #72 : 12-04-2006 11:59 » 

Цитата
Я  поэксперементировал с твоим кодом.
а в чем разница Не понял
Записан

Удачного всем кодинга! -=x[PooH]x=-
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #73 : 12-04-2006 12:01 » 

PooH, Не знаю. Но у меня цикл сам в себе закрылся. На if ни одного шага не пошло. Я конечно тоже был удивлен. Поэтому обнес if  в блок.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Carrie Bradshaw
Гость
« Ответ #74 : 12-04-2006 12:05 » 

благодарю, Главный Специалист Finch. в который раз выручаете  Ага
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #75 : 12-04-2006 12:06 » 

Хотя сейчас все нормально и без блока. Чудеса  Здесь была моя ладья...
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Джон
просто
Администратор

de
Offline 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
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #77 : 12-04-2006 12:10 » 

Джон, У нее еше это есть, для полного счастья
Код:
to=ersatzung (to, cy1, cy2);
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Carrie Bradshaw
Гость
« Ответ #78 : 12-04-2006 12:22 » 

так знач. строки толко скопировать через функцию? или еще что-то?  Быть такого не может
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #79 : 12-04-2006 12:27 » new

Ну в принципе это
Код:
to=mass;
Вполне допустимо. Ты делаеш псевдоним для переменной mass. Если тебе нужно одновременно и оригинал и измененная копия строки, тогда нужно копировать. Если нет, тогда нужно убрать строку выделения памяти. Ну и работать только через переменную mass.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Джон
просто
Администратор

de
Offline 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
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #82 : 12-04-2006 14:19 » 

Цитата
Tебе надо передать указатель на указатель - это первое.
Почему??? Если передать просто указатель, то массив на выходе из функции тоже изменится. Зачем тогда указатель на указатель? Или я что-то упустил?
Записан

ещё один вопрос ...
PooH
Глобальный модератор

ru
Offline 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=-
Джон
просто
Администратор

de
Offline 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."
Джон
просто
Администратор

de
Offline 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
Глобальный модератор

ru
Offline 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
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #88 : 17-04-2006 10:07 » 

Что именно не понятно?
Записан

ещё один вопрос ...
Carrie Bradshaw
Гость
« Ответ #89 : 17-04-2006 10:10 » 

в первом задании, например, практически всё после слова "Вывести".
Записан
Страниц: 1 2 [3] 4   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines