A-HAMedlem sedan maj 20016 inlägg Har försökt att få ihop tre deluppgifter till ett och samma projekt, men lyckas inget vidare. Jag ska alltså skriva en funktion som anropas från main- funktionen. Så här ser deluppgifterna ut.
#include <iostream.h>
//Deluppgift 1
char stora( char ch1 )
{
const int skillnad = int('a') - int('A'); //Deklarera en konstant!
char ch2;
if ( ( 'a' <= ch1 && ch1 <= 'z' ) )
ch2 = char( int(ch1) - skillnad );
else
ch2 = ch1;
return ch2;
}
int main ()
{
char t;
cout << "Vi testar en funktion. Ge ett tecken: ";
cin >> t;
cout << "tecknet " << t << " blir " << stora( t ) << endl;
return 0;
}
//Deluppgift 2
#include <iostream.h>
int dubbla(int a);
double dubbla(double a);
int main()
{
int a=5;
double b=5.3;
cout << "Före anrop av dubbla: " << a << " " << b << endl;
a=dubbla(a);
b=dubbla(b);
cout << "Efter anrop av dubbla: " << a << " " << b << endl << endl;
return 0;
}
int dubbla(int original)
{
return original+original;
}
double dubbla(double original)
{
return original+original;
}
//Deluppgift 3
#include <iostream.h>
#include<stdlib.h>
#include<time.h>
int max(int *arr, int tal);
void main()
{
int tal=10;
int talen \[10\]; //Deklarerar en array med namnet "talen"
int svar;
srand((unsigned) time(NULL)); //Initierar slumptalsgeneratorn
for (int i=0; i\<10; i++)
talen\=rand()% 10; //Fyller arrayen med slumptal
for (i=0; i\<10; i++)
cout\<\<talen\<\<"";
cout\<\<endl;
svar = max(talen, sizeof(talen) / sizeof(talen\[0\]));
cout\<\<"Det största talet är:"\<\<svar\<\<endl;
}
int max(int \*arr, int tal)
{
int m=0;
for (int i=0; i\<tal-1; i++)
{
if (arr \> m)
m = arr;
}
return m;
}
Finns det någon som kan tala om hur jag ska göra för att få det att fungera.
MVH Ann-Helen
------------------
AHA
PeWMedlem sedan juni 200010 432 inlägg Välkommen till wF A-HA! :)
Du bör använda dig av wF-kod när du postar dina koder... kolla under MENY så hittar du den. Bäst är perl-varianten.
Så till dit problem... vad är det som är problem :q
Det är ju tre program som du skrev in... på vilket sätt vill du länka ihop funktionerna och vad ska det programmet du vill göra uträtta för något?
Koderna i sig såg ju ut att fungera förutom den sista som borde se ut så här för att inte kompilatorn ska skrika rätt ut:
#include <iostream.h>
#include<stdlib.h>
#include<time.h>
int max(int *arr, int tal);
void main()
{
int talen [10];
int svar;
srand((unsigned) time(NULL)); //Initierar slumptalsgeneratorn
for (int i=0; i<10; i++)
talen[i]=rand()% 10; //Fyller arrayen med slumptal
for (int i=0; i<10; i++)
cout << talen[i] << ""
<< endl;
svar = max(talen, sizeof(talen) / sizeof(talen[0]));
cout << "Det största talet är:" << svar << endl;
}
int max(int *arr, int tal)
{
int m=0;
for (int i=0; i<tal-1; i++)
{
if (arr[i] > m)
m = arr[i];
}
return m;
}
------------------
[Redigerat av PeW den 29 maj 2001]
A-HAMedlem sedan maj 20016 inlägg Kanske var lite luddig i min fråga. Jag ska alltså använda en main funktion till alla tre deluppgifterna och jag vet inte riktigt hur jag ska lösa detta.
Det ska se ut ungefär så här i själva main funktionen:
//Deluppgift 1
main()
{
<perl>char t;
cout \<\< "Före anrop av upc: " \<\< ch1 \<\< " " \<\< ch2 \<\< endl;
upc(ch1);
upc(ch2);
cout \<\< "Före anrop av upc: " \<\< ch1 \<\< " " \<\< ch2 \<\< endl \<\< endl;
//Deluppgift 2
int a=5;
double b=5.3;
cout \<\< "Före anrop av dubbla: " \<\< a \<\< " " \<\< b \<\< endl;
a=dubbla(a);
b=dubbla(b);
cout \<\< "Efter anrop av dubbla: " \<\< a \<\< " " \<\< b \<\< endl \<\< endl;
//Deluppgift 3
int talen [10];
int svar;
srand((unsigned) time(NULL)); //Initierar slumptalsgeneratorn
for (int i=0; i<10; i++)
talen=rand()% 10; //Fyller arrayen med slumptal
for (int i=0; i<10; i++)
cout << talen << ""
<< endl;
svar = max(talen, sizeof(talen) / sizeof(talen[0]));
cout << "Det största talet är:" << svar << endl;
return 0;</perl>
}
------------------
AHA
D3VaST8DMedlem sedan dec. 2000485 inlägg du kan ju lägga alla tre funktionerna i en separat .cpp fil, skapa .h filen för denna och anropa den med include i "main.cpp".
Alternativt (då du ju endast har tre funktioner) lägga funktionerna i "main.cpp".
Du kan välja mellan att lägga funktionerna före main eller lägga dem efter, men då måste du skapa funktionsdeklarationer och lägga dem före main.
Sedan är det bara att anropa dina funktioner som vanligt....
Var det detta svar du sökte?
Pew... wf-koden är snygg... men i mitt tycke lite för litet för att man skall kunna läsa koden bekvämt, eller så kör jag med för hög upplösning :)
[Redigerat av D3VaST8D den 29 maj 2001]
PeWMedlem sedan juni 200010 432 inlägg Meningen med wf kod är att det ska bli överskådligt, vilket det inte blir om man kladdar in koden rätt upp och ned.
Förutom PERL taggen kan man använda KOD taggen som ger tydligare tecken men bjussar inte på tabbande... ändå så ger bägge dessa en mer överskådlig kod.
A-HA >>
#include<iostream.h>
#include<stdlib.h>
#include<time.h>
char stora( char ch1 );
int dubbla(int a);
double dubbla(double a);
int max(int *arr, int tal);
//===========================M A I N====================================
int main ()
{
int talen [10]; //Deklarerar en array med namnet "talen"
int svar;
int a=5;
double b=5.3;
char t;
cout << "Vi testar en funktion. Ge ett tecken: ";
cin >> t;
cout << "\ntecknet " << t << " blir " << stora( t ) << endl;
cout << "\n\nFöre anrop av dubbla: " << a << " " << b << endl;
cout << "\nEfter anrop av dubbla: " << dubbla(a) << " "
<< dubbla(b) << endl << endl;
srand((unsigned) time(NULL)); //Initierar slumptalsgeneratorn
for (int i=0; i<10; i++) talen[i]=rand()% 10; //Fyller arrayen med slumptal
cout << "\n\n";
for(int i=0; i<10; i++) cout<<talen[i]<<""<<endl;
svar = max(talen, sizeof(talen) / sizeof(talen[0]));
cout<<"\nDet största talet är:"<<svar<<endl;
return 0;
}
//============================M A X====================================
int max(int *arr, int tal)
{
int m=0;
for (int i=0; i<tal-1; i++)
{
if (arr[i] > m)
m = arr[i];
}
return m;
}
//============================S T O R A===============================
char stora( char ch1 )
{
const int skillnad = int('a') - int('A'); //Deklarera en konstant!
char ch2;
if ( ( 'a' <= ch1 && ch1 <= 'z' ) ) ch2 = char( int(ch1) - skillnad );
else
ch2 = ch1;
return ch2;
}
//============================int D U B B L A=============================
int dubbla(int original)
{
return original+original;
}
//============================double D U B B L A==========================
double dubbla(double original)
{
return original+original;
}
Kan det vara nåt?
------------------
Ancilla, face mea laganum!
A-HAMedlem sedan maj 20016 inlägg Tack, för hjälpen. Detta funkar fint.
MVH AHA
------------------
AHA
PeWMedlem sedan juni 200010 432 inlägg Kalas :)
------------------
Ancilla, face mea laganum!
CheezesMedlem sedan nov. 2002501 inlägg Vad är det som händer mellan just dessa rader?
Hallåjsan alla nattråttor...(01:05)...
...sitter själv nu och gnagar på ett gammalt inlägg här och fick en längre fundering över nedanstående funktion, som fanns med:
//============================M A X====================================
int max(int *arr, int tal)
{
int m=0;
for (int i=0; i<tal-1; i++)
{
if (arr[i] > m)
m = arr[i];
}
return m;
}
Kan nå´n vänlig programmeringssjäl tala om för mig, vad denna funktion har för uppgift och vad som egentligen händer mellan dessa rader?? :l
Mvh
/Cheezes - en newbie med nattgnag i...
PeWMedlem sedan juni 200010 432 inlägg Funktionen loopar igenom en array beståendes av heltal. Arrayen loopas så många poster som 'tal' och returnerar det största positiva heltalet som fanns i arrayen.
inparameter: en adress till en array, ett heltal
variabel: integer m som sätts till 0
1. loop: besök varje position i array så länge index < heltal
2. för varje besök, jämför värdet av positionen i arrayen med m,
om högre, sätt m till värdet
3. returnera m
red
Syftningsfel
CheezesMedlem sedan nov. 2002501 inlägg PeW!! Du fick min glödlampa att lysa till slut
cout << "Tack!"; :bire
Trevlig helg!
Tacksamma hälsningar
/Cheezes