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

ppolyakova

New member
20.10.2013
4
0
#1
Формулировка задания:
Имеются данные об изготовлении изделий рабочими участка: ФИО, количество изготовленных деталей, количество бракованных деталей. Рассчитать ведомость годных деталей для рабочего, задаваемого по запросу.

//файл заголовков 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";
}

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

rrrFer

#2
Код:
//файл заголовков 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";
}
цикл не работает потому, что если первый рабочий имеет не то имя, которое мы ввели - выведется ошибка )
аналогично второй и третий и т.п.

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

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

ppolyakova

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

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

rrrFer

#4
задание не на тему "Структуры", случайно?
наверняка надо использовать ключевое слово struct?