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

строки - C++

Восстановить пароль Регистрация
 
black_fir
 Аватар для black_fir
0 / 0 / 0
Регистрация: 29.10.2010
Сообщений: 5
30.11.2010, 18:22     строки #1
Дана строка s, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5
строчных латинских букв. Между соседними словами стоит запятая, за
последним словом - точка. Напечатать только те слова, перед которыми в
строке находятся только меньшие (по алфавиту) слова, а за ними - только
большие.

Как лучше исправить?
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
#include "stdafx.h"
#include <iostream>
#include <sstream>
#include <string>
#include <stdio.h>
const int alph_length = 26;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    int i,k,f,j,t;
   int float b[100];
    char s[30];
printf("vvedite stroky s dlinoi menee 30 simvolov: ");
gets_s(s);
if (s[i]=',' && s[i+1]>',' && s[i+1]<',')
{
    k=k+1;
}
else if (s[i]<',' && s[i]>',')
{
    b[k]=b[k]+s[i];
}
for(i=1;i<k-1;i++)
{
    strcat(b,s);
f=0;
for(j=2;j<30;j++);
if b[j]<b[j-1];
{
    f=1;
}
if(b[i]<b[k] && b[i]>b[k] )
{
    printf("%f",b[i]);
}
}
 
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2010, 18:22     строки
Посмотрите здесь:

C++ Как считать строки из файла, если там больше одной строки?
C++ как первые два символа строки переставить в конец этой строки?
Выявить строки, в которых макс. эл-т больше суммы остальных эл-ов строки C++
C++ Переставить строки матрицы по возрастанию максимальных элементов каждой строки
C++ Функция перезаписывает символы строки заданным количеством символов другой строки
C++ Упорядочить строки матрицы лексикографически по неубыванию первых k элементов строки.
C++ Упорядочить строки матрицы D (m. n) Лексикографически по неубыванию первых k элементов строки
Прибавить ко всем элементам каждой строки максимальное значение этой строки C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
black_fir
 Аватар для black_fir
0 / 0 / 0
Регистрация: 29.10.2010
Сообщений: 5
10.12.2010, 13:05  [ТС]     строки #2
Исправлено,но
в конце программа почему то всегда выводит только первое слово,в котором буквы расположены по алфавиту,не знаю в чем ошибка:
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
#include "stdafx.h"
#include "string.h"
const int alph_length = 26;
 
int _tmain(int argc, _TCHAR* argv[])
{char s[111],s1[30][5]; //s - строковый массив, s1 - двумерный строковый массив (читать методичку к 5-ой лабе)
    int i,l,k=0,a1,a2;  // i,l,k - счетчики, а - вспомогательная переменная
    printf ("Vvedite stroku\n");
    gets_s(s);  //вводим строку с словами, между словами пробелы
    l=0;
    for (i=0; i<alph_length; i++)
    {
        if (s[i]!=',')
        {
            s1[l][k]=s[i];  // двумерному массиву присваеваем значения слов
            k++;    //счетчик символа слова вносимого в двумерный массив
        }
        else
        {
            s1[l][k]='\0';  //ставим нулевой символ (конец слова)
            l++;    //счетчик слов двумерного массива
            k=0;    //обнуляем счетчик символов
        }
    }
    s1[l][k]='\0';  //ставим нулевой символ в последнем слове
    l++;
    a1=strcmp(s1[0],s1[1]);     //сравниваем слова с помощью функции STRCMP(), в методичке о ней написано
    if (a1 < 0)                 // если a<0, т.е. s1[0]<s1[1], то ...
        printf ("%s ",s1[0]);   // Выводим первое слово, т.к. оно меньше следующего
    for (i=1; i<l; i++)     // начинаем проверять остальные слова лексиграфически
    {                               
        a1=strcmp(s1[i],s1[i-1]);   // проверка со словом до
        a2=strcmp(s1[i],s1[i+1]);   // проверка со словом после
        if ((a1 > 0) && (a2 < 0))   // если оба условия выполняются т.е. предыдущее слово меньше s1[i], а слово после него больше то...
            printf ("%s ",s1[i]);   // ... то выводим s1[i]
    }
    printf ("\n");
 
    return 0;
}
Yandex
Объявления
10.12.2010, 13:05     строки
Ответ Создать тему
Опции темы

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