Функция strlen - изчислява дължина на стринг

Описание на функция strlen: параметър стринг, връща резултат брой символи в стринга. Стойността на върнатия резултат от функция strlen е целочислен от тип int. При изчисляване на дължината се предполага, че в разглеждания стринг е поставен служебен знак за края му. Първият разглеждан знак е в позиция 0, а последният знак е служебен. Библиотечната функция strlen работи с масив от тип char.

   Да разгледаме следната задача: От клавитурата се въвежда дълго естествено число с брой цифри [2..42]. Трябва да се изведе сумата от цифрите на числото.
   При декларация:
  char mas[50];
  int i,sum=0;
   Следният програмен фрагмент би извиквал многократно функцията strlen.
   for (i=0; i<strlen(mas); i++) dyl+=mas[i]-‘0’;
   Подобна конструкция не е ефективна при голяма дължина на низа, т.к. на всяка стъпка от цикъла се изчислява отново дължината на въведения стринг.
   В случая частта dyl+=mas[i]-‘0’ разглежда дългото число като съставен от ASCII кодове. Така цифрата 0 има ASCII код 48 или стойността на всяка цифра е равна на разликата: цифрата като знак – 0 като знак.
   Следващата програма съдържа две примерни решения на поставената задача:
#include <iostream>
using namespace std;

int main ()
 { char mas[50];
   int i,sum,dyl;
   cout<<"Da se systawi programa, chrez koqto se wywevda dylgo estestweno \n";
   cout<<"chislo s broj cifri [2..42]. Programata da izwede broq na cifrite\n";
   cout<<"i tqhnata suma.\n";
   cout<<"Primer: 12345 Izhod 5, 15\n";
   cout<<"Wywedete dylgo estestweno chislo: ";cin>>mas;
   // I - wi nachin
    sum=0;
   dyl= strlen (mas);//  strlen  izchislqwa dylvina na string - broj simwoli w string  
   for (i=0;i<dyl; i++) sum+=(int)(mas[i]-'0');
   cout<<"Wywedeniqt string e s dylvina: "<<dyl<<endl;
     cout<<"Sumata na wywedenite cifri e: "<<sum<<endl;

      // II - ri nachin
      i=sum=0; 
      while (mas[i]!='\0')//srawnqwane dali e posledniq simwol na wywedeniq string '\0'
      { sum+=(int)(mas[i]-'0');//sumira sys syotwetnata poredna cifra
        i++;
      }
      cout<<"Wywedeniqt string e s dylvina: "<<i<<endl;
     cout<<"Sumata na wywedenite cifri e: "<<sum<<endl;
system ("pause");
return 0;
}//kraj na progarma  strlen string 

Решени примерни задачи с подобни функции и служебни думи са разгледани в страницата с електронни уроци по информатика - програмиране.
Илюстриране работата на характерни алгоритми можете да намерите в предоставените електронни помагала съдържащи решени примери.

Начало на страницата

 
Размер на шрифта
Increase Font Size Option 3 Reset Font Size Option 3 Decrease Font Size Option 3
Bulgarian Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish
Търсене в сайта: