Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Funktion MinElem funktioniert nicht

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
09.10.2005, 18:05 Uhr
~Hennse
Gast


Mit dieser Funktion habe ich noch Probleme. Und zwar habe ich hier
diesmal zwei Arrays die ich dieser Funktion übergebe.
Der Min Wert vom Vector1 wird immer ausgegeben. Der min Wert von
Vector2 ist bei mir immer 0. Woran liegt das?


C++:
void MinElem(int* ivector1,int* ivector2) //Funktion zum feststellen der kleinsten Zahl
{
imerker_vector1= ivector1[0];
imerker_vector2= ivector2[0];
for(int i=0;i<iwerte;i++)
{
  if (imerker_vector1>ivector1[i])
   {
    imerker_vector1=ivector1[i];
   }
  if (imerker_vector2>ivector2[i])
   {
    imerker_vector2=ivector2[i];
   }
}
printf("min.Element Vector1:%2d min.Element Vector2:%2d\n",imerker_vector1,imerker_vector2);
}

*********************
Komplette Quellcode
*********************
int i=0;
int izahl=0;
int iwerte=0;
int ivector1[20];
int ivector2[20];
int imerker_vector1,imerker_vector2;

void ReadVec(int izahl,int ivector_nr) //Funktion zum einlesen der Zahlen
{
if(ivector_nr == 1)
{
  ivector1[i] = izahl;
  i = i + 1;
}
if(ivector_nr == 2)
{
  ivector2[i] = izahl;
  i = i + 1;
}
}

void WriteVec(void) //Funktion zum Ausgeben der eingegebenen Zahlen
{
for(int y=0; y<=iwerte-1;y++)
{
  if ((y % 5) == 0) //Modulo 5; nach jedem 5.Element erfolgt hier ein Zeilenvorschub
  {
   printf("\n");
  }
  printf("Element%2d Vector1:%2d Element%2d Vector2:%2d\n",y+1,ivector1[y],y+1,ivector2[y+iwerte]); //Ausgabe der Elemente
}
}

void MinElem(int* ivector1,int* ivector2) //Funktion zum feststellen der kleinsten Zahl
{
imerker_vector1= ivector1[0];
imerker_vector2= ivector2[0];
for(int i=0;i<iwerte;i++)
{
  if (imerker_vector1>ivector1[i])
     {
      imerker_vector1=ivector1[i];
     }
  if (imerker_vector2>ivector2[i])
     {
      imerker_vector2=ivector2[i];
     }
}
printf("min.Element Vector1:%2d min.Element Vector2:%2d\n",imerker_vector1,imerker_vector2);
}
/*
void MaxElem(int* ivector1,int* ivector2) //Funktion zum feststellen der größten Zahl
{
imerker_vector1= ivector1[0];
imerker_vector2= ivector2[0];
for(int i=0;i<iwerte;i++)
{
  if (imerker_vector1<ivector1[i])
     {
      imerker_vector1=ivector1[i];
     }
  if (imerker_vector2<ivector2[i])
     {
      imerker_vector2=ivector2[i];
     }
}
printf("max.Element Vector1:%2d max.Element Vector2:%2d\n",imerker_vector1,imerker_vector2);
}
*/

void SumVector(void) //Addition von zwei Vectoren
{
int fv1[5]={3,4,5,6,7};
int fv2[5]={6,3,5,9,7};
int* SumVec = new int[5]; //dynamische Speicherreservierung

for(int i=0; i<5; i++)
{
  SumVec[i]=fv1[i]+fv2[i];
  printf("Summenvector:%2d\n",SumVec[i]); //Ausgabe des Summenvectors
}
delete [] SumVec; //Speicher wird hier wieder freigegeben
}


void main(void)
{
printf("Anzahl der Werte in einem Vector:");
scanf("%2d",&iwerte);        //größe des Vector wird hier festgelegt

printf("Vector1:\n");
for(int x=1; x<=iwerte;x++)
{
  scanf("%2d",&izahl);        //einlesen der Zahlen in einen Vector
  ReadVec(izahl,1);
}

printf("Vector2:\n");
for(int x=1; x<=iwerte;x++)
{
  scanf("%2d",&izahl);        //einlesen der Zahlen in einen Vector
  ReadVec(izahl,2);
}
WriteVec();
MinElem(ivector1,ivector2);
//MaxElem(ivector1,ivector2);
}





Bearbeitung von Windalf:

Codetags gefixt...


Dieser Post wurde am 09.10.2005 um 19:08 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.10.2005, 18:29 Uhr
~Hennse
Gast


Sorry ich habe vergessen meinen Quellcode wie vorgeschrieben zu markieren.
Ich habe das macht jetzt nichts aus.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.10.2005, 19:27 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


um den minwert zu bestimmen würde ich dir sowas empfehlen...

ungetestet

C++:
int MinElem(int *a,size_t n){
  int temp;
   for(temp =*a++;--n;++a)
    if(*a<temp)temp =*a;
return temp
}


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 09.10.2005 um 19:27 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.10.2005, 19:47 Uhr
~Hennse
Gast


Danke für die Hilfe, aber dienen Code verstehe ich überhaupt nicht.
for(temp =*a++;--n;++a) //verstehe ich nicht

Viel zu kompliziert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
09.10.2005, 19:50 Uhr
~Hennse
Gast


for(temp =*a++;--n;++a)

So was hab ich noch nett gesehen.
Ich verwende die For Schleife immer so:

for(int x=0; x<blabla; x++)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
09.10.2005, 19:57 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ok dann probiers mal so...

C++:
int MinElem(int *a,size_t n){
  int i,temp=a[0];
  for(i=1;i<n;++i)
    if(a[i]<temp)temp =a[i];
return temp;
}


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 09.10.2005 um 19:58 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: