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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
enotik
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 147
#1

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

28.12.2010, 14:20. Просмотров 316. Ответов 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++
В общем прошу помощи в объяснении чем отличается *s от просто s.Кто на что указывает ит.д. Вот пример: /*Дана строка. Определите...

С++ не понимаю - C++
1. сумму элементов массива с нечетными номерами; 2. сумму элементов массива, расположенных между первым и последним отрицательными...

Не Понимаю С++ - C++
есть какие нибудь проги которые обясняют как раскладывать задачку(пример) написания в С++

Не понимаю ошибку - C++
#include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; int main() { int n,i; float a; printf (&quot;\n a=&quot;); scanf ...

не понимаю условие!! - C++
Добрый день!!! Я взялся за самостоятельное изучение С++. Мой опыт составляет два дня)) Все что я изучил(пока) - линейные программы. Задачки...

не понимаю код - C++
прокоментируйте пожалуйста код, я совсем не понимаю что здесь написано или переправьте на более простой само условие: &quot;Задан текст. ...

Указатели. Не понимаю - C++
Разбираю указатели, слегка запнулся на одном месте. У меня есть функция: void Dit(int &amp;x) { x *= 2; } Использую я в...

Не понимаю формулу =) - C++
Знаю как это сделать но не магу понять как написать эту формулу ((( хелп плз Написать функцию вычисления многочлена вида ...

Не понимаю вопроса - C++
Что сие означает? я имею ввиду часть &quot;по убыванию элементов такого-то столбца&quot;

не понимаю момент \0 - C++
string s; cin&gt;&gt;s; int n=0; int w=0; while(s='\0'){ ++n; if(s=' ')++w; ошибки

isdigit() не понимаю - C++
Здрасти всем! Не могу понять, почему isdigit() неверно себя ведет. Точнее абсолютно наоборот. #include &lt;iostream&gt; const int...

не понимаю ошибку - C++
Написать программу, решающую задачу линейного поиска элемента в заданном вещественном массиве. _____ при вводе единицы выводит 0, ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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;
}
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru