Ir para conteúdo
joao569

AJUDA SUDOKU

Recommended Posts

O Sudoku é um passatempo, pra ser jogado por apenas uma pessoa, que envolve raciocínio e lógica. A ideia do jogo é bem simples: completar todas as 81 células usando números de 1 a 9, sem repetir os números numa mesma linha, coluna ou grade (3x3).

Nesse sentido, elabore um algoritmo utilizando como modelo o tabuleiro abaixo.

  • O usuário informará as coordenadas para as quais deseja efetuar a jogada (ex. linha 1, coluna 2)
  • Posteriormente, o usuário, informará o número a ser testado (ex. 3)
  • De acordo com a situação corrente do tabuleiro, o algoritmo deverá testar se o número informado é permitido ou não.
  • Desafio 1: não permitir a inserção de números que irão comprometer a solução final do Sudoku.
  • Desafio 2: gerar o tabuleiro aleatóriamente.
Inicialmente utilize o tabuleiro abaixo para elaborar o seu algoritmo.
verImagem?salvar=false&idArquivo=235560&key=ebbfcee1d8be38ebd7d6c7bd5ae59ae9
 
 
 
O CÓDIGO  QUE EU JA TENHO
 

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

#define TAM 3

struct dados_do_quadrante{
    int q[TAM][TAM];
};

struct dados_do_quadrante quadrante[9];

void main(){
    popularTabuleiro();
    gerarJogo();
    imprimirTabuleiro();
 return;
}

void popularTabuleiro(){
    int i, j, k;

    //controla o quadrante
    for(i = 0; i < 9; i++){
        //controla as linhas
        for(j = 0; j < TAM; j++){
            //controla as colunas
                for(k = 0; k < TAM; k++){
                        quadrante.q[j][k]=0;
                }
          }
    }
    return;
}
void gerarJogo(){
    int i, j, k, l;
    int valores[4];
    int posicoes[4];
    int v;
    int flag;//vale 0 ou 1

    srand(time(NULL));

    //controla cada quadrante
    for(i = 0; i < 9; i++){
    //ARMAZENAR 4 NUMEROS NO VETOR
    for(j = 0; j < 4; j++){
        flag = 0;
        do{
            //gera numero de 1 a 9 randomico
            v = rand() % 9;

            //teste do valor gerado
            for(k = 0; k < 4; k++){
            //se ja existir quebra o laço e gera um novo valor
            if(v == valores[j]){
                flag = 1;
                break;
            }
            flag = 0;
            }
        }while(flag);
        valores[j] = v;
    }
    for(l = 0; l < 4; l++ ){
        quadrante.q[rand() % 3 - 1][rand() % 3 -1] = valores[l];
    }
    }
    return;

}

void imprimirTabuleiro(){
    int i, j, k;
    int valores[4];


     //controla cada quadrante
    for(i = 0; i < 9; i++){
            printf("\n +---+---+---+---+---+---+---+---+---+\n");
            //controla as linhas
            for(j = 0; j < TAM; j++){
                    //controla as colunas
                    for (k = 0; k < TAM; k++){
                            if(quadrante.q[j][k] == 0 ){
                                printf(" |  ");
                            }else{
                            printf(" | %d", quadrante.q[j][k] );
                            }

                    }

    }
    printf(" |");
    }
    printf("\n +---+---+---+---+---+---+---+---+---+\n");
    return;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por rtavix
      Amigos, boa tarde! Estou recebendo a seguinte mensagem de erro:
      Mensagem "Solicitação de conexão tem tempo limite". + OracleLogicalTransaction {Oracle.ManagedDataAccess.Client.OracleLogicalTransaction} Oracle.ManagedDataAccess.Client.OracleLogicalTransaction. Fonte: seqüência de caracteres "Oracle Data Provider para .NET, Driver gerenciado". ($ exception) .StackTrace: em OracleInternal.ConnectionPool.PoolManager`3.Get (ConnectionString csWithDiffOrNewPwd, Boolean bGetForApp, CriteriaCtx CriteriaCtx, Cadeia affinityInstanceName, Boolean bForceMatch) em OracleInternal.ConnectionPool.OraclePoolManager.Get (ConnectionString csWithNewPassword, Boolean bGetForApp, CriteriaCtx criteriaCtx, String affinityInstanceName, Boolean bForceMatch) em OracleInternal.ConnectionPool.OracleConnectionDispenser`3.Get (ConnectionString cs, PM conPM, ConnectionString pmCS, SecureString protectedPassword, SecureString protectedProxyPassword,
      em NHibernate.Tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.Prepare () em NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.GetReservedWords (Dialect dialect, IConnectionHelper connectionHelper) em NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.Update (ISessionFactory sessionFactory) em NHibernate.Impl.SessionFactoryImpl. .ctor (Configuração cfg, mapeamento IMapping, configurações Settings, ouvintes EventListeners)
      em NHibernate.Cfg.Configuration.BuildSessionFactory () em SDPJDominio.DataAccess.NhibernateHelper.HelpThreading () na D: \ Repositório SVN \ SDP \ SDPJ \ filiais \ SDPJ-V3.1.0 \ SDPJ-102 \ SDPJDominio \ DataAccess \ NhibernateHelper.cs : linha 41 em SDPJView.ImportacaoProcessoView.ImportacaoProcesso. <> c__DisplayClass20_0. <ProcessamentoTabela> b__0 (Dados do objeto) na D: \ Repositório SVN \ SDP \ SDPJ \ ramais \ SDPJ-V3.1.0 \ SDPJ-102 \ SDPJView \ ImportacaoProcessoView \ ImportacaoProcesso .aspx.cs: linha 209 em System.Threading.Tasks.Task.InnerInvoke () em System.Threading.Tasks.Task.Execute ()
       
      DataAccess, NhibernateHelp:
       
      using System; using System.Collections.Generic; using System.Linq; using System.Text; using NHibernate.Mapping.Attributes; using NHibernate.Cfg; using NHibernate; using System.IO; using NHibernate.Context; using System.Reflection; using Oracle.ManagedDataAccess.Client; namespace SDPJDominio.DataAccess { public class NhibernateHelper { private ISessionFactory sessionFactory; public static ISession GetSession () { if (! CurrentSessionContext.HasBind (Instance.GetSessionFactory ())) CurrentSessionContext.Bind (Instance.GetSessionFactory (). OpenSession ()); return Instance.GetSessionFactory (). GetCurrentSession (); } public static ISessionFactory HelpThreading () { MemoryStream stream = new System.IO.MemoryStream (); HbmSerializer.Default.Validate = true; //HbmSerializer.Default.Serialize(stream, AppDomain.CurrentDomain.GetAssemblies () .Where (w => w.FullName.Contains ("SDPJDomain").) FirstOrDefault ()); HbmSerializer.Default.Serialize (stream, System.Reflection.Assembly.GetExecutingAssembly ()); stream.Position = 0; Configuration configuration = new Configuration (); configuration.Configure (); configuration.SetProperty ("connection.connection_string", ConfigNhibernate.getConfig ()); configuration.SetProperty ("current_session_context_class", "thread_static"); configuration.AddInputStream (stream); stream.Close (); Instance.sessionFactory = configuration.BuildSessionFactory (); return Instance.sessionFactory; } public NhibernateHelper () { MemoryStream stream = new System.IO.MemoryStream (); HbmSerializer.Default.Validate = true; HbmSerializer.Default.Serialize (stream, System.Reflection.Assembly.GetExecutingAssembly ()); stream.Position = 0; Configuration configuration = new Configuration (); configuration.Configure (); configuration.SetProperty ("connection.connection_string", ConfigNhibernate.getConfig ()); // add this line configuration.AddInputStream (stream); stream.Close (); sessionFactory = configuration.BuildSessionFactory (); } public static ISessionFactory SessionFactory { get {return Instance.sessionFactory; } } private ISessionFactory GetSessionFactory () { return sessionFactory; } public static NhibernateHelper Instance { get { return CreateSessionGenerator. } } public static ISession OpenSession () { return Instance.GetSessionFactory (). OpenSession (); } public static void ReloadSession (object obj) { SessionRefresh (obj); } public static ISession SessionCurrent { get { if (! CurrentSessionContext.HasBind (Instance.GetSessionFactory ())) return null; return Instance.GetSessionFactory (). GetCurrentSession (); } } class CreateSessionKey { internal static readonly NhibernateHelperSession Manager = new NhibernateHelper (); } } }  
      line: 209
       
      Action <object> processing = (data) => { NHibernate.Context.ThreadStaticSessionContext.Bind (NhibernateHelper.HelpThreading ().OpenSession ()); }  
      WebConfig:
       
      <?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="extnet" type="Ext.Net.GlobalConfig" requirePermission="false" /> <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <section name="SDPJView.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </sectionGroup> <sectionGroup name="businessObjects"> <sectionGroup name="crystalReports"> <section name="rptBuildProvider" type="CrystalDecisions.Shared.RptBuildProviderHandler, CrystalDecisions.Shared, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, Custom=null" /> <section name="crystalReportViewer" type="System.Configuration.NameValueSectionHandler" /> </sectionGroup> </sectionGroup> <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /> </configSections> <extnet theme="Gray" /> <location path="Content/temp"> <system.web> <authorization> <allow users="?" /> </authorization> </system.web> </location> <location path="Content/css"> <system.web> <authorization> <allow users="?" /> </authorization> </system.web> </location> <location path="Content/img_SDPJ"> <system.web> <authorization> <allow users="?" /> </authorization> </system.web> </location> <location path="Autenticacao"> <system.web> <authorization> <allow users="?" /> </authorization> </system.web> </location> <appSettings> <add key="CodigoSistema" value="SDPJ" /> <add key="CodigoModulo" value="INTRANET" /> <add key="CrystalImageCleaner-AutoStart" value="true" /> <add key="CrystalImageCleaner-Sleep" value="60000" /> <add key="CrystalImageCleaner-Age" value="120000" /> </appSettings> <connectionStrings> <add name="ADConnectionString" connectionString="LDAP://net.sefaz.es.gov.br" /> <add name="ConnectionString" connectionString="DATA SOURCE=DAPP;PASSWORD=A#$##$$;USER ID=APL_SDP" providerName="Oracle.DataAccess.Client" /> </connectionStrings> <businessObjects> <crystalReports> <rptBuildProvider> <add embedRptInResource="true" /> </rptBuildProvider> <crystalReportViewer> <add key="ResourceUri" value="../../aspnet_client/system_web/4_0_30319/crystalreportviewers13" /> </crystalReportViewer> </crystalReports> </businessObjects> <system.web> <!-- Set compilation debug="true" to insert debugging symbols into the compiled page. Because this affects performance, set this value to true only during development. --> <siteMap defaultProvider="XmlSiteMapProvider" enabled="true"> <providers> <add name="XmlSiteMapProvider" description="Default SiteMap provider" type="System.Web.XmlSiteMapProvider" siteMapFile="~/Content/Navigation.sitemap" securityTrimmingEnabled="true" /> </providers> </siteMap> <compilation debug="true"> <assemblies> <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> <add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> <add assembly="CrystalDecisions.CrystalReports.Engine, Version=13.0.3500.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" /> <add assembly="CrystalDecisions.ReportSource, Version=13.0.3500.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" /> <add assembly="CrystalDecisions.Shared, Version=13.0.3500.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" /> <add assembly="CrystalDecisions.Web, Version=13.0.3500.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" /> <add assembly="CrystalDecisions.ReportAppServer.ClientDoc, Version=13.0.3500.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" /> <add assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> <add assembly="Microsoft.ReportViewer.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> <add assembly="Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> <add assembly="System.Management, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> </assemblies> </compilation> <globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" culture="pt-br" /> <!--<globalization enableClientBasedCulture="false" requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="iso-8859-1" responseHeaderEncoding="utf-8" resourceProviderFactoryType="string" enableBestFitResponseEncoding="true" culture="pt-BR" uiCulture="pt-BR"/>--> <!-- The <authentication> section enables configuration of the security authentication mode used by ASP.NET to identify an incoming user. --> <authorization> <deny users="?" /> </authorization> <authentication mode="Forms"> <forms loginUrl="~/Autenticacao/Login.aspx" timeout="20" defaultUrl="~/Default.aspx" slidingExpiration="true" /> </authentication> <sessionState timeout="10" /> <machineKey validationKey="C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE" decryptionKey="8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F" validation="SHA1" /> <membership defaultProvider="SDPJMembershipProvider"> <providers> <clear /> <add name="SDPJMembershipProvider" type="SDPJView.Seguranca.SDPJMembershipProvider" connectionStringName="ADConnectionString" writeExceptionsToEventLog="false" applicationName="/SDPJView" /> </providers> </membership> <!-- The <customErrors> section enables configuration of what to do if/when an unhandled error occurs during the execution of a request. Specifically, it enables developers to configure html error pages to be displayed in place of a error stack trace. <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> <error statusCode="403" redirect="NoAccess.htm" /> <error statusCode="404" redirect="FileNotFound.htm" /> </customErrors> --> <customErrors mode="Off" /> <!--<pages validateRequest="false" controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/>--> <pages controlRenderingCompatibilityVersion="4.0" clientIDMode="AutoID"> <controls> <add assembly="Ext.Net" namespace="Ext.Net" tagPrefix="ext" /> </controls> </pages> <httpHandlers> <add path="*/ext.axd" verb="*" type="Ext.Net.ResourceHandler" validate="false" /> <add verb="GET" path="CrystalImageHandler.aspx" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=13.0.3500.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" /> </httpHandlers> <httpModules> <add name="DirectRequestModule" type="Ext.Net.DirectRequestModule, Ext.Net" /> </httpModules> <httpRuntime maxRequestLength="102400" /> </system.web> <!-- The system.webServer section is required for running ASP.NET AJAX under Internet Information Services 7.0. It is not necessary for previous version of IIS. --> <system.webServer> <httpErrors errorMode="Detailed" /> <asp scriptErrorSentToBrowser="true" /> <validation validateIntegratedModeConfiguration="false" /> <modules runAllManagedModulesForAllRequests="true"> <add name="DirectRequestModule" preCondition="managedHandler" type="Ext.Net.DirectRequestModule, Ext.Net" /> </modules> <handlers accessPolicy="Read, Execute, Script"> <add name="CrystalImageHandler.aspx_GET" verb="GET" path="CrystalImageHandler.aspx" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=13.0.3500.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" preCondition="integratedMode" /> <add name="DirectRequestHandler" verb="*" path="*/ext.axd" preCondition="integratedMode" type="Ext.Net.ResourceHandler" /> <add name="AboMapperCustom-9501872-V4" path="*.axd" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" preCondition="classicMode,runtimeVersionv4.0,bitness32" /> <add name="AboMapperCustom-9501871-V4.0" path="*.aspx" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" preCondition="classicMode,runtimeVersionv4.0,bitness32" /> <add name="AboMapperCustom-9501870-V4.0" path="*.asmx" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" preCondition="classicMode,runtimeVersionv4.0,bitness32" /> <add name="AboMapperCustom-9501869-V4.0" path="*.ashx" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" preCondition="classicMode,runtimeVersionv4.0,bitness32" /> <add name="AboMapperCustom-9501868-V4.0" path="*.ascx" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" preCondition="classicMode,runtimeVersionv4.0,bitness32" /> <add name="AboMapperCustom-9501867-V4.0" path="*.asax" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" preCondition="classicMode,runtimeVersionv4.0,bitness32" /> <add name="ScriptResource" path="ScriptResource.axd" verb="GET,HEAD" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" /> </handlers> </system.webServer> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="AjaxControlToolkit" publicKeyToken="28f01b0e84b6d53e" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-3.0.30930.28736" newVersion="4.1.50508.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" /> <bindingRedirect oldVersion="1.0.0.0-4.5.10" newVersion="4.5.11" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Ext.Net.Utilities" publicKeyToken="2c34ac34702a3c23" /> <bindingRedirect oldVersion="0.0.0.0-2.2.0" newVersion="2.2.1" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Transformer.NET" publicKeyToken="e274d618e7c603a7" /> <bindingRedirect oldVersion="0.0.0.0-2.1.0" newVersion="2.1.1" /> </dependentAssembly> <dependentAssembly> <publisherPolicy apply="no" /> <assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="CrystalDecisions.CrystalReports.Engine" publicKeyToken="692fbea5521e1304" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-13.0.2000.0" newVersion="13.0.2000.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="CrystalDecisions.Shared" publicKeyToken="692fbea5521e1304" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-13.0.3500.0" newVersion="13.0.3500.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="CrystalDecisions.ReportSource" publicKeyToken="692fbea5521e1304" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-13.0.2000.0" newVersion="13.0.2000.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.1.0.4000" newVersion="4.1.0.4000" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Iesi.Collections" publicKeyToken="aa95f207798dfdb4" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Castle.Core" publicKeyToken="407dd0808d44fbdc" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-1.1.0.0" newVersion="1.1.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> <system.serviceModel> <bindings> <basicHttpBinding> <binding name="IntegrationWSBindingP" closeTimeout="00:10:50" openTimeout="00:10:05" receiveTimeout="00:10:05" sendTimeout="00:10:05" maxReceivedMessageSize="10000000"> <security mode="Transport" /> </binding> <binding name="IntegrationWSBindingH" closeTimeout="00:10:50" openTimeout="00:10:05" receiveTimeout="00:10:05" sendTimeout="00:10:05" maxReceivedMessageSize="10000000" /> </basicHttpBinding> </bindings> <client> <endpoint address="https://portalinternet.banestes.com.br/br.com.banestes.djw.integration.server/IntegrationWSPort" binding="basicHttpBinding" bindingConfiguration="IntegrationWSBindingP" contract="IntegracaoBanestesProducao.IntegrationWS" name="IntegrationWSPort" /> <endpoint address="http://portalinternet.h.banestes.com.br/br.com.banestes.djw.integration.server/IntegrationWSPort" binding="basicHttpBinding" bindingConfiguration="IntegrationWSBindingH" contract="IntegracaoBanestesHomologacao.IntegrationWS" name="IntegrationWSPort1" /> </client> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> <standardEndpoints> <webScriptEndpoint> <standardEndpoint name="" crossDomainScriptAccessEnabled="true" /> </webScriptEndpoint> </standardEndpoints> </system.serviceModel> </configuration>  
    • Por Pedro João
      Boa tarde Pessoal,  sou novato na programação  , estou uma dificuldade de enviar na base de dados local (Sql Server), lembrando que existe um metodo
       private void PopulateallFields() que me permite visualizar alguns dados na textbox, mas os dados são solicitado apartir de um ficheiro json na WebAPi
       
      public class BranchMethod     {      public List<Branches> GetBranchList(string url, string authtoken, string passkey, out string ReasonPhrase,Guid pkorganization)      {          try          {              List<Branches> list = new List<Branches>();              url = "http://" + url + "/webapi";              HttpClient clientorg = new HttpClient();              clientorg.BaseAddress = new Uri(url);              clientorg.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", authtoken);              clientorg.DefaultRequestHeaders.Add("passkey", passkey);              string webapi = "WebApi/v1.0/Branches";              HttpResponseMessage getresponses = clientorg.GetAsync(webapi).Result;              if (getresponses.IsSuccessStatusCode)              {                 var branches = JObject.Parse(getresponses.Content.ReadAsStringAsync().Result);                     if (branches["value"].ToString() != "" && branches["value"] != null)                  {                      var organisation = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Branches>>(branches["value"].ToString()).Where(p => p.PkOrganization == pkorganization).ToList();                      list = organisation;                  }              }              ReasonPhrase = getresponses.ReasonPhrase;              return list;          }          catch (Exception ex)          {              throw ex;          }      }     } Método  de Inserir os valores na textbox atravez das chamadas Web
       private void PopulateallFields()         {             try             {                 TokenMethods objtoken = new TokenMethods();                 LoginMethod objlogin = new LoginMethod();                 CompanyMethod objcmp = new CompanyMethod();                 BranchMethod objbranch = new BranchMethod();                 DeviceTypesMethod objdevicetypes = new DeviceTypesMethod();                 ddlNetlogiaUrl.SelectedItem = Url;                 if (TokenMethods.authtoken != "")                 {                     string val = "";                     List<Companies> listcmp = objcmp.GetCompanyList(Url, TokenMethods.authtoken, LoginMethod.Passkey, out val);                     if (val == "OK")                     {                        // Listar todas empresas criada na Internet.                         if (listcmp.Count > 0)                         {                             cmbOrganization.DisplayMember = "Nome";                             cmbOrganization.ValueMember = "ID";                             // Listar a empresa                             cmbOrganization.DataSource = listcmp;                             btnRefreshOrg.Enabled = true; ;                             if (cmbOrganization.SelectedValue.ToString() != "")                             {                                 List<Branches> listbranch = objbranch.GetBranchList(Url, TokenMethods.authtoken, LoginMethod.Passkey, out val, Guid.Parse(cmbOrganization.SelectedValue.ToString()));                                 if (val == "OK")                                 {                                     if (listbranch.Count > 0)                                     {                                          //Class_Conection connection = new Class_Conection();                                    //      connection.conn.Open();                                    //      SqlDataAdapter da = new SqlDataAdapter();                                   //             int X;                                 //                string insertData = " Insert into ORGBranches  (Pk, Name) values  (@Pk, @Name)";                                                                                                                                                             cmbBranch.DisplayMember = "Name";                                        cmbBranch.ValueMember = "Pk";                                         cmbBranch.DataSource = listbranch;                                         SqlCommand cmd = new SqlCommand(insertData, connection.conn);                                         cmd.CommandText = insertData;                                         cmd.CommandType = CommandType.Text;                                         cmd.Parameters.AddWithValue("@Code",3);                                         cmd.Parameters.AddWithValue("@Name", cmbBranch.Text);                                         X = cmd.ExecuteNonQuery();                                         // Listar as Filiares.                                         btnRefreshBranch.Enabled = true;                                         List<DeviceTypes> listDeviceTypes = objdevicetypes.GetDevicetypeList(Url, TokenMethods.authtoken, LoginMethod.Passkey, out val);                                         if (val == "OK")                                         {                                             if (listDeviceTypes.Count > 0)                                             {                                                 cmbDeviceType.DisplayMember = "Nome";                                                 cmbDeviceType.ValueMember = "ID";                                                 cmbDeviceType.DataSource = listDeviceTypes;                                                 //btnRefreshDeviceType.Enabled = true;                                                 //btnRefreshDevice.Enabled = true;                                                 btnFilter.Enabled = true;                                                  btnApplyDevice.Enabled = true;                                             }                                             else { MessageBox.Show("No Devicetypes Found "); }                                         }                                                          }             catch (Exception ex)             {                 throw ex;             }         } Muito obrigado.
    • Por rtavix
      Boa Tarde Pessoal, tenho uma consulta de processo judicial e gravação do mesmo dentro do método da thread. Gostaria de saber se existe a possibilidade de pegar pelo ultimo numero do processo judicial em ordem? 
       
      Índice 2.
       
      Coluna C
      NUMERO JUDICIAL 000021367.2017.8.08.0048 000638185.2017.8.08.0048 001049737.2017.8.08.0048 001133917.2017.8.08.0048 001542883.2017.8.08.0048 001929402.2017.8.08.0048 002028223.2017.8.08.0048 002149042.2017.8.08.0048 002257733.2017.8.08.0048 002330052.2017.8.08.0048 003441427.2016.8.08.0014 002186638.2015.8.08.0035 000169323.2014.8.08.0004 000462858.2013.8.08.0008 000719472.2016.8.08.0008 000437297.2013.8.08.0014 000073242.2016.8.08.0027 000418944.2014.8.08.0030 001558009.2017.8.08.0024 001751436.2016.8.08.0024 002317848.2016.8.08.0024 003026033.2016.8.08.0024  
       
      Meu código:
       
      private System.Threading.Tasks.Task ProcessamentoTabela(IEnumerable<DataRow> dadosparam, int i, Usuario usuarioLogado) { //usuarioLogado = aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login); i = 4; i++; Action<object> processamento = (dados) => { /*if (NHibernate.Context.ThreadStaticSessionContext.HasBind(NhibernateHelper.SessionFactory.))*/ NHibernate.Context.ThreadStaticSessionContext.Bind(NhibernateHelper.HelpThreading().OpenSession()); //Tentativa de ordenação por linha dentro do foreach direto no método da thread. //foreach (var linha in ((IEnumerable<DataRow>)dados).OrderBy(linha => linha["indice"])) foreach (var linha in (IEnumerable<DataRow>)dados) { List<Processo> listaProcessoExistente = new List<Processo>(); Processo processo = null; Interessado interessado = new Interessado(); //busca o processo pelo nº judicial anterior ou atual if (!linha.ItemArray[1].ToString().Equals("")) processo = aplProcesso.consultar---ProcessoER(linha.ItemArray[1].ToString()); if (processo == null) { if (!linha.ItemArray[2].ToString().Equals("")) processo = aplProcesso.consultar---ProcessoER(linha.ItemArray[2].ToString()); processo = aplProcesso.consultar---ProcessoER(linha.ItemArray[2].ToString().OrderBy()); } //busca o interessado por cpf/cnpj if (linha.ItemArray[7].ToString().Length == 14) interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCPF(linha.ItemArray[7].ToString())); if (linha.ItemArray[7].ToString().Length == 18) interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCNPJ(linha.ItemArray[7].ToString())); if (processo != null) { //se o processo não for nulo busco todos procinter relacionados a ele List<ProcessoInteressado> listaprocinter = aplProcessoInteressado.consultarPorIdProcesso(processo.Codigo); if (listaprocinter.Exists(o => o.Interessado == interessado)) log.Append("O interessado informado na linha " + (linha["indice"]) + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>"); //log.Append("O interessado " + processo.Interessado.Nome + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>"); // log.Append("O interessado " + processo.Interessado.Nome + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>"); setProcInter(processo, interessado, linha, i); } else { //Novo Processo - 6.3 processo = new Processo(); processo.Interessado = interessado; processo.NumProcessoJudicial = linha.ItemArray[2].ToString().Trim(); processo.RenunciaCredito = "N"; processo.Situacao = new AplSituacao().ConsultarPorId(1); processo.HonorarioDativo = "S"; processo.Reclamado = new AplReclamado().buscaItem(2); processo.TipoDocumento = new AplTipoDocumento().buscaItem(4); processo.TipoProcesso = "O"; if (linha.ItemArray[5].ToString().Contains("juizado")) processo.Tribunal = new AplTribunal().buscaItem(71); else processo.Tribunal = new AplTribunal().buscaItem(3); processo.NaturezaDespeza = new AplNaturezadeDespesa().buscaItem(3); VaraExecucao vara = new VaraExecucao(); if (!linha.ItemArray[3].ToString().Equals("") && !linha.ItemArray[5].ToString().Equals("")) { List<VaraExecucao> listaVaraComarca = aplVaraExecucao.Consultar---omeVaraNomeComarca(linha.ItemArray[5].ToString().Trim(), linha.ItemArray[3].ToString().Trim()); if (listaVaraComarca.Count != 0) { if (linha.ItemArray[4].ToString().Equals("")) { vara = listaVaraComarca.Find(o => o.NumeroVara == null); } else { vara = listaVaraComarca.Find(o => o.NumeroVara == int.Parse(linha.ItemArray[4].ToString().Trim())); } } } if (vara != null && vara.Codigo != 0) { processo.VaraExecucao = vara; } aplProcesso.gravar(processo); //aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), "Importação do processo de número judicial: " + processo.NumProcessoJudicial aplLog.LogarAtividade(usuarioLogado, "Importação do processo de número judicial: " + processo.NumProcessoJudicial + ". Interessado: " + processo.Interessado.Nome + " - " + processo.Interessado.CPF_CNPJ + ". Tribunal " + processo.Tribunal.NomeTribunal + ".", DateTime.Now); //log.Append("O processo " + processo.NumProcessoJudicial + " informado na linha " + (i + 1) + " foi cadastrado com sucesso. <br>"); setProcInter(processo, interessado, linha, i); } }//Fim Foreach //ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '60%';</script>"); logimportacao.Visible = true; loglbl.Text = log.ToString(); //ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '100%';</script>"); ClientScript.RegisterStartupScript(typeof(string), "Alerta", "<script>alert('Arquivo importado com sucesso. Verifique o log na tela. ')</script>"); }; ISession sessao = ThreadStaticSessionContext.Unbind(NhibernateHelper.HelpThreading()); if (sessao != null) { if (sessao.Transaction != null && sessao.Transaction.IsActive) { sessao.Transaction.Rollback(); } else { sessao.Flush(); } sessao.Close(); } //Tarefas baseadas de forma assíncrona System.Threading.Tasks.Task tarefa_executar = new System.Threading.Tasks.Task(processamento, dadosparam); return tarefa_executar; }  
    • Por rtavix
      Estou com dúvidas de como fazer um controle de uma thread, eu tenho um sistema de importação, onde importo minhas planilhas para a base dados, porém utilizo threads pois possuo muitos registros, funciona! Porém eu gostaria de saber como eu faço para pegar o ultimo numero do processo judicial, e tipo todo processo judicial que terminar com o numero 0 eu pego e insiro somente os processos terminados com o numero 0, e todos terminados com 1 e 2 e assim por diante dentro da thread para ter uma controle?
       
      Esse é meu método de importar:
       
      protected void importar_Click(object sender, EventArgs e) { usuarioLogado = aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login); log.Clear(); //Stopwatch relogio = new Stopwatch(); //relogio.Start(); DataTable Dados = new DataTable(); //Verifica se um arquivo foi selecionado if (selecionarArquivo.HasFile) { //Valida a extensão do arquivo: if (Path.GetExtension(selecionarArquivo.FileName) != ".xlsx" && Path.GetExtension(selecionarArquivo.FileName) != ".xls") ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Somente arquivos em excel')</script>"); else { if (selecionarArquivo.FileContent != null) { string Excel = AppDomain.CurrentDomain.BaseDirectory + selecionarArquivo.FileName; selecionarArquivo.SaveAs(Excel); Dados = DadosExcel(Excel); //Tentavia de ordenação através da coluna. //System.Data.DataView view = Dados.DefaultView; //view.Sort = "G ASC"; //Tentativa 2 de ordenação pegando pelos dados. //string strSort = "NOME ASC"; //System.Data.DataView dtview = new System.Data.DataView(Dados); //dtview.Sort = strSort; //DataTable dtsorted = dtview.ToTable(); //Tentaiva 3 //Dados.DefaultView.Sort = "G Asc"; //string[] nomeInteressado = new string[Dados.Rows.Count]; //for (int i = 0; i < Dados.Rows.Count; i++) //{ // nomeInteressado[i] = Dados.Rows[i]["G"].ToString(); //} //Array.Sort(nomeInteressado); //for (int i = 1; i < Dados.Rows.Count; i++) //{ // Dados.Rows[i]["G"] = nomeInteressado[i]; //} //Tentativa pela ordenação usando o IOrderedEnumerable, não funcionou. //IOrderedEnumerable<DataRow> resultado; //resultado = Dados.Select().OrderBy(d => d["NOME"]); //Tentativa invalida //Dados.DefaultView.Sort = "A Asc"; //var dataparam = Dados.AsEnumerable().OrderBy(linha => linha.Field<int>("indice")); //Dados.Columns.Add("NUMERO JUDICIAL", typeof(string)); //Dados.Rows.Add(16, "0022350-77.2016.8.08.0048"); //Dados.Rows.Add(76, "0021704-78.2016.8.08.0012"); //Dados.Rows.Add(13, "0009360-20.2017.8.08.0048"); //Dados.Rows.Add(14, "0017555-91.2017.8.08.0048"); //Dados.Rows.Add(73, "0031279-52.2012.8.08.0012"); //Dados.Rows.Add(15, "0017734-93.2015.8.08.0048"); //Dados.Rows.Add(111, "0015570-97.2015.8.08.0035"); //var dataparam = Dados.AsEnumerable().OrderBy(linha => linha.Field<int>("indice")); //foreach (var item in dataparam) //{ // string text = ""; // foreach (var clm in item.ItemArray) // text += string.Format("{0}\t " + " _ ", clm); // Response.Write(text + "<br/>"); //} Dados.Columns.Add("indice", typeof(int)); int i = 1; foreach (DataRow linha in Dados.Rows) { linha["indice"] = i; i++; } var registrosValidos = ((DataTable)Dados).Rows.OfType<DataRow>().Skip(5); //Elimina a última linha registrosValidos = registrosValidos.Take(registrosValidos.Count() - 1); //ler de 100 em 100 regisros int quantidade_por_pagina = 100; int total_de_paginas; //Conta os registros válidos int qtd_total_registros = registrosValidos.Count(); //Realiza o calculo matemáticos para total de paginas. total_de_paginas = (int)Math.Ceiling((double)qtd_total_registros / quantidade_por_pagina); if (registrosValidos.Count() > 0) { bool layoutValido = VerificaLayout(Dados); if (!layoutValido) ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Layout do arquivo fora do padrão definido para importação.')</script>"); else { //Validação básica necessária para importação. PS: NumLinhas-1 porque o arquivo tem a última linha com total, que é inútil à importação. VerificacaoPreliminar(registrosValidos); //Inicio da rotina de repetição para leitura de todas as linhas, iniciando na célula B6 if (!arquivoInvalidado) { this.ValidaDuplicidadeInteressado(); //Criando as tarefas paralelas List<System.Threading.Tasks.Task> TarefasParalelas = new List<System.Threading.Tasks.Task>(); for (int j = 0; j < total_de_paginas; j++) { var pagina = j; //leio as 100 linhas var linhasPorPagina = registrosValidos.Skip(pagina * quantidade_por_pagina).Take(quantidade_por_pagina); //Quebrando em 10 threads, vou quebrar a lista com a extenção criada abaixo var data_rows_divididos = linhasPorPagina.SplitList(10); foreach (var linhasDivididas in data_rows_divididos) { //ADICIONO A MINHA LISTA DE TAREFAS PARALELAS TarefasParalelas.Add(ProcessamentoTabela(linhasDivididas, j, usuarioLogado)); } } //INICIOS AS TAREFAS PARALELAS foreach (var tarefa in TarefasParalelas) tarefa.Start(); // AGORA ESPERO TODAS TAREFAS CONCLUIREM System.Threading.Tasks.Task.WaitAll(TarefasParalelas.ToArray()); // ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '60%';</script>"); } if (listaGravarProcInter.Count != 0) { foreach (ProcessoInteressado item in listaGravarProcInter) { aplProcessoInteressado.salvar(item); } } if (listaLogsAuditoria.Count != 0) { foreach (var item in listaLogsAuditoria) { aplLog.LogarAtividade(usuarioLogado, item, DateTime.Now); //aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), item, DateTime.Now); } } else { logimportacao.Visible = true; loglbl.Text = log.ToString(); ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Arquivo não importado. Verifique o log de erros na tela. ')</script>"); } } } } } } //Tempo de importação. //relogio.Stop(); //Debug.WriteLine("#############" + relogio.Elapsed.ToString()); }  
      E aqui é meu método da Thread:
       
      private System.Threading.Tasks.Task ProcessamentoTabela(IEnumerable<DataRow> dadosparam, int i, Usuario usuarioLogado) { //usuarioLogado = aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login); i = 4; i++; Action<object> processamento = (dados) => { /*if (NHibernate.Context.ThreadStaticSessionContext.HasBind(NhibernateHelper.SessionFactory.))*/ NHibernate.Context.ThreadStaticSessionContext.Bind(NhibernateHelper.HelpThreading().OpenSession()); //Tentativa de ordenação por linha dentro do foreach direto no método da thread. //foreach (var linha in ((IEnumerable<DataRow>)dados).OrderBy(linha => linha["indice"])) foreach (var linha in (IEnumerable<DataRow>)dados) { List<Processo> listaProcessoExistente = new List<Processo>(); Processo processo = null; Interessado interessado = new Interessado(); //busca o processo pelo nº judicial anterior ou atual if (!linha.ItemArray[1].ToString().Equals("")) processo = aplProcesso.consultar---ProcessoER(linha.ItemArray[1].ToString()); if (processo == null) { if (!linha.ItemArray[2].ToString().Equals("")) processo = aplProcesso.consultar---ProcessoER(linha.ItemArray[2].ToString()); } //busca o interessado por cpf/cnpj if (linha.ItemArray[7].ToString().Length == 14) interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCPF(linha.ItemArray[7].ToString())); if (linha.ItemArray[7].ToString().Length == 18) interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCNPJ(linha.ItemArray[7].ToString())); if (processo != null) { //se o processo não for nulo busco todos procinter relacionados a ele List<ProcessoInteressado> listaprocinter = aplProcessoInteressado.consultarPorIdProcesso(processo.Codigo); if (listaprocinter.Exists(o => o.Interessado == interessado)) log.Append("O interessado informado na linha " + (linha["indice"]) + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>"); //log.Append("O interessado " + processo.Interessado.Nome + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>"); // log.Append("O interessado " + processo.Interessado.Nome + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>"); setProcInter(processo, interessado, linha, i); } else { //Novo Processo - 6.3 processo = new Processo(); processo.Interessado = interessado; processo.NumProcessoJudicial = linha.ItemArray[2].ToString().Trim(); processo.RenunciaCredito = "N"; processo.Situacao = new AplSituacao().ConsultarPorId(1); processo.HonorarioDativo = "S"; processo.Reclamado = new AplReclamado().buscaItem(2); processo.TipoDocumento = new AplTipoDocumento().buscaItem(4); processo.TipoProcesso = "O"; if (linha.ItemArray[5].ToString().Contains("juizado")) processo.Tribunal = new AplTribunal().buscaItem(71); else processo.Tribunal = new AplTribunal().buscaItem(3); processo.NaturezaDespeza = new AplNaturezadeDespesa().buscaItem(3); VaraExecucao vara = new VaraExecucao(); if (!linha.ItemArray[3].ToString().Equals("") && !linha.ItemArray[5].ToString().Equals("")) { List<VaraExecucao> listaVaraComarca = aplVaraExecucao.Consultar---omeVaraNomeComarca(linha.ItemArray[5].ToString().Trim(), linha.ItemArray[3].ToString().Trim()); if (listaVaraComarca.Count != 0) { if (linha.ItemArray[4].ToString().Equals("")) { vara = listaVaraComarca.Find(o => o.NumeroVara == null); } else { vara = listaVaraComarca.Find(o => o.NumeroVara == int.Parse(linha.ItemArray[4].ToString().Trim())); } } } if (vara != null && vara.Codigo != 0) { processo.VaraExecucao = vara; } aplProcesso.gravar(processo); //aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), "Importação do processo de número judicial: " + processo.NumProcessoJudicial aplLog.LogarAtividade(usuarioLogado, "Importação do processo de número judicial: " + processo.NumProcessoJudicial + ". Interessado: " + processo.Interessado.Nome + " - " + processo.Interessado.CPF_CNPJ + ". Tribunal " + processo.Tribunal.NomeTribunal + ".", DateTime.Now); //log.Append("O processo " + processo.NumProcessoJudicial + " informado na linha " + (i + 1) + " foi cadastrado com sucesso. <br>"); setProcInter(processo, interessado, linha, i); } }//Fim Foreach //ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '60%';</script>"); logimportacao.Visible = true; loglbl.Text = log.ToString(); //ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '100%';</script>"); ClientScript.RegisterStartupScript(typeof(string), "Alerta", "<script>alert('Arquivo importado com sucesso. Verifique o log na tela. ')</script>"); }; ISession sessao = ThreadStaticSessionContext.Unbind(NhibernateHelper.HelpThreading()); if (sessao != null) { if (sessao.Transaction != null && sessao.Transaction.IsActive) { sessao.Transaction.Rollback(); } else { sessao.Flush(); } sessao.Close(); } //Tarefas baseadas de forma assíncrona System.Threading.Tasks.Task tarefa_executar = new System.Threading.Tasks.Task(processamento, dadosparam); return tarefa_executar; } Como eu poderia ter esse controle?
       
      Coluna C é aonde está meus processos judicial, no meu sistema indice 0 é igual a coluna 1, indice 1 é igual a coluna 2, indice 2 é igual a coluna 3(local do processo). Como poderia esta controlando isso?
    • Por Beatriz Burti
      Preciso criar um serviço para monitorar as automações que eu tenho, por exemplo se a automação X,Y ou Z pararem durante 15 minutos gere um alerta e envie um e-mail para as pessoas responsáveis, e depois que o problema for resolvido disparar outro e-mail a todos para informar que o problema está ok.
      tenho uma tabela no banco de dados (SQL server) referente as automações e as máquinas que estão rodando, porém não sei como fazer o código em c# para que isso funcione, alguém tem alguma ideia?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.