Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2009, 02:57   #1
igoreck74
 
Регистрация: 02.06.2009
Сообщений: 6
По умолчанию Помогите сделать пожелуйста

Код:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <conio.h>
#include <iostream.h>
#include <fstream.h>
#include <math.h>


void insert (int *x, int n) //сортировка вставками

{
  int i, j, t;
  for (i=1; i<n; i++)
  {
    t=x[i];
    for (j=i-1; j>=0 && t<x[j]; j--)
    x [ j +1]= x [ j ]; //сдвиг на одну позицию
    x[j+1]=t;
  }
}

main()

{

  int a[10]; int i;
  randomize (); //случайный выбор первого числа
  for ( i =0; i <10; i ++)
  a [ i ]= random (200); //случайное число 0-199
  cout<<"До сортировки :\n";
  for (i=1; i<10; i++)
  cout << a[i]; //printf (" %3 d ", a [ i ]);
  insert ( a , 10); //вызов подпрограммы сортировки
  cout<<"\n После сортировки :\n";
  for (i=1; i<10; i++)
  //printf (" %3 d ", a [ i ]);
   cout << a[i];

 return 0;
}
getch();

она когда компилируеться вылетает

Последний раз редактировалось MaTBeu; 02.06.2009 в 08:49.
igoreck74 вне форума Ответить с цитированием
Старый 02.06.2009, 08:15   #2
BaronTreep
Форумчанин
 
Регистрация: 29.05.2009
Сообщений: 320
По умолчанию

Покрайней мере 1-ая ошибка:

cout << a[i];
return 0;
}
getch();

нужно:

cout << a[i];
getch();
return 0;
}
BaronTreep вне форума Ответить с цитированием
Старый 02.06.2009, 08:52   #3
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Код:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <conio.h>
#include <iostream.h>
#include <fstream.h>
#include <math.h>


void insert (int *x, int n) //сортировка вставками
{
  int i, j, t;
  for (i=1; i<n; i++)
  {
    t=x[i];
    for (j=i-1; j>=0 && t<x[j]; j--)
    x[j+1]= x [j]; //сдвиг на одну позицию
    x[j+1]=t;
  }
}

int main()
{
  int a[10]; 
  int i;
  randomize(); //случайный выбор первого числа
  for ( i =0; i <10; i++)
  a [i]= random (200); //случайное число 0-199
  cout<<"До сортировки :\n";
  for (i=1; i<10; i++)
  cout << a[i]; //printf (" %3 d ", a [ i ]);
  insert ( a , 10); //вызов подпрограммы сортировки
  cout<<"\n После сортировки :\n";
  for (i=1; i<10; i++)
  //printf (" %3 d ", a [ i ]);
   cout << a[i];
  getch();
  return 0;
}
Ошибки исправил и пометил.

ПыСы: пробелы между опарандом и операцией иногда не уместны.
MaTBeu вне форума Ответить с цитированием
Старый 02.06.2009, 11:48   #4
igoreck74
 
Регистрация: 02.06.2009
Сообщений: 6
По умолчанию

Спасибо большое, еще не могли бы вы добавить в эту прогу счетчик перестановок, а то у меня не как не выходит((
igoreck74 вне форума Ответить с цитированием
Старый 02.06.2009, 12:04   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вроде так
Код:
int insert (int *x, int n) //сортировка вставками
{
  int i, j, t;
  int cnt = 0;  // количество перестановок
  for (i=1; i<n; i++)
  {
    t=x[i];
    for (j=i-1; j>=0 && t<x[j]; j--)
     {
      x[j+1]= x [j]; //сдвиг на одну позицию
      ++cnt;
     }
    x[j+1]=t;
    ++cnt;
  }
return cnt;  
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 04.06.2009, 23:22   #6
igoreck74
 
Регистрация: 02.06.2009
Сообщений: 6
По умолчанию

Спасибо огромное, вы очень помогли
igoreck74 вне форума Ответить с цитированием
Старый 04.06.2009, 23:52   #7
igoreck74
 
Регистрация: 02.06.2009
Сообщений: 6
По умолчанию

Код:
#include <iostream.h>
#include <math.h>
#include <conio.h>
#include <fstream.h>
#include <stdlib.h>
                      /*____метод пузырька____*/

int Bubble(double*x, int n)
{
  int Buble=0;
   int m;
    double tmp;
   bool flag;
     m=n;
     flag=true;
     while(flag == true)
 {
     flag=false;
     m--;
  for (int i=0;i<m;i++)
  {

  if (x[i]>x[i+1])
   {
       Buble++;
       tmp=x[i+1];
      x[i]=tmp;
     flag=true;
   }
  }
 }
return(Buble);
}

                      /*____метод вставок____*/

int onSort(double*a, long size)
{
  int x;
   long i, j;
   int kolvoOn=0;
   for ( i=0; i < size; i++) {

    x = a[i];

    for ( j=i-1; j>=0 && a[j] > x; j--)
     {
     a[j+1] = a[j];
     ++kolvoOn;
     }
     a[j+1] = x;
     ++kolvoOn;

}

return (kolvoOn);
}

            /*____сравнение 2х способов____*/

void main()
{
ofstream out;
  out.open("text.txt");
  {
   int N=0;
   int Buble; 
   int kolvoOn;//кол-во сравнений методом вставок
  double*x;
    for (int w=0; w<20; w++) { //цикл для увеличения колличества сравниваемых эл-тов
    N+=50;
     randomize();
    x= new double[N]; //массив x[i] из случайных чисел
   for (int i=0; i<N; i++)
{
   x[i]=double(random(100)/100.);
}
 double*x1; //копия массива x[i]
 x1 = new double[N];
 for (int i=0; i<N;i++) x1[i]=x[i];
 Buble = Bubble(x,N);
 kolvoOn = onSort(x1,N);
  out << "\n\n Pri N = "<<N;
  out << "\n Kol-vo sravnenii metodom puzirya = " <<Buble;
  out << "\n Kol-vo sravnenii metodom vstavok = " <<kolvoOn;

  cout << "\n\n Pri N = "<<N;
  cout << "\n Kol-vo sravnenii metodom puzirya = " <<Buble;
  cout << "\n Kol-vo sravnenii metodom vstavok = " <<kolvoOn;
  }
 out.close();
}
getch();
}
Посмотрите пожалуйста код, он почему то не считает количество перестановок в методе простых вставок
igoreck74 вне форума Ответить с цитированием
Старый 05.06.2009, 00:43   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Почему не считает? Вот кусок из результата:
Код:
Pri N = 50
Kol-vo sravnenii metodom puzirya = 152
Kol-vo sravnenii metodom vstavok = 615

Pri N = 100
Kol-vo sravnenii metodom puzirya = 292
Kol-vo sravnenii metodom vstavok = 2462

Pri N = 150
Kol-vo sravnenii metodom puzirya = 452
Kol-vo sravnenii metodom vstavok = 5607
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 05.06.2009, 01:50   #9
igoreck74
 
Регистрация: 02.06.2009
Сообщений: 6
По умолчанию

а у меня он почему то все время компилирует сравнение методм вставок равное N
Pri N = 50
Kol-vo sravnenii metodom puzirya = 145
Kol-vo sravnenii metodom vstavok = 50

Pri N = 100
Kol-vo sravnenii metodom puzirya = 320
Kol-vo sravnenii metodom vstavok = 100

Pri N = 150
Kol-vo sravnenii metodom puzirya = 446
Kol-vo sravnenii metodom vstavok = 150
igoreck74 вне форума Ответить с цитированием
Старый 05.06.2009, 01:58   #10
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Прикрепляю исходник (немного изменил, т.к. у меня MinGW) и экзешник.
У вас, как я понял, BC 3.1? Вечно с ним какие-то проблемы.
Вложения
Тип файла: rar test3.rar (114.3 Кб, 9 просмотров)
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите сделать LotoSs Помощь студентам 0 12.05.2009 12:11
Помогите сделать... slim5 Помощь студентам 4 15.06.2008 21:47