Pomoc oko zadataka....

poruka: 12
|
čitano: 6.812
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
protjeran
offline
Pomoc oko zadataka....

Molim pomoc oko ovih zadataka...ja se razumijem u mnoge stvari ali u programiranje slabo...

 

 

1.   Ucitaj n i izracunaj s= 1-1/2+1/3-1/4+...+-1/n

 

2.Ucitaj recenicu i ispisi da li je palindrom

 

3.Učitaj jednu kvadratnu matricu reda n...ispisi da li je ucitana matrica simetricna..

 

4.Napisati program koji za uneseni cijeli broj, kao rezultat vraca sumu kvadrata svih cifara unesenog broja.Izracunavanje kvadrata svake od cifara rijesiti pomocu funkcije "kvadrat"

 

5.Napraviti funkciju sa rad sa stringovima------naopako ; ispisuje zadani string u obrnutom redosljedu

 

 

 

C++

 
0 0 hvala 0
16 godina
neaktivan
offline
RE: Pomoc oko zadataka....
Edo9999 kaže...

1.   Ucitaj n i izracunaj s= 1-1/2+1/3-1/4+...+-1/n

 

2.Ucitaj recenicu i ispisi da li je palindrom

 

3.Učitaj jednu kvadratnu matricu reda n...ispisi da li je ucitana matrica simetricna..

 

4.Napisati program koji za uneseni cijeli broj, kao rezultat vraca sumu kvadrata svih cifara unesenog broja.Izracunavanje kvadrata svake od cifara rijesiti pomocu funkcije "kvadrat"

 

5.Napraviti funkciju sa rad sa stringovima------naopako ; ispisuje zadani string u obrnutom redosljedu

 

 

Dajem hintove i postupak, pa pitaj ako zapneš...

 

1. uneseš n i onda radiš for petlju i zbrajaš ove izraze. Nešto oblika:

for (i=1;i<=n;++i)

{

predznak=(i%2==0 ? -1 : 1);

suma+=(double)predznak/i;

}

 

2. Neki objekt (riječ, rečenica, broj,...) je palindrom ako je jednak kad se čita slijeva na desno i sdesna na lijevo. Primjer palindroma je Kapak, Ana voli Milovana, 156651 ... da bi ispitao da li je nešto palindrom, ima nešto posla... moj savjet je iz stringa kojeg učitaš izbacit sve što nije slovo, a sve što je slovo, stavit da bude npr. veliko slovo. Tu ti mogu pomoć funkcije iz conio.h biblioteke, npr isalpha, toupper i slične. Ako ih ne znaš, guglaj :D

Moj savjet je napravit pomoćni string, u kojeg ćeš kopirat samo slova iz orginalnog stringa.

Nakon što tako urediš svoj string, ideš od početka, do njegove polovice i provjeravaš da li je s[i]==s[duljina-i+1] (tj da li je i-ti znak s početka jednak i-tom znaku s kraja). Ako se za neki i desi da to nije istina, prekidaš petlju i ispisuješ da nije palindrom. Ako se cijela petlja izvrti onda je palindrom :D

 

3. matrica je simetrična ako je A[i][j]==A[j][i] za sve parove i i j. Dakle učitaš matricu i to provjeriš (dovoljno ići po gornjem trokutu)

 

4. učitati x, prebacit ga u pozitivan (uzet apsolutnu vrijednost, x=abs(x) ) i onda ga cijepati na znamenke sa nečim ovakvim:

while (x>0)

{

znamenka=x%10;

x/=10;

}

 

u varijablu znamenka će se spremiti pojedina znamenka broja x koju treba kvadrirati i zbrajati u neku sumu.

 

5. možda i najlakši, za ispis stringa unatrag samo kad se trči kroz string, i-ti znak se čita od kraja.

    for (i=duljina-1;i>=0;--i)

      cout<<s[i];

Poruka je uređivana zadnji put pet 7.5.2010 18:49 (Luuka).
17 godina
offline
Pomoc oko zadataka....

Zar nije ovaj broj 5.:

for(int i =strlen(niz)-1; i>=0; i--)

 

Postoji još jedan način za br. 2

napravi od originalnog stringa obrnuti string gornjom petljom,

zatim kroz petlju: for(i=0; niz1[i]!='\0'; i++)

provjeri if naredbom odgovaraju li vrijednosti oba niza na istim i pozicijama, ako ne odgovaraju opali break

u sljedećoj if naredbi provjeri odgovara li vrijednost i duljini prvog niza

ako ne odgovara nisu jednaki - else - jesu

Poruka je uređivana zadnji put pet 7.5.2010 16:59 (Floki).
 
0 0 hvala 0
16 godina
neaktivan
offline
RE: Pomoc oko zadataka....
Floki kaže...

Zar nije ovaj broj 5.:

for(int i =strlen(niz)-1; i>=0; i--)

Da, da, jasno :) Moj bad, ispravivljeno :D

 

A može i onako ovaj s palindromom, čak je i lakše... samo onda Ana voli Milovana ne bi bio palindom ;)

17 godina
offline
RE: Pomoc oko zadataka....
Luuka kaže...
Floki kaže...

Zar nije ovaj broj 5.:

for(int i =strlen(niz)-1; i>=0; i--)

Da, da, jasno :) Moj bad, ispravivljeno :D

 

A može i onako ovaj s palindromom, čak je i lakše... samo onda Ana voli Milovana ne bi bio palindom ;)

aha, kužim, previdio sam to, treba izbaciti razmake i svesti niz na mala slova, npr sa strlwr

Poruka je uređivana zadnji put pet 7.5.2010 17:15 (Floki).
16 godina
neaktivan
offline
RE: Pomoc oko zadataka....

Maknut razmake, brojeve, interpunkciju i ostalo što smeta (ostavit samo slova, to se provjeri sa isalpha), sve svest na mala (ili velika slova - toupper ili tolower) i onda provjeravat :D

Poruka je uređivana zadnji put pet 7.5.2010 17:17 (Luuka).
17 godina
offline
Pomoc oko zadataka....

Gle, ovaj za palindrom, malo sam improvizirao, ali čini mi se da štima

provjerio sam ga  na ovom palindromu : On krpu uvali lavu u prkno.Namigiva

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;

void main() {
    char *niz, *niz1, *niz2;
    int i, s=0;
    niz = (char*)malloc(50);
    niz1 = (char*)malloc(50);
    niz2 = (char*)malloc(50);
    gets(niz);
    strlwr(niz);
    for(i=0; niz[i]!='\0'; i++)
       if(isalpha(niz[i]) && niz[i]!= ' ') {
          s++;
          niz1[s-1] = niz[i];
       }


    niz1[s] = '\0';
   

    for(i =strlen(niz1)-1; i>=0; i--)
             niz2[(strlen(niz1)-1-i)] = niz1[i];
    niz2[strlen(niz1)] = niz1[strlen(niz1)];
   

    for(i=0; niz1[i]!='\0'; i++)
       if(niz1[i]!=niz2[i])
          break;

    if(i!=strlen(niz1))
       cout<< "\nUnesena recenica nije palindrom!";
    else
       cout<< "\nUnesena recenica ja palindrom!";
}

Poruka je uređivana zadnji put pet 7.5.2010 22:04 (Floki).
 
0 0 hvala 0
16 godina
neaktivan
offline
RE: Pomoc oko zadataka....

Ne trebaju ti tu dva niza... ja bi ovako nekako:

 

for(i=0; niz[i]!='\0'; i++)
       if(isalpha(niz[i]) && niz[i]!= ' ') {
          s++;
          niz1[s-1] = toupper(niz[i]);
       }


    niz1[s] = '\0';
   
    int palindom=1;
    for(i =0; i<strlen(niz1)/2; ++i)

      if ( niz1[i]!= niz1[strlen(niz1)-i+1]) { palindrom=0; break;}

 

moguće da sam koji index fulo, ali kuži se ideja :D

Poruka je uređivana zadnji put sub 8.5.2010 1:11 (Luuka).
17 godina
offline
RE: Pomoc oko zadataka....
Luuka kaže...

Ne trebaju ti tu dva niza... ja bi ovako nekako:

 

for(i=0; niz[i]!='\0'; i++)
       if(isalpha(niz[i]) && niz[i]!= ' ') {
          s++;
          niz1[s-1] = toupper(niz[i]);
       }


    niz1[s] = '\0';
   
    int palindom=1;
    for(i =0; i<strlen(niz1)/2; ++i)

      if ( niz1[i]!= niz1[strlen(niz1)-i+1]) { palindrom=0; break;}

 

moguće da sam koji index fulo, ali kuži se ideja :D

jeste, u pravu si, izbjegava se deklaracija još jednog polja, a petlja vrti samo do polovine niza.

 

for(i=0; i<(strlen(niz1)/2); i++)
       if(niz1[i]!=niz1[strlen(niz1)-1-i]) {
          palindrom = 1;

          break;

       }
    if(palindrom)
       cout<< "Nije palindrom";
    else
       cout<< "Jeste palindrom";

Poruka je uređivana zadnji put sub 8.5.2010 12:51 (Floki).
16 godina
neaktivan
offline
RE: Pomoc oko zadataka....

Btw pošto radimo u c++-u, možemo izbjegnut zezanje sa \0, tako da koristimo string ;) I kad treba dodati znak u string, samo napravimo niz1+=niz[i] :D (koliko znam, postoji konstruktor za string od chara, pa ovo prolazi, a ako ne, onda niz1+=string(niz[i]); ). Strlen možemo zamijenit sa niz.size() itd. Moguće da će biti sporije, jer += će najvjerojatnije morat alocirat novu memoriju, ali to nam tu nije toliko bitno :D

15 godina
protjeran
offline
RE: Pomoc oko zadataka....

Ljudi ja sam pokusao ovo uraditi...ali mi ne ide nikako....ako ima neko da mu nije mrsko uraditi bio bih mu zahvalan...

16 godina
neaktivan
offline
RE: Pomoc oko zadataka....

Zalijepi pokušaje pa da vidimo kaj je krivo ;) Postanje gotovih rješenja ti neće baš puno pomoć :D

 

Ili pitaj koji te dio muči...

Poruka je uređivana zadnji put ned 9.5.2010 12:44 (Luuka).
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice