Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
b0n4b
2 / 2 / 0
Регистрация: 16.11.2011
Сообщений: 100
#1

Лабораторная по массивам - C++

17.11.2011, 23:41. Просмотров 1414. Ответов 26
Метки нет (Все метки)

Здравствуйте. Нам задали лаб. работу по массивам, даже не знаю как должен выглядеть код программы.. Помогите...
Условие:
Пользователь вводит число с плавающей точкой (меньше 10 элементов)
Вывести на экран номер ошибки.
ошибка №1 - В числе не одна точка
ошибка №2 - В числе присутствуют символы, не являющиеся цифрами.
Например:
Я ввожу 6.454.543? мне должно вывести на экран "ошибка №1" и т.д.
Помогитее =(((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2011, 23:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Лабораторная по массивам (C++):

Лабораторная по массивам - C++
Дан одномерный массив А, состоящий из N элементов. Переписать в одномерный массив В все элементы, заключенные между максимальным и...

по массивам - C++
Для одномерного массива, состоящего из n вещественных чисел: а) найти минимальный по модулю элемент массива; б) вычислить сумму...

По массивам... - C++
Задан случайный массив. Нужно получить без повторений элементы, встречающиеся в массиве более одного раза. Вот что получилось: ...

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

Задача по массивам - C++
Помогите пожалуйста с задачей на с++ Количество студентов N=40. Имена студентов-символьный массив Nam. Каждый элемент-буква,код...

Задачи по массивам - C++
короч котаны есть проблема плохо разбираюсь в массивах, помогите кто чем смоЖет а?)) 2 задачи 1.Определить средний рост девочек, и...

26
R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
20.11.2011, 01:16 #16
Цитата Сообщение от b0n4b Посмотреть сообщение
Потом введу число?
Код C++
1
scanf ("%d", a);
Правда не уверен что так
Долее пойдёт цикл фор
Код C++
1
for (int i=0; i<10; i++)
C++
1
2
for(int i = 0; i < 10; i++)
   scanf("%c", &a);
1
b0n4b
2 / 2 / 0
Регистрация: 16.11.2011
Сообщений: 100
20.11.2011, 01:18  [ТС] #17
greshnikk, спасибо Вам))
Ещё хотелось бы узнать:
1. Как можно проверить наличие каких либо символов в последовательности?
2. Как работает счётчик? И как работать с ним?
0
greshnikk
31 / 31 / 0
Регистрация: 05.11.2008
Сообщений: 162
20.11.2011, 01:24 #18
Цитата Сообщение от R136a1 Посмотреть сообщение
C++
1
2
for(int i = 0; i < 10; i++)
   scanf("%c", &a);
Вводить по одному символу очень грубо, учитывая, что при этом время алгоритма сохранения введенных данных увеличивается с константного значения до линейного.
Также необходимо указать индекс массива, при занесении значений. Конструкция &a, сама по себе не корректна, так как идентификатор массива является указателем на первый элемент, то есть адресом. А вы еще и пытаетесь записать значение по адресу этого адреса. Если уж решили по 1 символу сохранять, тогда необходимо использовать конструкцию следующего типа:
C++
1
scanf("%c", &a[i]);
0
R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
20.11.2011, 01:26 #19
b0n4b,

1. в С++ для этого есть функция isalpha(), находится в cctype
2. счетчик это обычная переменная
0
greshnikk
31 / 31 / 0
Регистрация: 05.11.2008
Сообщений: 162
20.11.2011, 01:31 #20
Цитата Сообщение от b0n4b Посмотреть сообщение
1. Как можно проверить наличие каких либо символов в последовательности?
В цикле проверяем значение, содержащееся в массиве по заданному индексу. То есть
C++
1
if ((a[i] < '0') or (a[i] > '9'))
означает, что необходимо выполнить какие-либо действия, если символ не соответствует цифрам от 0 до 9.

Цитата Сообщение от b0n4b Посмотреть сообщение
2. Как работает счётчик? И как работать с ним?
При объявлении конструкции цикла с предусловием ее реализация выглядит следующим образом: for (начальная инициализация; условие перехода на новую итерацию цикла; действия при окончании очередной итерации цикла)
Например
C++
1
for (int i = 0; i < 10; ++i)
- объявляется переменная, существующая только в данном цикле, которая инициализируется значением 0. После этого проверяется условие и если оно истино, тогда выполняется тело цикла и затем выполняются действия, после прохождения очередной итерации цикла.
Следующий пример выводит на экран цифры от 0 до 9:
C++
1
2
for (int i = 0; i < 10; ++i)
  printf("%i", i);
соответственно, при каждой итерации цикла, значение переменной i, будет увеличиваться на единицу, фактически служа счетчиком, который мы использовали для вывода символов на экран.
1
R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
20.11.2011, 01:32 #21
Цитата Сообщение от greshnikk Посмотреть сообщение
тогда необходимо использовать конструкцию следующего типа:
Код C++
1
scanf("%c", a[i]);
Может так?
C
1
scanf("%c", &a[i]);
0
greshnikk
31 / 31 / 0
Регистрация: 05.11.2008
Сообщений: 162
20.11.2011, 01:38 #22
Цитата Сообщение от R136a1 Посмотреть сообщение
Может так?
C
1
scanf("%c", &a[i]);
Конечно, я слегка устал, не сразу заметил ошибку. Я ее исправил при повторном просмотре своего ответа, но видимо Вы начали ответ до того, как я ее исправил.
0
b0n4b
2 / 2 / 0
Регистрация: 16.11.2011
Сообщений: 100
20.11.2011, 11:39  [ТС] #23
Всё равно не получается написать программу. Ведь в условии сказано, что пользователь вводит число с плавающей точкой. Кол-во элементов меньше 10. Т.е. их может быть и 5 и 6.

Добавлено через 14 секунд
Как тогда поступить в этом случае?
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
20.11.2011, 12:46 #24
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
#include <iostream>
 
const int LENGTH = 10;
 
int main()
{
    char str[LENGTH];
    while(std::cout << "Enter the number:" << std::endl && std::cin >> str)
    {
        bool strHasPoint = false;
        for(int i = 0; str[i] != '\0'; ++i)
        {
            if(str[i] == '.')
            {
                if(strHasPoint)
                {
                    for(int j = 0; j < i; ++j)
                        std::cout << ' ';
                    std::cout << '^' << std::endl
                              << "Error #1: number already has point" << std::endl;
                    break;
                }
                else
                    strHasPoint = true;
            }
            else if((str[i] < '0') || (str[i] > '9'))
            {
                for(int j = 0; j < i; ++j)
                    std::cout << ' ';
                std::cout << '^' << std::endl
                          << "Error #2: incorrect symbol" << std::endl;
                    break;
            }
        }
        std::cout << std::endl;
    }
    return 0;
}
0
greshnikk
31 / 31 / 0
Регистрация: 05.11.2008
Сообщений: 162
20.11.2011, 18:50 #25
Цитата Сообщение от b0n4b Посмотреть сообщение
Как тогда поступить в этом случае?
Рассмотрим ситуацию, когда пользователь вводит количество символов, не превышающее возможное количество элементов в массиве. Если, после ввода такого числа, в отладчике посмотреть на массив, можно заметить, что после того, как закончились все введенные символы, идет символ с кодом 0, а затем идут случайные символы. Как Вы думаете, как можно это использовать в Вашей проблеме ?
0
b0n4b
2 / 2 / 0
Регистрация: 16.11.2011
Сообщений: 100
20.11.2011, 19:54  [ТС] #26
Блин... Я запутался и ничего не пойму... Давайте начнём с самого начала, и может быть лучше составить немного другой алгоритм?
Существует ли такой символ, который показывает принадлежность какого-либо символа к совокупности??
К примеру 4 принадлежит [1,2,3,4,5,6,7]
0
greshnikk
31 / 31 / 0
Регистрация: 05.11.2008
Сообщений: 162
20.11.2011, 20:04 #27
Цитата Сообщение от b0n4b Посмотреть сообщение
Существует ли такой символ, который показывает принадлежность какого-либо символа к совокупности??
К примеру 4 принадлежит [1,2,3,4,5,6,7]
Один из вариантов, который я предлагаю это проверять код символа. Если Вы посмотрите таблицу ASCII, то увидите, что цифры 1, 2 и т. д. расположены по порядку. Можно этим воспользоваться написав следующее:
Если код символа не меньше чем код символа 1 но не больше чем код символа 0, тогда это цифра. Таким образом мы проверим символ на принадлежность к цифрам.
0
20.11.2011, 20:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2011, 20:04
Привет! Вот еще темы с ответами:

задачи по массивам - C++
Доброго времени суток! Помогите с решением. Нужно использовать массивы. {a}_{1}, {a}_{2}, ... действительные числа {a}_{1}&gt;0 и...

Программа по массивам - C++
Ребя может кто помочь написать программу на экзамен. Вот задание: составить прогу для удвоения всех элементов двумерного массива А (размер...

Вопрос по Массивам. - C++
Всем Гуру и знатокам C++ Привет. Я хочу изучать язык С++, но он мне очень трудно потдаётся). Помогите пож-та: Я не могу составить...

Вопрос по массивам С++ - C++
Вот код: #include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; int main () { int a; for(int i=0; i&lt;=10; i++) //...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Опции темы

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