Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 26.03.2015, 07:21   #1
RendomID
 
Регистрация: 19.06.2014
Сообщений: 3
Репутация: 10
По умолчанию Функция не принимает 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 в 07:28. Причина: Недописал.
RendomID вне форума   Ответить с цитированием
Старый 26.03.2015, 09:31   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 12,741
Репутация: 2126
По умолчанию

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

Цитата:
Кстати, когда пишу просто " sort2 (), выдает ошибку, связанную с недостаточным кол-вом аргументов, обьясните пожалуйста как исправить)
Код:

void sort2 (int *x, int n)

И что ваш смущает? Вы НЕ ВИДИТЕ два параметра у функции?
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 26.03.2015, 09:59   #3
min@y™
Цифровой кот
Профессионал
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Адрес: 1600, пенсильвания-авеню, п.г.т. верхний Вашингтонск, 8126 км от МКАД, от поста ГАИ - налево.
Сообщений: 7,636
Репутация: 2398

icq: 100500
skype: kick-ass
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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


04:27.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru