1 Востаннє редагувалося thepacifier (02.07.2013 22:56:20)

Тема: Ввести рядок, що складається тільки з букв

#include <stdio.h>
#include <string.h>
#include <conio.h>
int main()
{
    char str[80];
    int i;
    puts("Vvedite stroku");
    scanf("%s",str);
    for(i=0; i<strlen(str); i++)
    {
             if((str[i]>='a' && str[i]<='z') || (str[i]>='A' && str[i]<='Z'))
           {
               if (i) 
               {
                  if (int(str[i]) != int(str[i-1])+1)
                     break;      
               }
            
    }
        
        }
    if (i == strlen(str))
       printf("!!PRAVEL`NO!!\n");   
       else
       {
           printf("NEPRAVEL`NO \n");
            
       }
    getchar();
    getchar();
}

Поясніть порядково ось ці рядки будь ласка!

if (i) 
               {
                  if (int(str[i]) != int(str[i-1])+1)
                     break;  

Ось саме умова:
Ввести рядок, що складається тільки з букв, і визначити, чи є букви в рядку впорядкованими за алфавітом.

2

Re: Ввести рядок, що складається тільки з букв

Прочитайте правила та оформіть тему відповідно них.

3

Re: Ввести рядок, що складається тільки з букв

А де ваші напрацювання? Якщо ви не знаєте, що ці рядки роблять, то напрацювання не ваші. Висловіть свої думки стосовно цих рядків.
Ну і воно некоректно працює - наприклад, рядок "AbCd" впорядкований за алфавітом, але ваша програма так не вважає.

4

Re: Ввести рядок, що складається тільки з букв

thepacifier написав:

Поясніть порядково ось ці рядки будь ласка!

Запит на похалявити: такі речі не питають, коли людина намагається розібратися, але коли лаба їй припекла в одне місце.

5 Востаннє редагувалося -=ЮрА=- (03.07.2013 11:59:48)

Re: Ввести рядок, що складається тільки з букв

if (i) //якщо проглядаэмо символ з першого, тобто 2,3,4
               {
                  if (int(str[i]) != int(str[i-1])+1)//умова  : ASCII код поточного символа и символа перед ним відрізняются на 1-ницю
                     break;   

Саме ця умова
:

що складається тільки з букв, і визначити, чи є букви в рядку впорядкованими за алфавітом.

Проте повинна буи присутня перевырка isalpha - тобто чи э символ буквою

6 Востаннє редагувалося koala (03.07.2013 12:58:18)

Re: Ввести рядок, що складається тільки з букв

-=ЮрА=- написав:
if (i) //якщо проглядаэмо символ з першого, тобто 2,3,4
               {
                  if (int(str[i]) != int(str[i-1])+1)//умова  : ASCII код поточного символа и символа перед ним відрізняются на 1-ницю
                     break;   

Саме ця умова
:

що складається тільки з букв, і визначити, чи є букви в рядку впорядкованими за алфавітом.

По-перше, там зайве перетворення в int.
По-друге, порівнювати варто приведені до одного реєстру літери, бо завдання впорядкувати за алфавітом, а не за ASCII-кодом. Треба tolower використати.

-=ЮрА=- написав:

Проте повинна буи присутня перевырка isalpha - тобто чи э символ буквою

Там є аналог такої перевірки на два рядки вище. Хоча краще, дійсно, isalpha.

І порада Вам, -=ЮрА=-, на майбутнє: не робіть так. Люди мають самі собі допомагати, і їх можна тільки наштовхувати на відповідь, але не давати її. Бо сядуть на шию.

Подякували: incred2

7 Востаннє редагувалося -=ЮрА=- (04.07.2013 07:37:32)

Re: Ввести рядок, що складається тільки з букв

thepacifier, нище прийнятне рішення твого завдання на С++

#include <iostream>
using namespace std;

int main()
{
    int i;
    const char szText[] = "AbCDefghIJKLm25OPqRstuvWXyZ";
    bool bAlphabet      = true;
    cout<<"INPUT : "<<szText<<endl;
    for(i = 1; szText[i] && bAlphabet; i++)
    {
        if(isalpha(szText[i]) && isalpha(szText[i - 1]))
            bAlphabet   = 
            tolower(szText[i]) == 1 + tolower(szText[i - 1]);
        else
            bAlphabet   = false;
        if(!bAlphabet)
            break;
    }
    cout<<"OUTPUT: "<<endl;
    if(!bAlphabet)
        cout<<"Pos with not alphebet order : "<<i<<" - "
            <<szText + i<<endl;
    else
        cout<<"String is in alphabetical order"<<endl;
    cin.get();
    return 0;
}

PS:koala, я лише прокоментував код топікстартера для поточної реалізаціі, рішення цієї проблеми за мету не ставив, хоча всеж вирішив показати один з варіантів

Post's attachments

Безымянный.JPG 12.27 kb, 288 downloads since 2013-07-04