Nagyon egyszerű programozási feladat C-ben, kb 2 sorban kérnék segítséget?
Órán olyan programot írtunk, ami kiszámolja a 8 faktoriálisát (8!), de már nem emlékszem, hogy folytatdott a program:
#include <studio.h>
int main()
{
int i, f;
for( i=1, f=1; i<=8, ++i)
______________________
Eddig emlékszem rá, azt tudom, hogy volt ezután valami ilyesmi: f=*f (?)
Megnéztem az interneten, de ott csak olyan kódot találtam, amiben használják a scanf() függvényt, de nekem fontos lenne anélkül.
Köszi előre is.
Nincs olyan hogy "studio.h".
STanDard Input-Output Library van, stdio.h
A végére pedig illik egy printf("%d",f);
Ez a kérdés olyan, mintha vakon akarnál autót vezetni.
Komolyan abszolút semmi logikai érzéked nincs, hogy kitaláld mi lehet a program?
A studio.h-n meg beszartam. :D
#1 ami nálad "studio.h" az nálunk "stdio.h"
#2 tisztában vagy mi a faktoriális fogalma? Ha a válasz nem, ajánlom, hogy ülj le, és bogarászd ki a matematika tankönyvedből. Ha pedig igen, akkor nincs más dolgod, mit elgondolkozni egy kicsit.
Ha ez nem megy itt egy kis segítség. n! = n*(n-1)*(n-2)*...*2*1
Ha ez még mindig nem elég segítség, a te példádban, 8! = 8*7*6*5*4*3*2*1 = 40320
Ezt nem fogom lekódolni neked, de egy algoritmust kapsz, mert éppen ráérek, és ilyen jó hangulatom van.
f=1;
Ciklus i=1-től, 8-ig, by1
f=i*f;
Ciklus Vége
Fontos megjegyezni, hogy a ciklus elején az f-et muszáj 1-re beállítani, különben az eredményed érthető okokból (minden szám 0 szorosa 0) 0 lesz.
Remélem elég részletes volt a válaszom, és hogy az órai ismereteid alapján implementálni is tudod az algoritmust C nyelven.
Köszi az értelmes válaszokat.
Igen, félreírtam a studio-t.
Én végzős fizikus vagyok, tisztában vagyok a faktoriális fogalmával. Erre az évemre hagytam az összes programozási tárgyamat, épp azért mert gőzöm sincs róluk, de kötelezőek, így nincs mást tenni..
Akkor elnézésed kérem, csak azt hittem magával a matematikai részével van a gond, mivel igazából itt egy produktumról van szó ami x=1 -től megy 8-ig és i az amit szorzol. A for ciklus is igazából ezt hivatott kiváltani, és a te példádban már ott is volt az f=*f (ami egyébként így azt jelenti, hogy f*f). És azért f*i, mivel az i az amit növelsz minden lépésben.
5. voltam.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,n,p=1;
printf("n=");
scanf("%i",&n);
for (i=1;i<n+1;++i)
p*=i;
printf("Az elso %i szam szorzata: %i\n",n,p);
system("pause");
return 0;
}
remélem érthető....
Az f=*f nem f*f. Sztem te kevered az f*=f-fel. Ebben az esetbem a "*=" egy operátor, ami egyeenértékű az f=f*f-fel.
Az első esetben pedig két külön dolog. Van egy értékadás (egyenlőségjel) és egy "*", ami az f címen (mutató) lévő értéket jelenti.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!