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); }
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); }
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!