Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2014, 00:28   #1
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию Работа со строками, как найти максимальное число? СИ

РЕбят. Еще раз привет всем. Посмотрите код моей первой задачи, можно ли написать без ifа?. Суть такая: Дана строка символов, найти количество слов в ней, начинающихся с заданной буквы алфавита

Код:
#include <QCoreApplication>
#include <string.h>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    int count=0;
    char str1[255],str2;
    printf("BBEDITE Stroki\n");
    gets(str1);
    strcat(str1,".");
    printf("BBedite bukvu alphavita...");
    scanf("%c",&str2);

    if (str1[0]!=str2) count--;
    else count=0;

    for(int i=0;i<strlen(str1)-1;i++)

        count+= ((str1[i]==str2)&&(str1[i-1]==' ')||(i==0));


    printf("%d",count);
    return a.exec();
}

А вот со второй задачей вообще проблемы, я хотел решить ее через цикл пока не пробел, затем записать посимвольно в строковую переменную, преобразовать в целое и записать в массив целых чисел для поиска максимума, но преподаватель сказал что нужно без преобразования обойтись. В общем самое главное, помогите кто-нибудь, пожалуйста.

Дана строка чисел, разделенных пробелами, найти самое большое число.
Гарантируется, что кроме чисел и пробелов строке нет больше ничего.
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 18.12.2014, 07:40   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
можно ли написать без ifа?
А зачем?...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.12.2014, 08:46   #3
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Хотел как-нибудь поместить условие в строку, где проверяется условие и наращивается count при истине

разве можно найти максимальное число, используя только string.h?

Код:
#include <QCoreApplication>
#include <iostream>
#include <algorithm>

using namespace std;

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    int a1, b, c;
    cin >> a1 >> b >> c;
    cout << "Min: " << min(a1, min(b, c)) << endl;
    cout << "Max: " << max(a1, max(b, c)) << endl;
    cin.get();

    return a.exec();
}
Вот нашел где-то на форуме, но она выбирает максимум только из первых трех вхождений, как это исправить?
from dark to light)

Последний раз редактировалось Stilet; 18.12.2014 в 09:50.
Алексей_2012 вне форума Ответить с цитированием
Старый 18.12.2014, 09:53   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Хотел как-нибудь поместить условие в строку, где проверяется условие и наращивается count при истине
Дак вроде твое
Цитата:
count+= ((str1[i]==str2)&&(str1[i-1]==' ')||(i==0));
вполне резонно...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.12.2014, 10:27   #5
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Если убрать костыль с if,ами, то при вводе кириллицы например
"шла саша по шос се и сосала сушку", при вводе буквы "с"-будет выдан ответ 5, а не 4.
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 18.12.2014, 11:02   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А че ты string не юзаешь?
Это же QT? Юзай его плюшки, там же удобств хватает.
Тем паче что по моему мнению Кутья под юникод заточена...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.12.2014, 23:48   #7
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Нужно использовать методы из модуля string.h, а strings вроде в с++. Сорь, пока многое чего пытаюсь понять. Готовлюсь к сессии, периодически буду решать задачи со строками, именно с ними дабы понять суть, если что не понятно-буду тут спрашивать, в этой теме
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 19.12.2014, 00:51   #8
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

А как найти подстроку в строке? Есть ли аналог pos? То есть допустим есть фраза, а мне нужно выяснить позицию пробелов. Или это через цикл делается? Чем отличается запись

Могу ли я записать примерно так

Var
S,sw: string;
...
S:='123...a...z..A...Z';


Затем склеить char строки между собой?
sw:='';
Sw:=sw+s+'что-то';

Киньте пару сишных примеров, пожалуйста.
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 19.12.2014, 01:52   #9
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Цитата:
Сообщение от Алексей_2012 Посмотреть сообщение
А как найти подстроку в строке? Есть ли аналог pos?
функция strstr: https://ru.wikipedia.org/wiki/String.h
Цитата:
Сообщение от Алексей_2012 Посмотреть сообщение
Затем склеить char строки между собой?
Функция strcat.

Обычными "+" конкантенация строк в Си невозможна, потому что в Си как таковых строк не существует, для их имитации используют массивы символов. Массивы обрабатывают с помощью указателей (тип "char *").

Цитата:
Киньте пару сишных примеров, пожалуйста.
"Язык программирования Си" Кернигана и Ритчи скачайте и гляньте в главе 1 разделы 5-10 (тут даются простые, но важные примеры с подробными объяснениями: "подсчёт литер\строк\слов"), а также главу 5 "Указатели и массивы". Сразу всё прояснится.
^-.-^ My GitHub

Последний раз редактировалось Fenex; 19.12.2014 в 02:08.
Fenex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти максимальное число valerij Microsoft Office Excel 2 21.11.2012 01:10
Найти максимальное число! Артем1904 Помощь студентам 9 15.12.2011 22:22
Необходимо найти максимальное число Vceznayka Microsoft Office Excel 3 22.11.2011 12:11
Найти максимальное число в последовательности vladoscom93 Паскаль, Turbo Pascal, PascalABC.NET 11 14.12.2010 21:43
Найти максимальное число.Паскаль. Karabas Паскаль, Turbo Pascal, PascalABC.NET 2 16.12.2008 21:13