Table of Contents

1. Példa

Irjon C programot a kovetkezo feladatra: A gets() fuggvennyel billentyuzetrol bekert karaktervektorban meg kell szamlalni a 'k' karakterek elofordulasanak szamat! Az eredmenyt irassa ki!

  #include <stdio.h>

  void main(void)
  {
   char s[100];
   int i, db;
 
   puts("k karakterek szamlalasa\n\n");
   
 printf("Adja meg a szoveget:");
   
 gets(s);
   
 for (db = i = 0; s[i] != '\0'; i++)
 {
     if (s[i] == 'k') 
   {
     db++;
   }
 }
 
   printf("\n\nA megadott szovegben %d darab 'k' karakter volt.",db);
  }

2. Példa

Osszetett logikai feltetelnek eleget tevo elemek megszamlalasa. Egy fogazogephez az atteteli viszonyt cserefogaskerekekkel lehet beallitani. Egy elozetes vizsgalat annak a megallapitasat kivanja, hogy a ket csoportban (mas furatmerettel, de azonos modullal rendelkezo) megadott fogaskereke kozul hany olyan par kepezheto, melyek fogszamhanyadosa egesz szam. Ezeket a parokat irassuk ki es szamlaljuk meg, ezek kozott hany olyan par van, amelynel a fogszamhanyados 3 egesz szamu tobbszorose. A csoportokban 18-18 db fogaskerek van. Az elsoben a legkisebbnek 11, a masikban a legkisebbnek 55 foga van.

  #include <stdio.h>
  
  #define db 18
  #define min1 11
  #define min2 55
  
  int csoport1[db], csoport2[db];
  
  void main()
  {
      int i,j,parokszama, fogszamhanyados;
      puts("Fogaskerekparok\n");
      // csoportok feltoltese:
      for (i=0; i<db; i++)
      {
          csoport1[i]= min1 + i;
          csoport2[i]= min2 + i;
      }
      
      // csoportok kiiratasa:
      puts("Az elso csoportban levo kerekek fogszamai:");
      for (i=0; i<db; i++)
      {
          printf("%4d", csoport1[i]);        
      }
      puts("\nA masodik csoportban levo kerekek fogszamai:");
      for (j=0; j<db; j++)
      {
          printf("%4d", csoport2[j]);        
      }
      
      printf("\n\n\nFolytatashoz nyomjon Entert!");
      
      getch();
      
      // vizsgalat es szamlalas:
      puts("A vizsgalat eredmenye:\n");
      
      parokszama=0;
      
      for (i=0; i<db; i++)
      {
          for (j=0; j<db; j++)
          {
              
              if (csoport2[j] % csoport1[i] == 0)
              {
                  fogszamhanyados= csoport2[j] / csoport1[i];
                  printf("%d a fogszamhanyados a 2. csoport %d es az 1. csoport %d fogszamu kereke kozott.\n",
                         fogszamhanyados, csoport2[j],csoport1[i]);
                  // 3 tobbszoroseinek szamlalasa:
                  if (fogszamhanyados % 3 == 0)
                  {
                      parokszama++;                    
                  }
              }
          }
      }
      
      printf("\n\nHarom tobbszoroset ado attetelu parok szama= %d", parokszama);
  }

3. pelda

Kivalasztas osszetett logikai feltetel alapjan. Valasszuk ki azt a vektorelemet egy numerikus, legalabb negyelemu vektorbol, amelyiknek a kozvetlenul megelozo es a kozvetlenul rakovetkezo szamokkal adodo atlaga legkozelebb esik a sorozat atlagertekehez.

  #include <stdio.h>
  #include <conio.h>
  #include <stdlib.h>
  #include <time.h>
  float V[200];
  void main()
  {
      int i,n,index;
      float atlag, atlag3, elteres, elteresmin;
      srand(time(NULL));
      puts("Kivalasztas atlagok alapjan\n");
  
      do
      {
          printf("\nElemek szama=");
          scanf("%d",&n);
      }
      while (n<4);
  
      //feltoltes veletlenszamokkal:
      for (i=0; i<n; i++)
      {
          V[i]= (rand() % 100) /1.5;
      }
  
      //Az osszes elem atlaganak szamitasa:
      for (atlag=0.0, i=0; i<n; i++)
      {
          atlag+= V[i];
      }
  
      atlag = atlag/n; //vagy atlag /= n;
      printf("\nA sorozat atlaga= %10.3f \n", atlag);
  
      // a kivalasztas:
      elteresmin= 1e20; // tiz a huszadikon, jo nagy
      for (i=1; i<n-2; i++) // masodiktol az utolso elottiig fut!
      {
          atlag3= (V[i-1]+V[i]+V[i+1])/3;
          elteres= (atlag>atlag3) ? atlag-atlag3 : atlag3-atlag;
          if (elteres<elteresmin)
          {
              elteresmin= elteres;
              index= i;
          }
          printf("\nA harom egymasutani szam: %10.3f %10.3f %10.3f",
                 V[i-1],V[i],V[i+1]);
          printf("\nAtlaguk= %8.3f, az elteres= %8.3f", atlag3, elteres);
      }
      printf("\n\nA %d indexu szam es szomszedai atlaga ter el legkevesbe, az elteres erteke= %10.3f", index, elteresmin);
  }
  //Futtassuk 12, vagy kevesebb elemmel!
 
tanszek/oktatas/szamitastechnika/tovabbi_algoritmusok.txt · Last modified: 2018/10/19 19:00 by admin
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki