Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> "Ламерские" вопросы, задаем здесь элементарные вопросы 
:(
    Опции темы
myendlessness
Дата 26.11.2010, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 8.8.2008

Репутация: нет
Всего: нет



Цитата(nmn @ 25.11.2010,  18:34)
скобки тут не надо

спасибо большое, десять раз смотрел и не увидел скобок, мда бывает туман в сознании, ещё раз спасибо!
PM MAIL   Вверх
A5uKa
  Дата 26.11.2010, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 3
Всего: 16



C# Record-классы. Бессмысленные и беспощадные  smile 
PM   Вверх
SP7
Дата 28.11.2010, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.10.2010

Репутация: нет
Всего: нет



Всем привет.Помогите пожалуйста.
В кратце о задаче,сделал простенький пример чтобы проще было разобраться.Условие задачи:
Мы предлагаем пользователю ввести число, после этого спрашиваем будем ли мы продолжать.Если "Да" нажимаем "y" продолжаем ввод числа.Если нажали "Нет"("n")- то выводим сумму этих чисел и предлагаем ввести второе число.Далее алгоритм работы по второму числу аналогичен первому,но только в конце мы еще считаем и выводим сумму первого и второго числа.Но не это важно, проблема в следующем:
В программе у меня есть условие:
Код

 if (question[0] != 'y' || question[0] != 'n' || question[0] != 'Y' || question[0] != 'N')
                        {
                            Console.WriteLine("Вы ошиблись при нажатии клавиши!");
                        }
 
где происходит сравнение на нажатый с клавиатуры символ и если он не равен  'y'  'Y' для варианта ответа "Да"  и  'n'  'N' для варианта ответа "Нет" , то выводим сообщение "Вы ошиблись при нажатии клавиши!" Но у меня почему-то это сообщение выводится даже тогда,когда мы ввели верный символ.Почему так происходит,что нужно поправить в коде?



Код программы полностью:
Код


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

namespace Condition
{
    class Program
    {
        static void Main(string[] args)

        {
            Console.WriteLine("Привет");
            int total; // подсчет итоговой суммы
            string question; // сюда попадает вводимый пользователь символ

            int sumA = 0; // общая сумма первых чисел
            do
            {
                string a;
                Console.Write("Введите 1 число: ");
                a = Console.ReadLine();

                int aInt;
                int.TryParse(a, out aInt); // парсируем строку в число
                sumA += aInt; // подсчет суммы первых чисел


                // просим пользователя продолжить 
                do
                {
                    Console.Write("\nПродолжить ввод записей?\nДа - нажми (y) Нет - нажми (n): ");
                    question = Console.ReadLine();
                    Console.WriteLine();


                    // если мы ошиблись при вводе символа
                    if (question[0] != 'y' || question[0] != 'n' || question[0] != 'Y' || question[0] != 'N')
                    {
                        Console.WriteLine("Вы ошиблись при нажатии клавиши!");
                    }
                }
                while(question[0] != 'y' && question[0] != 'n' && question[0] != 'Y' && question[0] != 'N');    
            }
            while (question[0] == 'y' || question[0] == 'Y');
            Console.WriteLine("Сумма первых чисел: " + sumA);
            Console.WriteLine();

            int sumB = 0; // общая сумма вторых чисел
            do
            {
                string b;
                Console.Write("Введите 2 число: ");
                b = Console.ReadLine();

                int bInt;
                int.TryParse(b, out bInt); // парсируем строку в число
                sumB += bInt; // подсчет суммы вторых чисел


                    // просим пользователя продолжить 
                    do
                    {
                        Console.Write("\nПродолжить ввод записей?\nДа - нажми (y) Нет - нажми (n): ");
                        question = Console.ReadLine();
                        Console.WriteLine();


                        // если мы ошиблись при вводе символа
                        if (question[0] != 'y' || question[0] != 'n' || question[0] != 'Y' || question[0] != 'N')
                        {
                            Console.WriteLine("Вы ошиблись при нажатии клавиши!");
                        }
                    }
                    while (question[0] != 'y' && question[0] != 'n' && question[0] != 'Y' && question[0] != 'N');
               
            }
            while(question[0] == 'y' || question[0] == 'Y');

            Console.WriteLine("Сумма вторых чисел: " + sumB);
            Console.WriteLine();


            total = sumA + sumB; // считаем общюю сумму
            Console.WriteLine("Итого общая сумма: " + total);
            Console.ReadKey();
        }
    }
}



Это сообщение отредактировал(а) SP7 - 28.11.2010, 09:38
PM MAIL   Вверх
wester
Дата 28.11.2010, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 675
Регистрация: 27.2.2009

Репутация: 3
Всего: 13



SP7
замечание к первому сорцу - 
воспользуйтесь методом ToLower() , ибо это тру
вот, как надо писать в c# -style
Код

using System;

namespace Condition
{
    class Program
    {
        /// <summary>
        /// Выдаем корректный ответ
        /// </summary>
        /// <param name="val"></param>
        /// <returns></returns>
        static String RetQ(String val)
        {
            if(val.Length==1)
            {
                return val;
            }
            var temp = val.Remove(1);
            temp = temp.ToLower();
            return temp;
        }

        static void Main()
        {
            Console.WriteLine("Привет");
            int total =0;
                total+= Work(1); // первые введенные числа
            total += Work(2);     // соответственно вторые

            Console.WriteLine("Итого общая сумма: " + total);
            Console.ReadKey();
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="loop">необходима для определения итерации</param>
        /// <returns></returns>
        static Int32 Work(int loop )
        {

            string question; // сюда попадает вводимый пользователь символ
            var sum = 0; // общая сумма первых чисел
            do
            {
                if (loop == 1)
                {
                    Console.Write("Введите 1 число: ");
                }
                else if (loop==2)
                {
                    Console.Write("Введите 2 число: ");
                }
                var a = Console.ReadLine();
                int aInt;
                var getExc = int.TryParse(a, out aInt); // парсируем строку в число
                if (getExc == false) // проверям на исключение
                {
                    throw new Exception("невозможно привести переменную  к типу Int32");
                }
                sum += aInt; // подсчет суммы первых чисел
                // просим пользователя продолжить 
                do
                {
                    Console.Write("\nПродолжить ввод записей?\nДа - нажми (y) Нет - нажми (n): ");
                    question = Console.ReadLine();
                    Console.WriteLine();
                    question = RetQ(question);
                    // если мы ошиблись при вводе символа
                    if (question != "n" && question != "y")
                    {
                        Console.WriteLine("Вы ошиблись при нажатии клавиши!");
                    }
                } while (question != "n" && question != "y");
            } while (question == "y");

            if (loop == 1)
            {
                Console.WriteLine("Сумма первых чисел: {0}\n", sum);
            }
            if(loop==2)
            {
                Console.WriteLine("Сумма вторых чисел: " + sum);
            }
            return sum;
        }
    }
}


Это сообщение отредактировал(а) wester - 28.11.2010, 17:41
PM MAIL   Вверх
gambit
Дата 28.11.2010, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 3
Всего: 40



Код

int.TryParse(a, out aInt);

Почему ты используешь tryParce, но вообще никак не реагируешь, на то, что он может вернуть false, это очень плохо.

Вообще в целом код стоит пересмотреть. А конкретно на твой вопрос, попробуй свой один if, развернуть в 4, и ты поймешь, что твое условие невыполнимо.

Вот он развернутый
Код

 if (question != "y")
                    {

                    }
                    else
                    {
                        if (question != "n")
                        {

                        }
                        else
                        {
                            if (question != "Y")
                            {

                            }
                            else
                            {
                                if (question != "N")
                                {

                                }
                                else
                                {
                                    Console.WriteLine("Вы ошиблись при нажатии клавиши!");
                                }
                            }
                        }
                    }

PM MAIL ICQ Skype   Вверх
bigbuka
Дата 28.11.2010, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 1.10.2009

Репутация: нет
Всего: нет



std::list<String^> hosts;
if (IPAddress::TryParse(file[i],  tmp)) { hosts.push_back( file[i]);}
error C2664: 'std::list<_Ty>::push_back' : cannot convert parameter 1 from 'System::String ^const ' to 'System::String ^const &'
const_cast не помогает
как подправить подскажите?
PM MAIL   Вверх
gambit
Дата 28.11.2010, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 3
Всего: 40



Кстати этот косяк у тебя только в одном месте, в остальных праивльно написано &&.

Но еще раз говорю, пересмотри код, это безумие.

Добавлено через 33 секунды
bigbuka, а при чем тут .net???
PM MAIL ICQ Skype   Вверх
bigbuka
Дата 28.11.2010, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 1.10.2009

Репутация: нет
Всего: нет



ну вроди как System::String и IPAddres относится к .Net
следовательно и преобразование типов этих относится к .Net

Это сообщение отредактировал(а) bigbuka - 28.11.2010, 17:33
PM MAIL   Вверх
wester
Дата 28.11.2010, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 675
Регистрация: 27.2.2009

Репутация: 3
Всего: 13



PM MAIL   Вверх
SP7
Дата 28.11.2010, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.10.2010

Репутация: нет
Всего: нет



wester и gambit, спасибо за ответы.

Цитата(gambit @  28.11.2010,  17:28 Найти цитируемый пост)
Кстати этот косяк у тебя только в одном месте, в остальных праивльно написано &&.

Да,не заметил это.Уже глаза заплыли от кода.

Цитата(gambit @  28.11.2010,  17:28 Найти цитируемый пост)
Но еще раз говорю, пересмотри код, это безумие.

Я понимаю что мой код не грамотный, но я еще новичок и мне многое дается с трудом.

P.S. Ребята,немного другой вопрос.Не подскажите как в VS2010 Express включить отображение номера строки кода.А то по настройкам пробежался не нашел.

Это сообщение отредактировал(а) SP7 - 28.11.2010, 22:26
PM MAIL   Вверх
wester
Дата 29.11.2010, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 675
Регистрация: 27.2.2009

Репутация: 3
Всего: 13



под рукой только русская версия 2010
сервис -> параметры -> текстовый редактор -> С# и кликаем по чекбоксу "номера строк"
PM MAIL   Вверх
gambit
Дата 29.11.2010, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 3
Всего: 40



Цитата(wester @  29.11.2010,  00:43 Найти цитируемый пост)
под рукой только русская версия 2010

в англ это вот:
user posted image
PM MAIL ICQ Skype   Вверх
SP7
Дата 29.11.2010, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.10.2010

Репутация: нет
Всего: нет



westergambit, еще раз спасибо.Все нашел эту опцию.
PM MAIL   Вверх
cream
Дата 20.12.2010, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 23.7.2010

Репутация: 1
Всего: 1



Доброго времени суток.
Подскажите, пожалуйста, как из
Код

System::Object^  sender

обработчика событий для TextBox-a получить свойство "Text"?
Событие - "TextChanged".

И второй вопрос: как можно сделать обработку большого количества текстбоксов (10)?
Нужно загнать данные из них в массив.


1-ый вопрос решен.

Это сообщение отредактировал(а) cream - 21.12.2010, 00:49
PM MAIL   Вверх
Track
Дата 22.12.2010, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 18.2.2010

Репутация: нет
Всего: нет



Использую такие строки в функции получения Thumbnails для файлов 
Код

Dim uFlags As Integer = IEIFLAG.IEIFLAG_SCREEN
extractImage.GetLocation(location, location.Capacity, priority, ImgSize, requestedColorDepth, uFlags)

В WinXP картинки отображаются нормально а в Win7 некоторые картинки показываются меньшего размера чем указано в ImgSize.
При использовании IEIFLAG_ASPECT в Win7 картинки просто растягиваются.
На странице MSDN ничего  подходящего больше не вижу
Поиск тоже ничего не дал.

Вот собственно вся функция
Код


    Public Shared Function ExtractThumbNail(ByVal file As CShItem, ByVal ImgSize As Size) As Bitmap

        Dim thumbnailImage As Bitmap = Nothing
        Dim hBmp As IntPtr = IntPtr.Zero
        Dim extractImage As IExtractImage = Nothing
        Dim iunk As IUnknown = Nothing
        Dim pidl As IntPtr = IntPtr.Zero
        Dim folder As IShellFolder = CShItem.GetParentOf(file.PIDL, pidl)
        Try
            Dim prgf As Integer = 0
            Dim iidExtractImage As Guid = New Guid(GUID_IEXTRACTIMAGE)
            Dim hr As Integer = folder.GetUIObjectOf(IntPtr.Zero, 1, New IntPtr() {pidl}, iidExtractImage, prgf, iunk)
            If Not hr = 0 Then
                Marshal.ThrowExceptionForHR(hr)
            End If
            extractImage = CType(iunk, IExtractImage)

            If (extractImage IsNot Nothing) Then
                Dim location As New StringBuilder(260, 260)

                Dim priority As Integer = 0

                Dim requestedColorDepth As Integer = 24
 
                Dim uFlags As Integer = IEIFLAG.IEIFLAG_SCREEN

                extractImage.GetLocation(location, location.Capacity, priority, ImgSize, requestedColorDepth, uFlags)

                extractImage.Extract(hBmp)
                If (hBmp <> IntPtr.Zero) Then
                    thumbnailImage = Bitmap.FromHbitmap(hBmp)
                End If
                Return thumbnailImage
            Else
                Return Nothing
            End If
        Catch ex As Exception
            Return Nothing
        Finally
            If (hBmp <> IntPtr.Zero) Then DeleteObject(hBmp)
            If (iunk IsNot Nothing) Then
                Marshal.ReleaseComObject(iunk)
                iunk = Nothing
            End If

            If (extractImage IsNot Nothing) Then
                Marshal.ReleaseComObject(extractImage)
                extractImage = Nothing
            End If
            pidl = IntPtr.Zero
        End Try
    End Function

Заранее благодарю.
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1264 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.