Jump to content
Sign in to follow this  
GuMarinho

AJuda no exercicio de C

Recommended Posts

Olá glr,estou fazendo uns exercicios da faculdade e travei no penultimo kkkk,vcs poderiam me ajudar?

O exercício pede para desenvolver um programa em C que dado um valor N inteiro e K natural o prog calcule N^k sem usar a função pow( ).

E eu escrevi o seguinte código:

 

#include <stdio.h>

int main()
{

        int n,k,i,r;

        printf("Digite um numero inteiro: ");
        scanf("%d",&n);
        printf("Digite um numero natural: ");
        scanf("%d",&k);

        if(k < 0)
        {
           do
           {
             printf("Este numero não é natural,digite novamente: ");
             scanf("%d",&k);
           }while(k<0);
        }
        else
        {
              for(i=1;i>=k;i++)
              {
                r = n*n;
              }
        }
        printf("N^k= %d\n",r);
        printf("i= %d\n",i);
        return 0;

}


peguem leve cmg,ainda estou aprendendo a programar.

Ps: Só coloquei o "printei o i " ali pra monitorar kkk!Vlw!

Share this post


Link to post
Share on other sites

Nada mais simples: Potência, com o expoente natural, são apenas multiplicações sucessivas onde existe um caso especial (quando k=0):
 

int mypow(int N, unsigned int k)
{
  int r = 1;

  while (k > 0)
  { r *= N; k--; }

  return r;
}

Mas, existe um problema com essa função. Como 'int' tem tamanho limitado a 32 bits e admite sinal, os valores são limitados a ±2³¹ (ou de -2³¹ até 2³¹-1). Para evitar isso você pode:

  • Usar tipos integrais com mais bits, como 'long long' ou;
  • Usar ponto flutuante ou;
  • Usar uma biblioteca de precisão múltipla.

Note que a função original pow() usa ponto flutuante:

double pow(double x, double y);

O problema em usar ponto-flutuante é que ele também tem lá suas limitações... Embora os valores possam ser muito maiores, a quantidade de bits de precisão também é limitada. A melhor solução, se quiser exatidão, é usar libgmp (por exemplo):

 

// powmp.c
//
// Compilar com:
//    cc -O2 -o powmp powmp.c -lgmp
//
// Não esquecer de instalar libgmp-dev.
//
#include <stdio.h>
#include <gmp.h>

int main(int argc, char *argv[])
{
  mpz_t r, b, e;

  if (argc != 3)
  {
    fputs("Usage: powmp 'base' 'expoent'\n", stderr);
    return 1;
  }

  mpz_init_set_ui(r, 1);             // resultado.
  mpz_init_set_str(b, argv[1], 10);  // base
  mpz_init_set_str(e, argv[2], 10);  // expoente

  // Claro, isso pode ser escrito como:
  //  r = mpz_pow(b, e);
  while (mpz_cmp_ui(e, 0) > 0)
  {
    mpz_mul(r, r, b);
    mpz_sub_ui(e, e, 1);
  }

  // Libera a memória usada pela base e expoente.
  mpz_clear(b);
  mpz_clear(e);

  gmp_printf("%Zd\n", r);

  // Libera a memória usada pelo resultado.
  mpz_clear(r);

  return 0;
}

Experimente compilar e depois usar:

$ ./powmp 4444 4444 # 4444 elevado a 4444.
51036325037255080482040250195524395924782475482284514747828975986739479076862531615833001864027197875434172496782212810360936998814871028023280409517604289704232997250059817651452033902564981053474342143982434477010055077902971385879578097026795047013927210448069737612599735362894194645352399692361078824902286318374845566910211826792995098340076750261275207380564696757508258866109492489008027054745680387374032086494559412870696129709065543691586334825135439896393158947581127115655037247166912914512319390738590640498634195625879446208894955914635034539916382798196213477934038238442489518643389819322763837231638995434876736816619770138446121390713888522791536946903634459632202283685832172716842435855510281455739906068471774207538472233042602654906987502020125355985174905073230021003332170469140247237244791060151179276706887404173003683055711061565810462576130616749856799781002110356843640353389697516105223217210103014498528306981517615490248684606667345224474348209121691273006311131751894943803682584935085740780294725135881300910139685500678650664234655503263565369409930765042230344332922608368160388778788884646783931717914556412663681132017810017876756080237495986180628149778075630681683591162326934481582867517270565879385831508832179085202869797913623439391361789109534083973333868667373983317982638572836694588790263878531057321976457926706035794868607608000143128674258835749966110713648807550164642010195262398183937258284226451876181050405347824263231418489797089530605962873018298377904732924409245273472327709725894372282581058105524768663834139458191519630744589334410903481777861176889172389729459938914093278379923249077505369097142894400504292204972847535451294121869487522728274420380832944409608875582828867828954197345766989736271752262574052524120907677713841267414723824130389733862221839461701104193136612118363646182343780367533924798552314345440639416532935766910365326476064001062650439978986012613987836953446823328289018854743984831229989513368552344528366528946668277450956579664476698698885070608528868908111446990296036082707295422437498210126018245317186940472025919131910253989876920575814124256871659639320221224077385578352633571849429475276431189292090749302555041209922023332951651543444331299226763535432904707263476043787719983745748717480573667954495246311916624921943890202395518185431320767988580847947776915325464644299195013041220210205633708318303125892843920543505189879552980904823153381789682321967075253543745292851858094342413804502283186371602546057238458117043544418057384120943532580155301403058643552474493180342399235704855733869062287425023484735796769739544602182545742884488193642040911298424695109308187173595023672783492809262968798087358959434038837430012625131591133659217967823611347405958524526761075933856486406418498051232221083011321212500132046393237242013712920493373344264333908560825994557724645284878202710188644471617856313308716424505617800507511537779281500711830120905910660921253482993943955008380295422529597530517295272711434751373008436807762561135017027186247688032009272581704436132546155134721473880825079177160955223780677219678433502729700278074401926182830254603399513829993142929857388403374970772760874169394709868564511659882097055434991242192905557305121043626131448358657169258733625263781589882596980551044501739635559777554180414767408625727263397938235392611846506923430547435639632653715759798163299353598450502659980053847341549979536485533374417981344585777831913637495528436408273284344143251860794994623002364275788357898174586933809803529995199669549788973653323309952532823803289549965974624000722832093785514980924652516482515851200807081969699906466651892169655557373657152851157852684704918682011477489156069723781227666168420881320735023475233908968720310190825736586213239037243220048657578805360944016440781006626608828743161303712574375577649933225532651050545140041874017741023508427656767689065668130401769027151944649429611356508622419636497843616839733378873568423125359771873606835205422792731727757560994851502223732734474706040309843864498501849591435827118166412237796262100139892025690084293327010312257645197663545951270607774391829880728221106093312903241196615084223406747347511355606911250776846847504818687953378149563999211135192267588652390035544532377329198071915314030957493059007692692874887653124427108176927564311114294162352327908126401618689986841523872090872302734801513886689193125816660511991658004864418535953189435072045784455379328488152720292135875359370818523073632235999955560096920959353029918712650480503579008169962642053112282387206511169150739976823577289086369441166995256367827923437835419123223095040378846316251345016228949289846720433174619937560455378596315532968385243164693560657516484944148695965324488849710057293245594493054144125301383618793154325438553456395029494822177859020897215350982592844274046353318091605614965118200898804114383826069406964847820436615643622261068438963617832290603017594755753950537202287361798424395102761325628740511493400108171212718709005382511978898908061126898933058880219555439576974738382113216437342135362672263231535922196636242632966267617797782349620766549519091205877407003046124006500309222034053734371857085554062004840926832652467921080208750743403635646914790187985334984952875123511778001857103061245386249082763461716843192378489618317944998120036331318092652006012655130682372475987291362466779491036392406652011434125908300172201075459301413967064063793126812807083864221177194505056136652580844744952550893816626476519936322862192707218970681132239377168147183801211896926748464951769597450998551868070718635711806666915579910070198897425652999349587462404531631120464229738379300920201111657804964599629952724701542323391985340968672860060669633034275225674155618588182641024574391062865746589017549671210242135692320276909192356449001140429332424010168704728232320210929716937724676749800381376170596003069426771858245290325607901081526368109316668763096997126363181245813507244280366466648932281278126373785395043601786432763709030702050240133828986390880385273986929569720458072517096795027305471085938668807654698948015622573546046818183483574210076476424314126971168689392674121509101918246504955993884315209282001301719021966321013395976496991692142425223535087917565596507435924991158667497528161617132634459787384459450622411723302480664154065560531934085200935012479292867804537504330578796940153305865857778470211005882087304011121903516957099176167592117789488946853013045527375124867065686043038426322857813366803015786294145632248001337459688483691257344667756808810763951697589291515089178471233746391308443723682518279979337718359309060602693690330560121274254701058674348091423932473471398090502843038552335985443303218444128273168445461544525875847301549067496633454966410289829207039237131199496320982864323114758277687079589482127307018838909473086361470174425155605416098610793082610666882657741882553093188048486176434501614955495508196228299583835839675502532332523762696463804129678278859082482642272742222097523888921494943635753659083340054406237245675282501632433166910819140004835672664626254656945100198177609726761793938744998764132255609836841281231901889255720627632431524563414335794855387940638983921578668572820626365369332486298710663838352786326156749468726583817126773838140775866868854750410164553462469660109474243903272165419456237431085185448995866389189328684026079146101209558854111512784423513653846049421844315706794473017508719299331262442774780215604164214935781680800812113054855039739695535889689222983145176553378931813476808180181797746175127362657263172858532527445330795453630817313353805947445272602272859755128165350245699909282790812350142389739532001665264106145203494315060714077572377651146115787312307022512064449340241437064714428811461627661296148383624217245891852900460888364100406842157821779342842799355931512314718480199341284989806192064245013731802940320169314921465098996439607567827091299243886276832382975543758070963117789490624658461677581830470547198581652714163917981803161039869381247440996205213843179071365997185244849515709324465993580039825588779376403826196295376733980918034760186594327868964300163072070993667608137198439745894622830964670577357068140987913016472869332701745194728354414343987240775197183872184550997575711793283765248345696798544187751342612045080852628322021167977131912613038625008119849405429846694204887183172236242862288336790947712149061901220691463054655089364006898766280700111034085106069195942699996386257700056260174925237978902361628738183989737266536727656590186430086434104066899555984970430626699113393427759387535749682565485768733441976884012572940596856108887084493032729826238476610059812287841531681857742998664623258592919034850034756201558892775431988955545940511717158950554954860345959045710296346475477063086888136584311637100547898320415124284265050681611051509889545401120651624439122149764963968586574661359990455143110351913216521923238429980060786470727081816974969662410355488759308751155688931603175675838361935384326896619910401449935129538122817672871284002069273657674924148759715545901520947799114857656365404517318216715752365065243367980748870682553424957994182472477713721428412348500101323193437431770561481293771535815709700685601018988749699883796533380321551925970404211930703722814870147383043024350899076127839345055871818704915007022774623079583527294569519281380166147885655120004808523674310827725908874355002546657148457905053710323471032819923409475939303215234009696145468912877845444157428705725324269845118873307464750432702122363395708402813809266954445176416954050680390634404210721669270148110359745913179060623012183796034241442179864616637695398581278100443251513690190181608320197277957618618586103065843536903624585752721123072857484407001884695763104141852277787972331578007675974547534573051951675906287766232009077477009546299446114266148470853908985123009587555416972420221903757359950808721119718945202840731462726074950456726607369310800455523431774350442213764016387077276359397016795922323725222901757153393011002060910029626440636176239631950675089440294878401209867584496575479711689428392243002505742111285596689605354395073160765101186669200734842212683905358670429099456243262253207006194135528550831443774697840270729765763865401704965526590154726344992320309370696654772892880071351360611510079210660932423971138399311431421606107840277299308273681650706193685031204873415626123871788097831614964837590750823014964899520356299704559323275867818027880127178486971621826278303747456446269574866139129639109358738377276422155594326438226169115877710436415645241987304828870116028499639671621994432850792792265735019599993566923884747402162984414837265474645422356266002319780424780147840969885140237391862816439274529266133603892293872737639942238386916549505056622083083415928604605207659078623922547539643137607474464319868682774108046036631332560331327300717805862387838377162637617721381297418828788660000781831056361132773258934511662510049881698861900002425638322034083939517994043478227728724295818945414834121714638146161878458019249031232371077414060402468422371937149715681222275398116480010314713558625215596616468213210374517443850091715843079931522392153420229680048107366236906295197876902156234699932349027319276916186058329891573414313930428139555607919185190192389026056754929979302853958702886809773264745270796960183896245081350167326097763616039648753718725043830604194573415686556600904870474281097770232715993612793452983751496048549462024037030844508461707716072580399971349621270052737137833658105075643155272907595634443397421469710649589262478442474566724655969237120567845173418487762529440470229826695351272351294187278674957707502579670113762088486028927784199370456347878691364433162777744786870921031106518425844847931802318562143332162520586346376456214070002688736307063902638559148762788885343158956151797160107229661535733236486906762444067357474700997689101798161821428599649047752008815011514252844401816390424939585076205770589130004893645483641205584855883437744219703265734558514891267367080566267177288856805929998542256170860899494621508896364262009894660347512295257564856824890863382434289515954119435096457264634163644236916357390300378249516703332441368795061603944615807261982939505169099549073403188197221152637551597797951899683802449992409721428975183334578242666063517989340779988831472254946386047542780245023658860765336496396822462566380797706697056663267407242235449458534274651549579038743453915060277698885822973565586155765167400142931681208960899520371746560263829733583002620608328776408718158974097912755867301616673172872759418076664771180865159631798289178303532975347895035244536490025898135468963734500935569457512018474988806072324386391061095193617300563206349073421620131728842913657903246403571683953425204050878567348050563090389404172621103208845718114249781810625452672558925511250819360719595221672007862281984896444963254344123787497849024307172940520733149573313075557659925817664518441365261903347584532027572313309166188768274469438897797394969560355643211282919298080817690302382931052348206926321238904454198458118882210844822821363250357160391035907409711016857753591754468457688678088321482461731200445430768369046913591664767360089561928710085247927451471873596148752021313132678954452831023222988644694023933547158459272958964295398376115799910819417647828969677454032733360536723683214239170801207540657917395767079520734706539336317218188133109617778494291033280332817298844009428762531379612090145665038681510331917044253681161508700847119333958905296076499022356627365628010677726414340197056935602884040529960714256615145318404634297127907604465376429821155871081078665860527464878174828520506755881803641306438556538929542141958276824040748103136131211043691875023167075278822614343733796147190873169032205057260660344051067670429791992768652121913012521895059954551934047574800474904940010386563480489601958856487597748035536266648853742616961247934312465257745919735863190157531585430834131280398072320212966438382726175971311473127537745975213829044332350770984210525299185708953351516865858946612926840982398173154295235614371586316968868491360496700812212595701439490210485473139451398738165361282564989954513670435629923361237766313894962667476400381212165797730667874517027687375116051403282191571642956851650744922280646722074409834586593409233415022286762159459328347222899559242786219779579930883009193720491507988997151488555749670957360377705149503185077715180665444890518474846889711571541722584536374641569673356220830218907187400703661820710744159795145430352606015586615812921953986990749712371499322637865469171905713409497806437169004073344390361842501998570576229005993048420239096466308003448561017891340796167476073409143310036770948357403595929728871809533713636885391034647953563506410771549598669770607418612354486493048298257948324887092854280399996890575308141248091008684366391354350674635484268923258256874102915532038525363411814408562397598290284948264197305607031527537149786611423133118137166592048111327237521203819213296822190711384463234160193281284038243499433934205984075209327378314363350734284703872432542440047773545621263050059236121609644953384843066158004055268131195162416597382498798221282586951443827655466888011743230631174901668327358833149356764473022631844515870522794824314237233941605095215812377218718826428420878793242691427557719645257656471723055812922503746623901061436676816104290290411956041565447224539823415337843718907208314976358463130113654469290336305497409416174328035261292190893517872125591526291255132402239597336963894075033663474001477666944264153938660710673204098680669154124930538019930270047306104736552258986276965824647429655406555391473259064044331026222236793090208071454927204540098309770823362234251861977421278895089070563986599332469931277104734673626799143422660333436774839058609616838679119492166312585602686546299548163918419928636745017142259954187355586887636003568084241221478621695307152384094531375297756356083583426234545493926295612017618527949708463952945505173247787325422994467678743279370416826869347245921635509244741066157981696

Isso você não consegue com 'int's ou 'float's...
 

  • Agradecer 1
  • Curtir 2

Share this post


Link to post
Share on other sites
#include <stdio.h>
int main ()
{
    //CRIAÇÃO DE 4 VARIAVEIS INTEIRAS COM VALORES INICIAIS, O MOTIVO É QUE SE NÃO TIVER NENHUM VALOR ATRIBUIDO Á VARIAVEL O COMPUTADOR IRÁ ATRIBUIR UM VALOR QUALQUER APENAS PARA RESERVAR UM ESPAÇO NA MEMORIA
    int base, expoente,i, resposta;
    //PODEM SER 0 OS VALORES DA BASE E EXPOENTE JA QUE O VALOR SERÁ SUBSTITUIDO POR ALGUM VALOR DIGITADO PELO USUARIO
    base = 0;
    expoente = 0;
    
    //CONTADOR QUE COMEÇA EM 1 SÓ PRA FACILITAR A CONTAGEM
    i = 1;
    
    //RESPOSTA COMEÇANDO COM 1. TODO NUMERO MULTIPLICADO POR 0 RESULTA EM 0
    resposta = 1;

    //LOOPING INFINITO PEDINDO BASE E EXPOENTE PARA O USUARIO
    while(1)
    {
        printf("Digite uma base: \n");
        scanf("%d",&base);
        printf("Digite um expoente: \n");
        scanf("%d", &expoente);
        
        //SE O EXPOENTE FOR MENOR QUE 0 A EXECUÇÃO VOLTARA PARA O INICIO DO WHILE
        if (expoente < 0)
        {
            printf("Por favor digite um valor valido para o expoente...\n");
            
            //COMANDO QUE RETORNA A EXECUÇÃO PARA O INICIO DO WHILE
            continue;
        }
        else
        {    
            //SE O EXPOENTE NÃO FOR MENOR QUE 0 ENTÃO É MAIOR
            //COMANDO PARA PARA SAIR DO LOOPING INFINITO E PROSSEGUIR COM A PROXIMA INSTRUÇÃO DO
            break;
        }
    }


    //LOGICA PARA CALCULAR
    
    //ENQUANTO O I (CONTADOR) FOR MENOR QUE O VALOR DO EXPOENTE
    while(i<=expoente)
    {
        //NOSSA VARIAVEL RESPOSTA RECEBE ELA MESMA MULTIPLICADA PELA BASE
        resposta = resposta * base;


        //NOSSO CONTADOR SERÁ ELE MESMO SOMADO A 1
        i = i +1;
    }

    //QUANDO I > EXPOENTE SERÁ APRESENTADO A BASE, EXPOENTE E A RESPOSTA
    printf("%d elevado ao expoente %d é %d.\n", base,expoente,resposta);
    return 0;
}

Fiz essa resolução, vai servir nem que seja pra ver rsrsrsrs.

Se tiver problemas em entender o codigo que fiz, tente fazer um teste de mesa enquanto vai seguindo cada linha lida. Isso ajuda bastante a deduzir o resultado final do programa m/ m/


 

Edited by HiroMarikame
Esqueci de esclarecer um topico '-
  • Curtir 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...