• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы ppolyakova
  • Дата начала
P

ppolyakova

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

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

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

цикл не работает потому, что если первый рабочий имеет не то имя, которое мы ввели - выведется ошибка )
аналогично второй и третий и т.п.

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

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

ppolyakova

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

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

rrrFer

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!