Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 11.05.2011
Сообщений: 71
1

Ввод информации в программу не ограничивается фиксированным числом

11.01.2013, 23:17. Просмотров 359. Ответов 2
Метки нет (Все метки)


Существует условие, что данные о заработной плате и тому подобному должны выводится 10 раз, после этого функция displaydata выводит всю выше введенную информацию. Но только почему то данные вводятся до бесконечности, и не чего не происходит. Хотя в функции main прописан массив который ограничивает число ввода данных.
Вообщем, подскажите пожалуйста что нужно исправить что бы информация вводилась 10 раз и после этого все выше введенное аккуратненько выводилось.)
Вот код:

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
73
74
75
76
77
78
79
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <conio.h>
using namespace std;
 
 
class zarplata
{
public:
    int tabnom; 
        //[10];
    char fioR[128];
    int oplCh;
    int dayOt;
    int rezultat;
    int prem;
 
};
 
 
int getdata (zarplata & zp)
{
 
    char ch;
    int  i=1;
    
        
    setlocale (LC_ALL,".1251");
    cout << "Введите табельный номер работника = ";
    cout << "Введите ФИО работника = ";
    cin >> zp.fioR;
    cout << "Введите оплату за один час работы = ";
    cin >> zp.oplCh;
    cout << "Введите количество отработанных дней = ";
    cin >> zp.dayOt;
    cout << "Введите сумму премии =  ";
    cin >> zp.prem;
    zp.rezultat=(zp.oplCh*8*zp.dayOt)+zp.prem;
    cout << "Заработная оплата работника с табельным номером: "<<zp.tabnom<< " равна = "<< zp.rezultat<<endl;
    
    return 1;
}
/////////////////////////
void displaydata (zarplata & zp)
{
    cout << zp.tabnom
        <<" "
        <<zp.oplCh
        <<" "
        <<zp.dayOt
        <<" "
        <<zp.prem
        <<" "
        <<zp.rezultat
        <<" "<<endl;
 
}
 
int main ()
{
    const int MAX = 10;
    zarplata zp [MAX];
     
    int index = 0;
    while (getdata(zp[index]) && index <MAX) 
    
    {
        index++;
    }
    
    for (int i=0; i<index; i++)
    {
        displaydata(zp[i]);
        
 
    }
    return 0;
}
Что бы было легче понять чего я добиваюсь, вот полноценное условие с лабы:

1. Создать класс с именем ZARPLATA, содержащий следующие поля:
• табельный номер;
• фамилия И.О. работника;
• оплата за один час работы;
• количество обработанных дней;
• премия.
2. Написать программу, реализующую следующие методы, определенные вне класса:
• ввод с клавиатуры данных в массив, состоящий из десяти объектов (работников) класса ZARPLATA;
• рассчитать зарплату каждого работника за месяц;
• вывести на экран ведомость начисления заработной платы. Записи должны быть размещены в алфавитном порядке по фамилиям.
3. Предусмотреть конструктор без аргументов и деструктор (для двух последних объектов конст-руктор с аргументами).

Заранее спасибо)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.01.2013, 23:17
Ответы с готовыми решениями:

Вывод переменных с фиксированным числом знаков
Здравствуйте, подскажите как мне лучше вывести в консоль две переменные в одну строку с...

Триггер где ввод данных в таблицу ограничивается определеннымми символами
Здравствуйте, нужна помощь по написанию триггера. Задание: Реализовать триггер с помощью...

Получение итогового значения с строго фиксированным числом знаков после запятой
Всем доброго дня. Обучаюсь, выполняю упражнение по запросам к БД. Исходные данные по двум...

Составить программу, которая обеспечивает ввод полученной информации и ее распечатку...
Распечатать анкетные данные студентов, получивших одну оценку 3 за все время обучения.

2
273 / 241 / 56
Регистрация: 29.05.2012
Сообщений: 889
11.01.2013, 23:20 2
C++
1
2
3
4
while (getdata(zp[index]) && (index < MAX))
    {
        index++;
    }
У операции && больший чем у < приоритет, поэтому index < MAX нужно взять в скобки.
0
0 / 0 / 0
Регистрация: 11.05.2011
Сообщений: 71
11.01.2013, 23:41  [ТС] 3
спасибо ) появилась правда новая проблема, я пока счетчик уменьшила с 10 на 3, но почему то вводится информация 4 раза ( а не три, но тут проблема наверно в том что счет начинается с 0), затем программа аварийно завершается, но результат выводится о первых трех введенных данных, то что вводили 4 раз не вывело(
И стрелочка указывает на последнею строчку кода , т.е. на закрывающеюся фигурную скобку
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.01.2013, 23:41

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Составить программу,в которой предусмотреть ввод исходной информации о четырех студентах
Составить программу,в которой предусмотреть ввод исходной информации о четырех студентах: -фамилия...

Структуры. Составить программу, в которой предусмотреть ввод исходной информации о четырех студентах
Составить программу, в которой предусмотреть ввод исходной информации о четырех студентах:...

Создать таблицу. Составить программу, которая обеспечит ввод полученной информации и печать результатов
Составить список учебной группы, включающей 7 человек. Для каждого студента указать номер, фамилию,...

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


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

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

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