Нужно Найти Ошибку В Цикле

Тема в разделе "C/C++/C#", создана пользователем ppolyakova, 20 окт 2013.

  1. ppolyakova

    ppolyakova New Member

    Регистрация:
    20 окт 2013
    Сообщения:
    4
    Симпатии:
    0
    Формулировка задания:
    Имеются данные об изготовлении изделий рабочими участка: ФИО, количество изготовленных деталей, количество бракованных деталей. Рассчитать ведомость годных деталей для рабочего, задаваемого по запросу.

    //файл заголовков TPlab2_3.h
    #include <iostream>
    using std::cin;
    using std::cout;
    #include <iomanip>
    using std::setw;
    using std::setprecision;
    const int max_rab=100;
    void vvod1(int n, char m1[][20]);
    void vvod2(int n, int m2[]);
    void vvod3(int n, int m3[]);
    void vyvod(int n, char f[1][20], char m1[][20], int m2[], int m3[]);
    char menu();

    //файл кодов TPlab2_3.cpp
    #include "stdafx.h"
    #include "TPlab2_3.h"
    int _tmain(int argc, _TCHAR* argv[])
    {
    char selector;
    do
    {
    selector=menu();
    }
    while(selector!='0');
    return 0;
    }
    char menu()
    {
    char ch;
    static char fio[max_rab][20];
    static char one[1][20];
    static int vsego[max_rab];
    static int brak[max_rab];
    static int kol;
    cout<<'\t'<<"MENU\n\n";
    cout<<'\t'<<"1 Vvod dannyx\n\n";
    cout<<'\t'<<"2 Vyvod rezultatov\n\n";
    cout<<'\t'<<"0 Vyxod\n\n";
    cout<<'\t'<<"Vash vybor: ";
    cin>>ch;
    switch(ch)
    {
    case '1': cout<<"Vvedite kolichestvo rabochix:";
    cin>>kol;
    vvod1(kol, fio);
    vvod2(kol, vsego);
    vvod3(kol, brak);
    break;
    case '2': vyvod(kol, one, fio, vsego, brak);
    break;
    case '0': break;
    }
    return (ch);
    }

    //файл кодов TPlab2_3f.cpp
    #include "stdafx.h"
    #include "TPlab2_3.h";
    void vvod1(int n, char m1[][20])
    {
    for(int i=0; i<n; i++)
    {
    cout<<"Fio rabochego "<<i+1<<':';
    cin>>m1;
    }
    return;
    }
    void vvod2(int n, int m2[])
    {
    for(int i=0; i<n; i++)
    {
    cout<<"Kolichestvo izgotov. detal "<<i+1<<':';
    cin>>m2;
    }
    return;
    }
    void vvod3(int n, int m3[])
    {
    for(int i=0; i<n; i++)
    {
    cout<<"Kolichestvo brakovan. detal "<<i+1<<':';
    cin>>m3;
    }
    return;
    }
    void vyvod(int n, char f[1][20], char m1[][20], int m2[], int m3[])
    {
    int godn;
    int ch;
    cout<<"FIO:";
    cin>>f[1];
    //cout<<"\t Fio\t izgot.det.-brak\n\n";
    for(int i=0;i<n;i++)
    if(m1==f[1]){
    godn=(m2-m3);
    cout<<'\t'<<m1<<'\n';
    cout<<'\t'<<setw(8)<<setprecision(2)<<godn<<'\n';
    }
    else{
    cout<<'\t'<<"Oshibka"<<'\n';
    }
    cout<<"Konec vyvoda";
    }

    Не работает последний цикл и следовательно, не выводится ответ. Помогите, пожалуйста, найти ошибку! :(
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Код (Text):
    //файл заголовков TPlab2_3.h
    #include <iostream>
    using std::cin;
    using std::cout;
    #include <iomanip>
    using std::setw;
    using std::setprecision;
    const int max_rab=100;
    void vvod1(int n, char m1[][20]);
    void vvod2(int n, int m2[]);
    void vvod3(int n, int m3[]);
    void vyvod(int n, char f[1][20], char m1[][20], int m2[], int m3[]);
    char menu();

    int main()
    {
    char selector;
    do
    {
    selector=menu();
    }
    while(selector!='0');
    }
    char menu()
    {
    char ch;
    static char fio[max_rab][20];
    static char one[1][20];
    static int vsego[max_rab];
    static int brak[max_rab];
    static int kol;
    cout<<'\t'<<"MENU\n\n";
    cout<<'\t'<<"1 Vvod dannyx\n\n";
    cout<<'\t'<<"2 Vyvod rezultatov\n\n";
    cout<<'\t'<<"0 Vyxod\n\n";
    cout<<'\t'<<"Vash vybor: ";
    cin>>ch;
    switch(ch)
    {
    case '1': cout<<"Vvedite kolichestvo rabochix:";
    cin>>kol;
    vvod1(kol, fio);
    vvod2(kol, vsego);
    vvod3(kol, brak);
    break;
    case '2': vyvod(kol, one, fio, vsego, brak);
    break;
    case '0': break;
    }
    return (ch);
    }

    void vvod1(int n, char m1[][20])
    {
    for(int i=0; i<n; i++)
    {
    cout<<"Fio rabochego "<<i+1<<':';
    cin>>m1[i];
    }
    return;
    }
    void vvod2(int n, int m2[])
    {
    for(int i=0; i<n; i++)
    {
    cout<<"Kolichestvo izgotov. detal "<<i+1<<':';
    cin>>m2[i];
    }
    return;
    }
    void vvod3(int n, int m3[])
    {
    for(int i=0; i<n; i++)
    {
    cout<<"Kolichestvo brakovan. detal "<<i+1<<':';
    cin>>m3[i];
    }
    return;
    }
    void vyvod(int n, char f[1][20], char m1[][20], int m2[], int m3[])
    {
    int godn;
    int ch;
    cout<<"FIO:";
    cin>>f[1];
    //cout<<"\t Fio\t izgot.det.-brak\n\n";
    for(int i=0;i<n;i++)
    if(m1[i]==f[1]){
    godn=(m2[i]-m3[i]);
    cout<<'\t'<<m1[i]<<'\n';
    cout<<'\t'<<setw(8)<<setprecision(2)<<godn<<'\n';
    }
    else{
    cout<<'\t'<<"Oshibka"<<'\n';
    }
    cout<<"Konec vyvoda";
    }
    цикл не работает потому, что если первый рабочий имеет не то имя, которое мы ввели - выведется ошибка )
    аналогично второй и третий и т.п.

    Добавлено: хотя нет - не так.
    Я вообще не понимаю чего вы хотите сделать в этом цикле ))

    расскажите нам условие задачи
     
  3. ppolyakova

    ppolyakova New Member

    Регистрация:
    20 окт 2013
    Сообщения:
    4
    Симпатии:
    0
    Формулировка задания:
    Имеются данные об изготовлении изделий рабочими участка: ФИО, количество изготовленных деталей, количество бракованных деталей. Рассчитать ведомость годных деталей для рабочего, задаваемого по запросу.
    "Oshibka" выводится при любом имени, введенном в f[1], в этом и заключается проблема.
    В последнем цикле я ввожу имя
    cout<<"FIO:";
    cin>>f[1];

    далее сравниваю f1 с имеющимися элементами в массиве m1, если такое есть, оно должно вывестись на экран, а также количество годных деталей, которые сделал этот рабочий по формуле godn=(m2-m3);
    Но выводится просто "Oshibka".
     
  4. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    задание не на тему "Структуры", случайно?
    наверняка надо использовать ключевое слово struct?
     
  5. ppolyakova

    ppolyakova New Member

    Регистрация:
    20 окт 2013
    Сообщения:
    4
    Симпатии:
    0
    нет, до структур мы по программе еще не дошли :(
     
  6. ppolyakova

    ppolyakova New Member

    Регистрация:
    20 окт 2013
    Сообщения:
    4
    Симпатии:
    0
    Есть еще какие-нибудь соображения по этому поводу?
     
Загрузка...

Поделиться этой страницей