Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 31.01.2013, 20:55   #1
LuxMi
Новичок
 
Регистрация: 31.01.2013
Сообщений: 5
Репутация: 10
По умолчанию Отследить ошибку

Здравствуйте. Помогите, пожалуйста, отследить ошибку в коде.
struct Price
{
public string Tovar;
public string Postav;
public int cena;
public int kolichestvo;
}
static void Main(string[] args)
{
// int numtov = 2;
Price[] tovmas = new Price[2];
StreamReader sr = File.OpenText("Tovar.txt");

for (int i = 0; i < 2; i++)
{
tovmas[i].Tovar = sr.ReadLine();
tovmas[i].Postav = sr.ReadLine();
tovmas[i].cena = Convert.ToInt32(sr.ReadLine());
tovmas[i].kolichestvo = Convert.ToInt32(sr.ReadLine());
}
sr.Close();

for (int i = 0; i < 2; i++)
{
Console.WriteLine(tovmas[i].Tovar + " " + tovmas[i].Postav + " " + tovmas[i].cena + " " + tovmas[i].kolichestvo);
}
Console.ReadKey();
{
string query;
string query2;
int pr;

//while (true)
{
Console.WriteLine("Введите наименование товара:");
query = Console.ReadLine();
Console.WriteLine("Введите название поставщика:");
query2 = Console.ReadLine();

for (int i = 0; i <= 2; i++)
{
if (tovmas[i].Tovar == query)
{
Console.WriteLine(tovmas[i].Postav + " " + tovmas[i].cena + " " + tovmas[i].kolichestvo);
}
else
Console.WriteLine("Данного товара нет");

if (tovmas[i].Postav == query2)
{
pr = tovmas[i].cena * tovmas[i].kolichestvo;
Console.WriteLine(pr);
}
else
Console.WriteLine("Данного поставщика нет");
Console.ReadKey();
}

В конце компиляции 2 раза выводит строки "Данного товара нет" и "Данного поставщика нет", а должен только один раз. Что не так?
LuxMi вне форума   Ответить с цитированием
Старый 31.01.2013, 21:52   #2
phomm
personality
Профессионал
 
Аватар для phomm
 
Регистрация: 28.04.2009
Адрес: Тюмень
Сообщений: 2,855
Репутация: 1511

icq: 421049471
skype: phomm-
По умолчанию

Код оформляем по правилам - выделить и нажать кнопочку #
Код:

bool flag = False;
for (int i = 0; i <= 2; i++)
{
if (tovmas[i].Tovar == query)
{
Console.WriteLine(tovmas[i].Postav + " " + tovmas[i].cena + " " + tovmas[i].kolichestvo);
flag = True;
}
if(flag)
Console.WriteLine("Данного товара нет");

flag = False;
if (tovmas[i].Postav == query2)
{
pr = tovmas[i].cena * tovmas[i].kolichestvo;
Console.WriteLine(pr);
flag = True;
}
if(flag)
Console.WriteLine("Данного поставщика нет");

Переписать весь цикл вот так. За точность не ручаюсь, писал прямо тут.
phomm вне форума   Ответить с цитированием
Старый 31.01.2013, 22:04   #3
LuxMi
Новичок
 
Регистрация: 31.01.2013
Сообщений: 5
Репутация: 10
По умолчанию

Буду знать. Первый раз тут писала, так что приношу свои извинения.
Код переписала, но выдает ошибку, что "False" и "True" не существуют в текущем контексте.
LuxMi вне форума   Ответить с цитированием
Старый 31.01.2013, 22:55   #4
Abstraction
Профессионал
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,182
Репутация: 655
По умолчанию

Цитата:
Код переписала, но выдает ошибку, что "False" и "True" не существуют в текущем контексте.
Регистр. Имелись в виду константы true и false.
Abstraction вне форума   Ответить с цитированием
Старый 01.02.2013, 05:57   #5
phomm
personality
Профессионал
 
Аватар для phomm
 
Регистрация: 28.04.2009
Адрес: Тюмень
Сообщений: 2,855
Репутация: 1511

icq: 421049471
skype: phomm-
По умолчанию

Да, извините, что ввёл в заблуждение, запамятовал, что в шарпе они с маленькой буквы, приучил себя в дельфях все идентификаторы с большой буквы писать, тут вот автоматом проставил.
Да и вообще перепутал там по смыслу, не так интерпретировал {} - начало конец блока - много мелких косяков, ночь уж была, вот по нормальному переписал.
Код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        struct Price
        {
            public string Tovar;
            public string Postav;
            public int cena;
            public int kolichestvo;
        }
        static void Main(string[] args)
        {
            int numtov = 2;
            Price[] tovmas = new Price[numtov];
            StreamReader sr = File.OpenText("Tovar.txt");

            for (int i = 0; i < numtov; i++)
            {
                tovmas[i].Tovar = sr.ReadLine();
                tovmas[i].Postav = sr.ReadLine();
                tovmas[i].cena = Convert.ToInt32(sr.ReadLine());
                tovmas[i].kolichestvo = Convert.ToInt32(sr.ReadLine());
            }
            sr.Close();

            for (int i = 0; i < numtov; i++)
            {
                Console.WriteLine(tovmas[i].Tovar + " " + tovmas[i].Postav + " " + tovmas[i].cena + " " + tovmas[i].kolichestvo);
            }
            Console.ReadKey();

            string query;
            string query2;
            int pr;

            Console.WriteLine("Введите наименование товара:");
            query = Console.ReadLine();
            Console.WriteLine("Введите название поставщика:");
            query2 = Console.ReadLine();

            bool flagt = false;
            bool flagp = false;
            for (int i = 0; i < numtov; i++)
            {
                if (tovmas[i].Tovar == query)
                {
                    Console.WriteLine(tovmas[i].Postav + " " + tovmas[i].cena + " " + tovmas[i].kolichestvo);
                    flagt = true;
                }                
                if (tovmas[i].Postav == query2)
                {
                    pr = tovmas[i].cena * tovmas[i].kolichestvo;
                    Console.WriteLine(pr);
                    flagp = true;
                }
            }
            if(!flagt)
                Console.WriteLine("Данного товара нет");
            if(!flagp)
                Console.WriteLine("Данного поставщика нет");
            Console.ReadKey();
        }
    }
}

Обратите внимание, что изменил условие цикла , сделал i < numtov , иначе выход за диапазон. Вернул переменную для 2 - с ней удобнее. Переставил там-сям блоки и исправил свой косяк - забыл отрицание в условии.

Последний раз редактировалось phomm; 01.02.2013 в 06:21.
phomm вне форума   Ответить с цитированием
Старый 01.02.2013, 09:25   #6
LuxMi
Новичок
 
Регистрация: 31.01.2013
Сообщений: 5
Репутация: 10
По умолчанию

Все работает! Спасибо Вам большое!!!!!!!!!!!!!
LuxMi вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отследить программу Михаил Юрьевич Общие вопросы Delphi 6 09.09.2012 17:06
Отследить блок по id ZvEr_HaCkEr JavaScript, Ajax 2 09.01.2012 06:52
Отследить скринсейвер kosig Общие вопросы C/C++ 1 13.01.2011 03:32
Отследить проблему giarmul JavaScript, Ajax 0 09.08.2010 20:49
Отследить стринги san72 Общие вопросы Delphi 2 30.05.2009 17:40


05:11.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru