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

Многомерные массивы и строки. - C++

Восстановить пароль Регистрация
 
matveyandreich
-6 / 0 / 0
Регистрация: 05.01.2011
Сообщений: 3
05.01.2011, 11:04     Многомерные массивы и строки. #1
Извиняюсь, что просто с нуля, но очень надо. Будьте добры)
Программирование на языках С
1)Дана целочисленная квадратная матрица. Определить:
а)сумму элементов в тех столбцах, которые не содержат отрицательных эле¬ментов;
б)упорядочить строки по убыванию произведений их элементов.
2)Дано предложение. Вывести его на экран, заменив каждую первую букву слов, начинающихся с гласной на прописную.
Желательно как нибудь попроще
Заранее огромное спасибо!!!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
x1Mike7x
 Аватар для x1Mike7x
214 / 127 / 6
Регистрация: 06.11.2010
Сообщений: 234
05.01.2011, 11:56     Многомерные массивы и строки. #2
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
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
 
// Задаем количество элементов в строке
#define N 100
 
void capitalize(char *s); //Объявляем прототип функции, которая сделает прописными первые буквы в каждом слове
 
int main ()
{
    char str[N];  //Объявляем строку на N элементов
    printf("Input string: "); //Запрос на ввод строки
    gets(str); // Считываем строку
    capitalize(str); //Вызываем нашу мегафункцию
    printf("Output string: "); //Подготавливаем пользователя к тому,что сейчас мы выведем обработанную строку, вывев определённое сообщение
    puts(str); //Выводим обработанную строку
    system ("pause"); //Пауза - ждем нажатия на любую клавишу (кроме шивта, ктрл и альта)
    return 0;
}
 
void capitalize(char *s) //Наша функция
{
    int i; //Объявляем счётчик для цикла
    if (isalpha(s[0])) //Если первый символ является буквой...
        s[0]=toupper(s[0]); //... то делаем его прописным
    for (i=1; s[i]; i++) //Дальше пускаем цикл со второго символа (і=1), в котором будем перебирать каждый символ строки
        if ( (isalpha(s[i])) && !(isalpha(s[i-1])) ) //Проверяем или является нынешний символ буквой (isalpha(s[i])), а предыдущей - не буквой !(isalpha(s[i-1]))
            s[i]=toupper(s[i]); //Если условие исполняется, то делаем букву прописной
};
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
05.01.2011, 12:32     Многомерные массивы и строки. #3
Цитата Сообщение от matveyandreich Посмотреть сообщение
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
#include <iostream>
#include <string>
#include <sstream>
#include <cctype>
 
int main()
{
    std::string str;
    std::cout << "\n\nString -> ";
    getline(std::cin, str);
 
    const std::string glas("EYUIOA");
    std::istringstream ist(str);
 
    std::cout << "\n\nResult string -> ";
    while(ist >> str)
    {
        if(glas.find(str[0]) != std::string::npos)
            str[0] = tolower(str[0]);
 
        std::cout << str << ' ';
    }
 
    return 0;
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
05.01.2011, 14:22     Многомерные массивы и строки. #4
ыы.. да. я люблю сложности.

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
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <sstream>
#include <iterator>
 
int main()
{
    typedef std::string T_str;
    typedef std::vector<std::string> T_vec_str;
 
    T_str str;
    std::cout<<"Enter string\n";
    std::getline(std::cin, str);
    std::istringstream ist(str);
    std::string tmp;
    T_vec_str vec;
    while(ist >> tmp)
        vec.push_back(tmp);
    const std::string vowels="AEYUOI";
    int i=0;
    std::transform(vec.begin(), vec.end(), vec.begin(), [vowels](std::string tmp) -> std::string
    {
        if(vowels.find(*tmp.begin()) != std::string::npos)
            *tmp.begin()+=32;
        return tmp;
    });
    std::cout<<"Transformed string\n";
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<std::string>(std::cout, " "));
    return 0;
}
x1Mike7x
 Аватар для x1Mike7x
214 / 127 / 6
Регистрация: 06.11.2010
Сообщений: 234
05.01.2011, 21:33     Многомерные массивы и строки. #5
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
41
42
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
 
// Задаем количество элементов в строке
#define N 100
 
void capitalize(char *s); //Объявляем прототип функции, которая сделает прописными первые буквы в каждом слове
bool isvowel(char ch); //Объявляем прототип функции, которая определяет, является ли символ гласной буквой
 
int main ()
{
    char str[N];  //Объявляем строку на N элементов
    printf("Input string: "); //Запрос на ввод строки
    gets(str); // Считываем строку
    capitalize(str); //Вызываем нашу мегафункцию
    printf("Output string: "); //Подготавливаем пользователя к тому,что сейчас мы выведем обработанную строку, вывев определённое сообщение
    puts(str); //Выводим обработанную строку
    system ("pause"); //Пауза - ждем нажатия на любую клавишу (кроме шивта, ктрл и альта)
    return 0;
}
 
bool isvowel(char ch) //Проверка символа на гласность
{
    char t[]="AaEeUuIiOoYy"; // массив гласных букв
    int i; // счётчик
    for (i=0; t[i]; i++) //сравниваем в цикле...
        if (ch==t[i]) //является ли наш символ одним из элементов массива гласных
            return true; //если да, то возвращаем труЪ
    return false; //если ж не нашли - возвращаем неОК
};
 
void capitalize(char *s) //Наша функция
{
    int i; //Объявляем счётчик для цикла
    if (isalpha(s[0])) //Если первое число является буквой...
        s[0]=toupper(s[0]); //... то делаем его прописным
    for (i=1; s[i]; i++) //Дальше пускаем цикл со второго символа (і=1), в котором будем перебирать каждый символ строки
        if ( (isvowel(s[i])) && (isalpha(s[i])) && !(isalpha(s[i-1])) ) //Проверяем или является нынешний символ буквой (isalpha(s[i])), а предыдущей - не буквой !(isalpha(s[i-1])) и плюс проверка на гласность
            s[i]=toupper(s[i]); //Если условие исполняется, то делаем букву прописной
};
Добавлено через 1 час 22 минуты
На 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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <stdbool.h>
 
#define N 5
 
int main ()
{
    int arr[N][N], t[N];
    int i, j, S, k, x;
    bool OK;
    
    srand(time(NULL));
    for (i=0; i<N; i++)
        for (j=0; j<N; j++)
            arr[i][j]=rand()%115-15; //диапазон значений от -15 до 99
            
    for (i=0; i<N; printf("\n"), i++)
        for (j=0; j<N; j++)
            printf("%3.2i ", arr[i][j]);
    
//а)
    for (j=0; j<N; j++)
    {
        S=0;
        OK=true;
        for (i=0; i<N; i++)
            if (arr[i][j]>=0)
                S+=arr[i][j];
            else
            {
                OK=false;
                break;
            };
        if (OK)
            printf("S[x][%i] = %i\n", j, S);
    };
 
//б)    
    for (i=0; i<N; i++)
    {
        t[i]=1;
        for (j=0; j<N; j++)
            t[i]*=arr[i][j];
    };
    for (k=0; k<N; k++)  //Сортировка пузырьком
    {  
        for (i=N-1; i>k; i--) 
        {    
            if (t[i-1]<t[i]) 
            {
                x=t[i-1]; 
                t[i-1]=t[i]; 
                t[i]=x;
                for (j=0; j<N; j++)
                {
                    x=arr[i-1][j]; 
                    arr[i-1][j]=arr[i][j]; 
                    arr[i][j]=x;
                };
            };
        };
    };
    
    for (i=0; i<N; printf("\n"), i++)
        for (j=0; j<N; j++)
            printf("%3.2i ", arr[i][j]);
    
    system ("pause");
    return 0;
}
Yandex
Объявления
05.01.2011, 21:33     Многомерные массивы и строки.
Ответ Создать тему
Опции темы

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