Kezdőoldal » Számítástechnika » Programozás » Segítene valaki programozás...

Segítene valaki programozás feladatban? (c-ben)

Figyelt kérdés

Igazából a "Majd meghív egy eljárást.." résztől érdekel főleg, hogy hogyan lehetne megoldani ezekkel a paraméterekkel?

Bemásolom a feladatot, hogy érthető legyen:

Bekéri a felhasználó kedvenc számát, majd létrehoz egy 10 elemű egészek tárolására alkalmas tömböt, amit feltölt -51 és 51 közötti véletlen egész számokkal (-51 és 51 is lehet a generált szám). Majd meghív egy eljárást, amely paraméterül megkapja a kedvenc számra mutató mutatót, a tömböt és annak méretét, majd módosítja a kedvenc számot úgy, hogy minden tömbelemhez generál egy véletlen egész számot 0-t vagy 1-t. Ha a 0-t generált egy tömbelemhez, akkor azt a tömbelemet hozzáadja a kedvenc számhoz, ha 1-est generált, akkor pedig kivonja a kedvenc számból a tömbelemet.



2013. márc. 13. 22:38
1 2
 1/12 anonim ***** válasza:

Mi a kérdés konkrétan?

Megcsinálod az eljárást 3 paraméterrel, amiben van egy for ciklus 0tól méretig, ahol minden lépésben randomgenerálsz egy számot, és az eredménytől függően csökkented vagy növeled a tömb i-edik elemét.

Azt mondjuk nem értem a kedvenc számnak miért a mutatója kell, de C-hez nem nagyon értek.

2013. márc. 13. 23:08
Hasznos számodra ez a válasz?
 2/12 gyorki92 ***** válasza:

Nem teljesen tiszta, hogy miután hozzáadta vagy kivonta a számot a kedvencből, azt utána pontosan hová mentse. Én úgy értettem, hogy a tömbbe mentse vissza, irja felül vele az eredeti értéket.

Valami hasonló lenne az eljárás:

void tombkezelo(int *kedvenc, int tomb[], int darab){

for(int i; i<darab; i++){

int veletlen = rand()%2;

if(veletlen==0){

tomb[i] += *kedvenc;

} else {

tomb[i] = *kedvenc-tomb[i];

}

}

}

Nincs szükség visszatérési értékre.

2013. márc. 13. 23:11
Hasznos számodra ez a válasz?
 3/12 A kérdező kommentje:

Köszönöm a válaszokat.

Ezzel mi a gond?

#include<stdio.h>

#include<stdlib.h>

void eljaras(int *ip,int t[], int darab){

int i;

for(i=0;i<darab;i++){

int veletlen = rand()%2;

if(veletlen==0){

*ip+=t[i];}

else{

*ip+=-t[i];

}

}

}

int main(){

int a,t[10],i,*ip;

printf("Kerem a kedvenc szamodat:");

scanf("%d",&a);

for(i=0;i<10;i++)

t[i]=rand()%(102-0)-51;

ip=&a;

eljaras(*ip,t,10);

printf("A modositott szam: %d\n",*ip);

return 0;}

2013. márc. 14. 15:32
 4/12 gyorki92 ***** válasza:
Mi vele a probléma pontosan? Forditásnál jelez hibát, vagy nem úgy működik, ahogy szeretnéd?
2013. márc. 14. 16:43
Hasznos számodra ez a válasz?
 5/12 A kérdező kommentje:

LEfordul, de nem működik.

Már írtam egy egyszerűsített változatot is, de ez se jó.

Ha 1-et adok meg kedvenc számnak, akkor 141 a módosított, ha 2-t akkor 142...


#include<stdio.h>

#include<stdlib.h>

int main(){

int a,t[10],i,b;

printf("Kerem a kedvenc szamodat:");

scanf("%d",&a);

for(i=0;i<10;i++)

t[i]=rand()%(102-0)-51;

for(i=0;i<10;i++){

b=rand()%2;

if(b==0){

a=a+t[i];

} else {

a=a-t[i];}}

printf("A modositott szam: %d\n",a);

system("pause");

return 0;}

2013. márc. 14. 16:47
 6/12 anonim ***** válasza:
Mondjuk az srand(time(0)); erõsen hiányzik. :)
2013. márc. 14. 18:07
Hasznos számodra ez a válasz?
 7/12 gyorki92 ***** válasza:

Ja, bocs, elfeledkeztem egy dologról. rand() egy megadott seed szerint generálja a véletlen számokat. Ha nem állitod át a seedet, akkor mindig az alapértelmezett szerint fogja generálni, azaz minden alkalommal ugyan azokat a számokat fogod kapni, akár hányszor futtatod a programot.

#include <time.h> az elejére, meg valahová az első rand() elé be kell szúrni ezt:

srand(time(null)); ez átállitja a véletlenszám generálás seedjét, az aktuális időre alapozva.


Ennyit tudtam kitalálni abból amit leirtál. Jobban is megfogalmazhatnád a jövőben a kérdéseket, leirhatnád akár példákkal, hogy a várt eredmény micsoda, hogy ne nekünk kelljen találgatni.

2013. márc. 14. 18:09
Hasznos számodra ez a válasz?
 8/12 A kérdező kommentje:
Ez az srandtime c-ben engedélyezett, szabályos?
2013. márc. 14. 18:35
 9/12 gyorki92 ***** válasza:

Mit értesz engedélyezett, szabályosnak?

Működik, amennyire tudom hiba nélkül.

2013. márc. 14. 18:45
Hasznos számodra ez a válasz?
 10/12 A kérdező kommentje:
Igen nekem is működik. De ez csak c++-ban van, vagy c-ben is., mert c-nyelvet kell használni, és operációs rendszertől függetlenül kell működni?
2013. márc. 14. 19:27
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!