PDA

Visualizza la versione completa : [Visual Studio C]Errore strano nella compilazione


Andrea93
19-05-2010, 21:29
Quando vado a compilare mi da questo errore:

terms does not evaluate to a function taking 2 arguments.

l'errore viene ripetuto in tutte le funzioni del programma.
Queste funzioni servono per verificare l'efficenza degli algoritmi di ordinamento, sono state dichiarate in un file cpp allegato e i prototipi in un file .h incluso all'inizio.
boh...


Il form è questo:


#pragma once
#include "mio.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#include <string.h>


namespace EfficenzaOrdinamenti {

using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;

/// <summary>
/// Summary for Form1
///
/// WARNING: If you change the name of this class, you will need to change the
/// 'Resource File Name' property for the managed resource compiler tool
/// associated with all .resx files this class depends on. Otherwise,
/// the designers will not be able to interact properly with localized
/// resources associated with this form.
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}

protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::Button^ Start;
private: System::Windows::Forms::Label^ label1;

private: System::Windows::Forms::Label^ label2;

protected:

protected:

protected:

protected:


private: System::Windows::Forms::Label^ label3;
private: System::Windows::Forms::Label^ label4;
private: System::Windows::Forms::Label^ label5;
private: System::Windows::Forms::Label^ label6;
private: System::Windows::Forms::TextBox^ simpleSort;
private: System::Windows::Forms::TextBox^ selectionSort;
private: System::Windows::Forms::TextBox^ bubbleSort;
private: System::Windows::Forms::TextBox^ insertionSort;
private: System::Windows::Forms::TextBox^ quickSort;







private: System::Windows::Forms::TextBox^ num;
private: System::Windows::Forms::Label^ label7;
private: System::Windows::Forms::Label^ label8;


private:
/// <summary>
/// Required designer variable.
/// </summary>
System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent(void)
{
this->Start = (gcnew System::Windows::Forms::Button());
this->label1 = (gcnew System::Windows::Forms::Label());
this->label2 = (gcnew System::Windows::Forms::Label());
this->label3 = (gcnew System::Windows::Forms::Label());
this->label4 = (gcnew System::Windows::Forms::Label());
this->label5 = (gcnew System::Windows::Forms::Label());
this->label6 = (gcnew System::Windows::Forms::Label());
this->simpleSort = (gcnew System::Windows::Forms::TextBox());
this->selectionSort = (gcnew System::Windows::Forms::TextBox());
this->bubbleSort = (gcnew System::Windows::Forms::TextBox());
this->insertionSort = (gcnew System::Windows::Forms::TextBox());
this->quickSort = (gcnew System::Windows::Forms::TextBox());
this->num = (gcnew System::Windows::Forms::TextBox());
this->label7 = (gcnew System::Windows::Forms::Label());
this->label8 = (gcnew System::Windows::Forms::Label());
this->SuspendLayout();
//
// Start
//
this->Start->Location = System::Drawing::Point(86, 305);
this->Start->Name = L"Start";
this->Start->Size = System::Drawing::Size(129, 63);
this->Start->TabIndex = 0;
this->Start->Text = L"Start";
this->Start->UseVisualStyleBackColor = true;
this->Start->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
//
// label1
//
this->label1->AutoSize = true;
this->label1->Location = System::Drawing::Point(47, 51);
this->label1->Name = L"label1";
this->label1->Size = System::Drawing::Size(57, 13);
this->label1->TabIndex = 1;
this->label1->Text = L"SimpleSort";
//
// label2
//
this->label2->AutoSize = true;
this->label2->Location = System::Drawing::Point(47, 91);
this->label2->Name = L"label2";
this->label2->Size = System::Drawing::Size(70, 13);
this->label2->TabIndex = 2;
this->label2->Text = L"SelectionSort";
//
// label3
//
this->label3->AutoSize = true;
this->label3->Location = System::Drawing::Point(47, 130);
this->label3->Name = L"label3";
this->label3->Size = System::Drawing::Size(59, 13);
this->label3->TabIndex = 3;
this->label3->Text = L"BubbleSort";
//
// label4
//
this->label4->AutoSize = true;
this->label4->Location = System::Drawing::Point(47, 168);
this->label4->Name = L"label4";
this->label4->Size = System::Drawing::Size(66, 13);
this->label4->TabIndex = 4;
this->label4->Text = L"InsertionSort";
//
// label5
//
this->label5->AutoSize = true;
this->label5->Location = System::Drawing::Point(47, 204);
this->label5->Name = L"label5";
this->label5->Size = System::Drawing::Size(54, 13);
this->label5->TabIndex = 5;
this->label5->Text = L"QuickSort";
//
// label6
//
this->label6->AutoSize = true;
this->label6->Location = System::Drawing::Point(47, 9);
this->label6->Name = L"label6";
this->label6->Size = System::Drawing::Size(85, 13);
this->label6->TabIndex = 6;
this->label6->Text = L"Numero di prove";
//
// simpleSort
//
this->simpleSort->Location = System::Drawing::Point(138, 48);
this->simpleSort->Name = L"simpleSort";
this->simpleSort->Size = System::Drawing::Size(100, 20);
this->simpleSort->TabIndex = 7;
//
// selectionSort
//
this->selectionSort->Location = System::Drawing::Point(137, 88);
this->selectionSort->Name = L"selectionSort";
this->selectionSort->Size = System::Drawing::Size(100, 20);
this->selectionSort->TabIndex = 8;
//
// bubbleSort
//
this->bubbleSort->Location = System::Drawing::Point(137, 127);
this->bubbleSort->Name = L"bubbleSort";
this->bubbleSort->Size = System::Drawing::Size(100, 20);
this->bubbleSort->TabIndex = 9;
//
// insertionSort
//
this->insertionSort->Location = System::Drawing::Point(137, 165);
this->insertionSort->Name = L"insertionSort";
this->insertionSort->Size = System::Drawing::Size(100, 20);
this->insertionSort->TabIndex = 10;
//
// quickSort
//
this->quickSort->Location = System::Drawing::Point(137, 201);
this->quickSort->Name = L"quickSort";
this->quickSort->Size = System::Drawing::Size(99, 20);
this->quickSort->TabIndex = 11;
//
// num
//
this->num->Location = System::Drawing::Point(138, 6);
this->num->Name = L"num";
this->num->Size = System::Drawing::Size(35, 20);
this->num->TabIndex = 12;
this->num->Text = L"1";
//
// label7
//
this->label7->AutoSize = true;
this->label7->Location = System::Drawing::Point(66, 238);
this->label7->Name = L"label7";
this->label7->Size = System::Drawing::Size(172, 13);
this->label7->TabIndex = 13;
this->label7->Text = L"Inserire numero di prove desiderato";
//
// label8
//
this->label8->AutoSize = true;
this->label8->Location = System::Drawing::Point(68, 260);
this->label8->Name = L"label8";
this->label8->Size = System::Drawing::Size(168, 13);
this->label8->TabIndex = 14;
this->label8->Text = L"(predefinito 1) quindi premere Start";
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(290, 401);
this->Controls->Add(this->label8);
this->Controls->Add(this->label7);
this->Controls->Add(this->num);
this->Controls->Add(this->quickSort);
this->Controls->Add(this->insertionSort);
this->Controls->Add(this->bubbleSort);
this->Controls->Add(this->selectionSort);
this->Controls->Add(this->simpleSort);
this->Controls->Add(this->label6);
this->Controls->Add(this->label5);
this->Controls->Add(this->label4);
this->Controls->Add(this->label3);
this->Controls->Add(this->label2);
this->Controls->Add(this->label1);
this->Controls->Add(this->Start);
this->Name = L"Form1";
this->Text = L"Verifica efficenza algoritmi";
this->ResumeLayout(false);
this->PerformLayout();

}
#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

#define MAX 10000

float v[MAX], v2[MAX];
float t0, t1, speed;
int i, n, m;
m = MAX;

time_t tempo;
tempo = time (NULL);
srand ( tempo );

for ( i=0; i<m ; i++ )
v[i]= ((((float)rand())/RAND_MAX)*m);

n = Convert::ToInt32 ( num->Text );

if ( n>1 ){

//calcolo tempo simpleSort
for ( i=0 ; i<n ; i++ ) {
memcpy ( v2, v, m*sizeof(float) );
t0= GetTickCount();
simpleSort ( v2, m );
t1= GetTickCount();
speed += ( t1-t0 );
}
simpleSort->Text = Convert::ToString ( speed/(float)n );


//calcolo tempo selectionSort
for ( i=0 ; i<n ; i++ ) {
memcpy ( v2, v, m*sizeof(float));
t0= GetTickCount();
selectionSort ( v2, m );
t1= GetTickCount();
}
selectionSort->Text = Convert::ToString ( speed/(float)n );
for ( i=0 ; i<n ; i++ ) {
//calcolo tempo bubbleSort

memcpy ( v2, v, m*sizeof(float));
t0= GetTickCount();
bubbleSort ( v2, m );
t1= GetTickCount();
}
bubbleSort->Text = Convert::ToString ( speed/(float)n );

//calcolo tempo insertionSort
for ( i=0 ; i<n ; i++ ) {
memcpy ( v2, v, m*sizeof(float));
t0= GetTickCount();
insertionSort ( v2, m );
t1= GetTickCount();
}
insertionSort->Text = Convert::ToString ( speed/(float)n );

//calcolo tempo quickSort
for ( i=0 ; i<n ; i++ ) {
memcpy ( v2, v, m*sizeof(float));
t0= GetTickCount();
quickSort ( v2, m );
t1= GetTickCount();
}
quickSort->Text = Convert::ToString ( speed/(float)n );

}

}
};
}








Il file cpp eccolo:





#include "stdafx.h"

void swap ( float*a, float*b ) {

float help;
help= *a;
*a= *b;
*b= help;
}

//simpleSort
void simpleSort (float *v, int n ) {

int i, j;

for ( i=0 ; i<n ; i++ )
for ( j=i+1; j < n ; j++)
if ( v[i]>v[j] )
swap ( &v[i],&v[j]);
}


//selectionSort
void selectionSort( float *v, int n ) {
int i, j, p;
float min;

for ( i=0; i<n-1 ; i++ ) {
min = v[i];
p = i;
for ( j=i+1 ; j<n ; j++ )
if (v[j]<min){
min = v[j];
p = j;
}
v[p] = v[i];
v[i] = min;
}
}

//bubbleSort
void bubbleSort( float *v, int n ) {
int i, j, temp;
int test;
for ( i=n-1 ; i>0 ; i-- ) {
test = 0;
for ( j=0 ; j<i ; j++ )
if ( v[j]>v[j+1] ) {
swap ( &v[j], &v[j+1] );
test = 1;
}
if ( test==0 ) break;
}

}

//insertionSort
void insertionSort (float*v, int n) {

int i, j;
float app;

for ( i=1 ; i<n ; i++ ) {
app = v[i];
j = i-1;
while ( (j>=0) && (v[j]>app) ) {
v[j+1] = v[j];
j--;
}
v[j+1] = app;
}

}


//quickSort
void sort( float *v, int beg, int end ) {
if ( end>beg+1 ) {
int piv = v[beg], l=beg+1, r=end;
while ( l<r ) {
if ( v[l]<=piv )
l++;
else
swap( &v[l], &v[--r] );
}
swap( &v[--l], &v[beg] );
sort( v, beg, l );
sort( v, r, end );
}
}
void quickSort( float *v, int n ) {
sort ( v, 0, n-1 );
}






E questo è il .h







void swap ( float*a, float*b );
void simpleSort ( float *v, int n );
void selectionSort ( float *v, int n );
void bubbleSort ( float *v, int n );
void insertionSort ( float *v, int n );
void sort ( float *v, int beg, int end );
void quickSort ( float *v, int n );




HELPPPPPP

oregon
19-05-2010, 23:36
Hai commesso due errori ...

Hai usato un miscuglio di programmazione OO e con le vecchie "funzioni".

Ad esempio, la

simpleSort

deve essere un membro private della classe Form1 ... e così per le altre funzioni.

Inoltre hai chiamato allo stesso modo i textbox, ad esempio

TextBox^ simpleSort

e le stesse funzioni (meglio, metodi). Cambia il nome dei textbox o dei metodi.

Andrea93
20-05-2010, 00:48
cambiando i nomi compila... però non funge... cmq dovrebbe essere scritto in C

oregon
20-05-2010, 01:47
Non è in C, ma in C++.NET (managed).

Loading