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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2015, 06:21   #1
RendomID
 
Регистрация: 19.06.2014
Сообщений: 3
По умолчанию Функция не принимает 0 аргументов

Доброго времени суток, форумчане).
Существует данная программа:
Код HTML:
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <string.h>
#include <time.h>
#include <windows.h>

clock_t start,end;
long comp,repl;
unsigned int a[4000],t[4000];
int shell[4]={8,4,2,1};
int n;
//подпрограмма перестановки элементов массива
   void swap(int i2, int i1)
   {
      int t;
       {
  t=a[i1],a[i1]=a[i2],a[i2]=t;
  //Sleep();
 }
   }

// Сортировка пузырьков
void sort1()
{
int l;int r;int b;
	int i,j;
    for(j=0;j<n-1;j++)
	for(i=n-1;i>j;i--)
	  {comp++;
	   if(a[i-1]>a[i])
	   {
	    repl++;
		repl++;
		repl++;
	    swap(i,i-1);
	   }
	   }
}
//подпрограмма перестановки
void sort(int n)
{
	for(int i=0;i<n-1;i++)
	{
		int k=i;
		for(int j=i+1;j<n;j++,comp++)
		if(t[k]>t[j]) k=j;
		if (k!=i)
		{
			int r=t[k];
			t[k]=t[i];
			t[i]=r;
			repl++;
			repl++;
			repl++;
			//Sleep();
		}
	}
}
//Методом выбора
void sort2 (int *x, int n)
{
	int i, j, k, exchange;
	int temp;
	for (i=0; i<n-1; i++)
	{	exchange=0; 	//нет перестановок
		k=i; 				//номер наименьшего
		temp=x[i]; 		//значение наименьшего
		for (j=i+1;j<n;j++)
			if (x[j] < temp)
			{
	     			k=j; temp=x[j];//номер и значение наименьшего среди 
     				exchange=1; 	//перестановка нужна
     			}

     		if (exchange)
     		{
     			x[k]=x[i]; x[i]=temp;
     		}
     	}
}



void main (void)
{
    srand(time(0));
    n=1000;
	FILE *in,*out1,*out2;
	//if ((in=fopen("in.txt","r"))==NULL) return;
	if ((out1=fopen("out1.txt","w"))==NULL) return;
	if ((out2=fopen("out2.txt","w"))==NULL) return;

	int i=0,r=0;
	/*while(1)
	{
			if (feof(in)) break;
			fscanf(in,"%d",&a[n]);
			if(a[n]>i) i=a [n];
			n++;
	}
	n--;
	while(i) r++,i=i>>1; */
		/*start=clock();
		sort1();
		end=clock();*/
for(i=0; i<n; i++)
a[i]=rand()%1000 +1;
LARGE_INTEGER _start; 
LARGE_INTEGER _freg; 
LARGE_INTEGER _end;
QueryPerformanceFrequency(&_end);
QueryPerformanceCounter(&_start);
sort1 ();
QueryPerformanceCounter(&_freg);

	for(i=0;i<n;i++)
	fprintf(out1,"%d\n",a[i]);
	fprintf(out1,"Сортировка пузырьков\n");
	fprintf(out1,"Compares: %ld\nSwitches: %ld\n",comp,repl);
	fprintf(out1,"Time: %f",(double)(_freg.QuadPart - _start.QuadPart)/_end.QuadPart);//(end-start)/CLK_TCK);
	fclose(out1);

	n=1000,comp=0,repl=0;
for(i=0; i<n; i++)
a[i]=rand()%1000 +1;
	/*fseek(in,0,0);
	while(1)
	{
		if (feof(in)) break;
		fscanf(in,"%d",&a[n]);
		n++;
	}
	n--;
	fclose(in);
*/
	/*start=clock();
	sort2();
	end=clock(); */
QueryPerformanceFrequency(&_end);
QueryPerformanceCounter(&_start);
sort2 (a, n);
QueryPerformanceCounter(&_freg);
	for(i=0;i<n;i++)
	fprintf(out2,"%d\n",a[i]);
	fprintf(out2,"Сортировка Шелла\n");
	fprintf(out2,"Compares: %ld\nSwitches: %ld\n",comp,repl);
	fprintf(out2,"Time: %.9f",(double)(_freg.QuadPart - _start.QuadPart)/_end.QuadPart);//(end-start)/CLK_TCK);
	fclose(out2);
}
Данная программа используя 2 метода сортировки, записывает время, у каждой, в файл. Потом их можно посмотреть.
Суть в том, что программа выдает ошибку:
Цитата:
error C2664: sort2: невозможно преобразовать параметр 1 из "unsigned int [4000]" в "int *"
Подскажите как исправить) спасибо за внимание.
Кстати, когда пишу просто " sort2 (), выдает ошибку, связанную с недостаточным кол-вом аргументов, обьясните пожалуйста как исправить)

Последний раз редактировалось RendomID; 26.03.2015 в 06:28. Причина: Недописал.
RendomID вне форума Ответить с цитированием
Старый 26.03.2015, 08:31   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Подскажите как исправить) спасибо за внимание
Иметь массив int
Иметь функцию, которая принимает unsigned int [], unsigned int *
Привести тип

Цитата:
Кстати, когда пишу просто " sort2 (), выдает ошибку, связанную с недостаточным кол-вом аргументов, обьясните пожалуйста как исправить)
Код:
void sort2 (int *x, int n)
И что ваш смущает? Вы НЕ ВИДИТЕ два параметра у функции?
p51x вне форума Ответить с цитированием
Старый 26.03.2015, 08:59   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

фьючерс: если говоришь про ошибку, то сообщай, в каком месте она вылезает.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
mod не принимает апрол Общие вопросы Delphi 7 28.05.2013 18:39
Не принимает данные(soket) WebbMan C/C++ Сетевое программирование 0 02.02.2012 19:35
Клиент файл принимает но не сохраняет D_E_N Работа с сетью в Delphi 11 06.08.2009 18:30
Инди не принимает куки schnaps Работа с сетью в Delphi 2 14.07.2009 16:18
Дельфи не принимает лицензию... Dj_smart Свободное общение 5 09.05.2008 11:16