Программалау оқулық Алматы, 012 Қазақстан Республикасы Білім жəне ғылым министрлігінің «Оқулық»


if (strcmp(s.passw) == 0) k = 1; /* тіркестерді



Pdf көрінісі
бет61/465
Дата09.01.2023
өлшемі3,66 Mb.
#60709
түріПрограмма
1   ...   57   58   59   60   61   62   63   64   ...   465
if (strcmp(s.passw) == 0) k = 1; /* тіркестерді
салыстыру функциясы */
}
if (k) printf("\nпароль қабылданды");
else printf("\nпароль қабылданбады"); 
return 0; 

Тіркестермен жұмыс істеу кезінде нұсқауыштар жиі қолданылады.
НАЗАР АУДАРЫҢЫЗ
Тіркестермен жұмыс істеу кезінде жиі кездесетін қателіктер – нөл-символдың 
жоқ болуы жəне тіркесті қарастыру кезінде нұсқауыштың тіркес шекарасынан 
шығып кетуі.
Енді 
src 
тіркесін
 dest
тіркесіне көшіру процесін қарастырайық. Оның 
алгоритмі төмендегідей болады:
char src[10], dest[10];
...
for (int i = 0; i<=strlen(src); i++) dest[i] = src[i];
Тіркес ұзындығы 
strlen
функциясы арқылы анықталады, бұл функ-
ция тіркес ұзындығын нөл-символдың тұрған орнын іздеу жолымен есептеп 
шығарады. Осылайша, тіркес екі рет қарастырылады. Нөл-символға тексеруді 
тікелей программаның орындалу барысында анықтаған айтарлықтай тиімді бо-
лып табылады. Индексті арттыруды нұсқауыштар инкрементімен алмастыруға 
болады (ол үшін 
src
тіркесіне жады динамикалық түрде бөлінуі тиіс, соны-
мен қатар, қосымша нұсқауышты анықтап, оны 
dest
тіркесінің бастапқы 
адресімен инициалдау керек):
#include  
int main(){
char *src = new char [10];
char *dest = new char [10], *d = dest;
cin >> src;
while (*src != 0) *d++ = *src++;
*d = 0; 
// аяқтаушы нөл
cout << dest;
return 0;
}
Цикл ішінде тіркестер элементтерін символдап меншіктеумен бірге, 
нұсқауыштарды инкременттеу қоса орындалады. Меншіктеу операциясының 
нəтижесі – берілетін мəн, ол цикл шартында тексеріледі, сондықтан меншіктеуді 
шарттың орнына қойып, нөлге тең емес екенін тексеру шартын алып тастауға 
болады (мұнда аяқтаушы нөл циклде көшіріледі, оны меншіктеу үшін жеке 


65
оператордың қажеті жоқ). Осылардың нəтижесінде тіркесті көшіру циклінің 
шарты келесідей түрде болады:


Достарыңызбен бөлісу:
1   ...   57   58   59   60   61   62   63   64   ...   465




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет