Форум программистов, компьютерный форум CyberForum.ru

не понимаю. строки. - C++

Восстановить пароль Регистрация
 
enotik
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 147
28.12.2010, 14:20     не понимаю. строки. #1
значит надо написать программу., преобразующую введенный текст по Госту
т е 1 буква заглавная, после запятой 1 пробел, между словами 1 пробел и т.д.

Упорядочить слова по алфавиту
Упорядочить по длине.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <stdio.h>
#include <string.h>
 
void toGost(char *st){
    int len;
 
    len=strlen(st);
    int i=0;
    while(i<len)
    {
 
               if(st[i]==',')
               {
                if (st[i+1]!=' '){
                    for(int j=len;j>i;j--)st[j+1]=st[j];
                    st[i+1]=' ';
                    len++;
                }
                if(st[i-1]==' ') {
                    for (int j=i-1;j<=len;j++)st[j]=st[j+1];
                    len--;
                }
            }
            if(st[i]==' ')while(st[i+1]==' ') {
                for (int j=i+1;j<=len;j++)st[j]=st[j+1];
                len--;
            }
            i++;
    }
    if (st[0]==' '){
            for (int j=0;j<len;j++)st[j]=st[j+1];
            len--;
        }
    if (st[0]>'Z')st[0]-='a'-'A';
    printf("%c",st[len-1]);
    if (st[len-1]==' ')
    {
        st[len-1]=st[len];
        len--;
    }
    if (st[len-1]!='.'){
        st[len]='.';
        st[len+1]='\0';
        }
}
 
void main(){
    char st[100];
 
    printf("Vvedite stroky \n ");
    gets(st);
    toGost(st);
    printf(" Novaia stroka: \n");
    printf("%s \n",st);
}
Объясните пожалуйста значение каждой строки вот этого кусочка:

C++
1
2
3
4
5
6
7
if (st[0]>'Z')st[0]-='a'-'A';
    printf("%c",st[len-1]);
    if (st[len-1]==' ')
    {
        st[len-1]=st[len];
        len--;
    }
Подскажите пожалуйста как упорядочить слова по длине и по алфавиту.
Ничего не получается, завтра экзамен. Заранее спасибо.)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2010, 14:20     не понимаю. строки.
Посмотрите здесь:

C++ Не понимаю формулу =)
C++ С++ не понимаю
C++ Не Понимаю С++
C++ не понимаю условие!!
C++ Не понимаю ошибку
C строки,не понимаю C++
Не понимаю программу на С++ C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M@ker
-73 / 19 / 1
Регистрация: 17.12.2010
Сообщений: 355
28.12.2010, 17:13     не понимаю. строки. #2
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>

char * str_to_upper(char * str){
char * s;
for ( s = str; *s; ++s )
*s = toupper(*s);
return str;
}

int asc_cmp(const void * a, const void * b){
return strcmp(*(char**)a, *(char**)b);
}

#define DELIM " \t\n"

int main(void){
char buf[BUFSIZ], *p, ** words;
int i, cnt, len;

printf("String: ");
scanf("%[^\n]", buf);
printf("Length: ");
scanf("%d", &len);

words = NULL;
cnt = 0;
for ( p = strtok(buf, DELIM); p; p = strtok(NULL, DELIM) ){
if ( strlen(p) == len ){
if ( ( words = (char**)realloc(words, sizeof(char*) * (cnt + 1)) ) == NULL ){
perror("realloc");
exit(1);
}
if ( ( words[cnt] = strdup(p) ) == NULL ){
perror("strdup");
exit(1);
}
str_to_upper(words[cnt]);
++cnt;
}
}
if ( ! words || ! cnt ){
fprintf(stderr, "No needed words found!\n");
exit(1);
}
qsort(words, cnt, sizeof(char*), asc_cmp);
printf("Result: ");
for ( i = 0; i < cnt; ++i )
printf("%s ", words[i]);
printf("\n");

for ( i = 0; i < cnt; ++i )
free(words[i]);
free(words);
getch();
return 0;
}
Yandex
Объявления
28.12.2010, 17:13     не понимаю. строки.
Ответ Создать тему
Опции темы

Текущее время: 00:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru