rekurzija

Teme vezane za console/GUI programiranje u C/C++ jeziku
2 post(ov)a • Stranica: 1/1.

rekurzija

PostPostao/la Salvatore » 15 sij 2015, 00:24

Jednostavni zadatak, ali negde sam pogresio i ne mogu da nadjem gresku.
Napisati rekurziju koja kao argument prima nizu od znakova, a vraca broj samoglasnika u nizu. U glavnoj programi se unosi niz i proverava se kolko ima samoglasnika.
Kod: Označi sve
#include<stdio.h>
char samoglaska(char *a)
{
   
   
   
      if(*a='\0') return 0;
      if(*a=='a'|| *a=='e'|| *a=='i'|| *a=='o'|| *a=='u') return 1+samoglaska(a+1);
      else return samoglaska(a+1);
}
int main()
{
   int c,i,m;
   char a[100];
   printf("Vnesi m\n");
   scanf("%d",&m);
   for(i=0;i<m;i++)
   {
      printf("A[%d]=",i);
      scanf("%c",&a[i]);
   }
   c=samoglaska(a);
   printf("%d\n",c);
   return 0;
}

Re: rekurzija

PostPostao/la Jasko » 21 sij 2015, 00:14

OK ima nekoliko gresaka u tvome Kodu.
  1. funkcija samoglaska treba vracati int a ne char ako varijabla c, koja je int, prima njen odgovor
  2. unutar funkcije samoglaska na upitu if, vrsis dodijeljivanje, a trebas vrsit ispitivanje, dakle fali dvostruki znak jednakosti
  3. ima jos par gresaka, ali zbog prethodne Kod generalno ne radi, zato ovdje stajem

Mene cudi, sto si izabrao da unosis slovo po slovo u svoj niz, ako se to moze rijesiti direktno unosenjem citave rijeci.
Zato bi ja ovaj program napisao ovako:

c code
#include<stdio.h>
int samoglaska(char *a)
{



if(*a=='\0') return 0;
if(*a=='a'|| *a=='e'|| *a=='i'|| *a=='o'|| *a=='u') return 1+samoglaska(a+1);
else return samoglaska(a+1);
}
int main()
{
char rijec[255];
int c = 0;
printf ("Unijeti rijec: ");
scanf ("%s", &rijec);
c = c + samoglaska(rijec);
printf ("\nBroj samoglasnika u %s, je: %d\n", rijec, c);

return 0;
}
Postoji 10 vrsta ljudi na zemlji. Oni koji razumiju binarni sistem i oni koji ga ne razumiju!
Posjetite moj YouTube kanal za gledanje za programiranje i druge teme oko računara.


2 post(ov)a • Stranica: 1/1.

Na mreži

Trenutno korisnika/ca: / i 1 gost.