ajuda em C#

MXMS

Membro
ola. Eu estou a realizar um programa em C# console application.. e tenho k eliminar um cliente e passar esse cliente eliminado para um outro vector o codigo que fiz foi:
Código:
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000][COLOR=white][] inactivos_part =[/COLOR] [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=white][5]; // crio um novo vector para guardar os clientes eliminados[/COLOR]
 
[/SIZE][SIZE=2][COLOR=#2b91af][SIZE=2][COLOR=#2b91af]Console[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].WriteLine([/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"introduza o codigo do cliente Particular"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]); [/SIZE][SIZE=2]
[/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] elimina_part = [/SIZE][SIZE=2][COLOR=#2b91af][SIZE=2][COLOR=#2b91af]Convert[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].ToInt32([/SIZE][SIZE=2][COLOR=#2b91af][SIZE=2][COLOR=#2b91af]Console[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].ReadLine()); // introduzo o codigo do cliente k quero eliminar[/SIZE]
[SIZE=2] 
[/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]for[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] ([/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] i = 0; i < ultimoCliente; i++)
{

[/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]if[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] (elimina_part == tabela1[i].Cod_part) // verifico se o cliente existe no vector "tabela1"
{

[/SIZE][SIZE=2][COLOR=#2b91af][SIZE=2][COLOR=#2b91af]Console[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].WriteLine(tabela1[i].listagem());
}
[/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]for[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] ([/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] j = 0; j < inactivos_part.Length; j++) // percorro o vector inactivos para verificar onde esta livre para colocar o cliente eliminado[/SIZE]
[SIZE=2] 
[/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]if[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] (inactivos_part[j] == [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]null[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])
{
inactivos_part[j] = tabela1[i]; // [COLOR=yellow]depois digo que o novo vector vai conter  o cliente eliminado mas nao funciona desta maneira... nesta linha dá erro[/COLOR]
}
 
 
 

}
[/SIZE]
 
Última edição pelo moderador:
Olá,

Código:
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000][COLOR=white][] inactivos_part[/COLOR][/COLOR][/SIZE]

Qual o tipo de "tabela1"? À primeira vista não será string e por isso não podes fazer a atribuição.
 
A tabela1 é :
Código:
[SIZE=2][COLOR=#2b91af][SIZE=2][COLOR=#2b91af]clientespart[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000][COLOR=white][] tabela1 =[/COLOR] [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#2b91af][SIZE=2][COLOR=#2b91af]clientespart[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=white][100];[/COLOR][/SIZE]
onde o clientespart é uma classe. Será k m podem ajudar como faço entao a atribuiçao.



Em vez de :
Código:
[SIZE=2][COLOR=#2b91af]string [/COLOR][] inactivos_part = [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] string[/SIZE][SIZE=2][5];
[/SIZE]
coloquei:
Código:
[SIZE=2][COLOR=#2b91af][SIZE=2][COLOR=#2b91af]clientespart[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][] inactivos_part = [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#2b91af][SIZE=2][COLOR=#2b91af]clientespart[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][5];[/SIZE]
Penso k seja isto já nao dá erro

Código:
[SIZE=2][COLOR=#2b91af][SIZE=2][COLOR=#2b91af]clientespart[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#000000][COLOR=white][] inactivos_part =[/COLOR] [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#2b91af][SIZE=2][COLOR=#2b91af]clientespart[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=white][5];[/COLOR]
 
[/SIZE][SIZE=2][COLOR=#2b91af][SIZE=2][COLOR=#2b91af]Console[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].WriteLine([/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"introduza o codigo do cliente Particular"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]);
[/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] elimina_part = [/SIZE][SIZE=2][COLOR=#2b91af][SIZE=2][COLOR=#2b91af]Convert[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].ToInt32([/SIZE][SIZE=2][COLOR=#2b91af][SIZE=2][COLOR=#2b91af]Console[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].ReadLine());
[/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]for[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] ([/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] i = 0; i < ultimoCliente; i++)
{

[/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]if[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] (elimina_part == tabela1[i].Cod_part)
{

[/SIZE][SIZE=2][COLOR=#2b91af][SIZE=2][COLOR=#2b91af]Console[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].WriteLine(tabela1[i].listagem());
}
[/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]for[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] ([/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] j = 0; j < inactivos_part.Length; j++)
[/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]if[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] (inactivos_part[j] == [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]null[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])
{
inactivos_part[j] = tabela1[i];
tabela1[i] = [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]null[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];
}
}
[/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]foreach[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] ([/SIZE][SIZE=2][COLOR=#2b91af][SIZE=2][COLOR=#2b91af]clientespart[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] p [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]in[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] inactivos_part)
{
[/SIZE][SIZE=2][COLOR=#2b91af][SIZE=2][COLOR=#2b91af]Console[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].WriteLine(p.listagem());
}

tenho outra duvida esta listagem do fim:
Código:
foreach[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] ([/SIZE][SIZE=2][COLOR=#2b91af][SIZE=2][COLOR=#2b91af]clientespart[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] p [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]in[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] inactivos_part)
{
[/SIZE][SIZE=2][COLOR=#2b91af][SIZE=2][COLOR=#2b91af]Console[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].WriteLine(p.listagem());
}
so deveria listar os clientes eliminados mas lista-me todos os clientes.. porque??
 
Última edição pelo moderador:
O codigo que tenho actualmente é o que se encontra em baixo mas nao m funciona correctamente... será k m podiam ajudar?


Código:
[COLOR=#000000][FONT=Courier New][COLOR=#0000bb]clientespart[/COLOR][COLOR=#007700][] [/COLOR][COLOR=#0000bb]inactivos_part [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]newclientespart[/COLOR][COLOR=#007700][[/COLOR][COLOR=#0000bb]100[/COLOR][COLOR=#007700]]; [/COLOR][/FONT][FONT=Courier New][COLOR=#ff8000]// novo vector para clientes eliminados
 
[/COLOR][COLOR=#0000bb]Console[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]WriteLine[/COLOR][COLOR=#007700]([/COLOR][COLOR=#dd0000]"introduza o codigo do cliente Particular a eliminar"[/COLOR][/FONT][FONT=Courier New][COLOR=#007700]);
[/COLOR][COLOR=#0000bb]int elimina_part [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]Convert[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]ToInt32[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]Console[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]ReadLine[/COLOR][/FONT][FONT=Courier New][COLOR=#007700]());
for ([/COLOR][COLOR=#0000bb]int i [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]0[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000bb]i [/COLOR][COLOR=#007700]< [/COLOR][COLOR=#0000bb]ultimoCliente[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000bb]i[/COLOR][/FONT][FONT=Courier New][COLOR=#007700]++)
{
 
if ([/COLOR][COLOR=#0000bb]elimina_part [/COLOR][COLOR=#007700]== [/COLOR][COLOR=#0000bb]tabela1[/COLOR][COLOR=#007700][[/COLOR][COLOR=#0000bb]i[/COLOR][COLOR=#007700]].[/COLOR][COLOR=#0000bb]Cod_part[/COLOR][COLOR=#007700]) [/COLOR][/FONT][COLOR=#ff8000][FONT=Courier New]// verifica se o cliente existe
[/FONT][/COLOR][FONT=Courier New][COLOR=#007700]{
 
[/COLOR][COLOR=#0000bb]Console[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]WriteLine[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]tabela1[/COLOR][COLOR=#007700][[/COLOR][COLOR=#0000bb]i[/COLOR][COLOR=#007700]].[/COLOR][COLOR=#0000bb]listagem[/COLOR][/FONT][FONT=Courier New][COLOR=#007700]());
}
for ([/COLOR][COLOR=#0000bb]int j [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]0[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000bb]j [/COLOR][COLOR=#007700]< [/COLOR][COLOR=#0000bb]inactivos_part[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]Length[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000bb]j[/COLOR][/FONT][FONT=Courier New][COLOR=#007700]++)
{
if ([/COLOR][COLOR=#0000bb]inactivos_part[/COLOR][COLOR=#007700][[/COLOR][COLOR=#0000bb]j[/COLOR][COLOR=#007700]] == [/COLOR][COLOR=#0000bb]null[/COLOR][/FONT][FONT=Courier New][COLOR=#007700])
{
[/COLOR][COLOR=#0000bb]inactivos_part[/COLOR][COLOR=#007700][[/COLOR][COLOR=#0000bb]j[/COLOR][COLOR=#007700]] = [/COLOR][COLOR=#0000bb]tabela1[/COLOR][COLOR=#007700][[/COLOR][COLOR=#0000bb]i[/COLOR][COLOR=#007700]]; [/COLOR][/FONT][FONT=Courier New][COLOR=#ff8000]// copia para o novo vector o cliente eliminado
[/COLOR][COLOR=#0000bb]tabela1[/COLOR][COLOR=#007700][[/COLOR][COLOR=#0000bb]i[/COLOR][COLOR=#007700]]= [/COLOR][COLOR=#0000bb]null[/COLOR][COLOR=#007700]; [/COLOR][/FONT][COLOR=#ff8000][FONT=Courier New]// elimina o cliente da tabela onde o cliente estava
 
[/FONT][/COLOR][FONT=Courier New][COLOR=#007700]}
}
}
foreach ([/COLOR][COLOR=#0000bb]clientespart p in inactivos_part[/COLOR][COLOR=#007700]) [/COLOR][/FONT][COLOR=#ff8000][FONT=Courier New]// o problema é que nesta listagem me lista todos os clientes e nao os clientes que eliminei so...
[/FONT][/COLOR][FONT=Courier New][COLOR=#007700]{
if ([/COLOR][COLOR=#0000bb]p [/COLOR][COLOR=#007700]!= [/COLOR][COLOR=#0000bb]null[/COLOR][/FONT][FONT=Courier New][COLOR=#007700])
[/COLOR][COLOR=#0000bb]Console[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]WriteLine[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]p[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]listagem[/COLOR][/FONT][FONT=Courier New][COLOR=#007700]());
}
 [/COLOR][/FONT][/COLOR]
E outro problema é que me apaga todos os clientes que tinha no vector dos
clientes activos nao sei se é devido a esta linha de codigo:
Código:
[COLOR=#000000][FONT=Courier New][COLOR=#007700] [/COLOR][COLOR=#0000bb]tabela[/COLOR][COLOR=#007700][[/COLOR][COLOR=#0000bb]i[/COLOR][COLOR=#007700]]= [/COLOR][COLOR=#0000bb]null[/COLOR][COLOR=#007700]; [/COLOR][/FONT][/COLOR]
[COLOR=#000000][COLOR=#ff8000][FONT=Courier New]//penso k nao seja nesta linha por aqui diz k na posiçao "i" [/FONT][/COLOR][/COLOR]
ficará a nulo, nao devia de apagar tudo..

 
Última edição pelo moderador:
Olha fiz assim rápido isto, tentando não alterar a tua lógica de pensar... O teu problema está dentro do ciclo principal, olha bem para o if, e para o que vem depois e pensa lá ;)

Código:
public class clientespart
        {
            public int Cod_part;

            public clientespart(int e) { Cod_part = e; }

            public string listagem() { return Cod_part.ToString(); }
        }

        static void Main(string[] args)
        {
            clientespart[] inactivos_part = new clientespart[100]; // novo vector para clientes eliminados
            clientespart[] tabela1 = new clientespart[100]; // novo vector para clientes actuais

            int ultimoCliente = 0;
            tabela1[0] = new clientespart(0);
            tabela1[1] = new clientespart(1);
            tabela1[2] = new clientespart(2);
            tabela1[3] = new clientespart(3);
            tabela1[4] = new clientespart(4);
            ultimoCliente = 5;

            bool done = false;

            Console.WriteLine("introduza o codigo do cliente Particular a eliminar");
            int elimina_part = Convert.ToInt32(Console.ReadLine());
            for (int i = 0, j=0; i < ultimoCliente; i++)
            {
                Console.WriteLine("Verifica se existe!");
                if (elimina_part == tabela1[i].Cod_part) // verifica se o cliente existe
                {
                    Console.WriteLine("Existe: " + tabela1[i].listagem());

                    Console.WriteLine("Começa eliminação!");
                    j = 0;
                    do
                    {
                        if (inactivos_part[j] == null)
                        {
                            Console.WriteLine("Começa fase!" + j);
                            inactivos_part[j] = tabela1[i]; // copia para o novo vector o cliente eliminado
                            tabela1[i] = null; // elimina o cliente da tabela onde o cliente estava
                            done = true;
                        }
                        j++;
                    }
                    while (!done && j<inactivos_part.Length);
                    done = false;
                }
            }
            Console.WriteLine("Mostra inactivos!");
            foreach (clientespart p in inactivos_part) // o problema é que nesta listagem me lista todos os clientes e nao os clientes que eliminei so...
            {
                if (p != null)
                    Console.WriteLine(p.listagem());
            }
            Console.WriteLine("Mostra activos!");
            foreach (clientespart p in tabela1) if (p != null) Console.WriteLine(p.listagem());
            Console.WriteLine("Fim!");
            Console.ReadKey();
        }
 
Oi muito obrigado o teu codigo foi muito util mas tem um problema ele deixa eliminar 1 cliente mas s quisere eliminar outro cliente já nao deixa.. o programa queixa-se desta linha de codigo

if (elimina_part == tabela1.Cod_part)
 
Sim, quando eliminas um cliente ele fica null, se quiseres correr isso outra vez tens de verificar se ele é null, se for nao podes comparar o código, passas ao seguinte.
 
não é bem aí, é dentro do ciclo for, testas isso antes de fazer alguma coisa, se der null nao faças nada nessa iteração porque esse i será referente a um código já eliminado certo? o importante é perceberes.

cumpzz
 
Sim e está dentro de um ciclo for eu mostro-t parte do codigo:

Console.WriteLine("introduza o codigo do cliente Particular a eliminar");
int elimina_part = Convert.ToInt32(Console.ReadLine());
for (int i = 0, j=0; i < ultimoCliente; i++)
{
Console.WriteLine("Verifica se existe!");
while (tabela1 == null)
{
i++;
}
if (elimina_part == tabela1.Cod_part) // verifica se o cliente existe
{
 
já resolvi o problema... mas ele agora ao listar os clientes inacivos lista-me o ultimo eliminado.. nao mostra todos os eliminados.

será k m podiam ajudar numa agenda que tenho k fazer... agendar uma marcaçoes para uma empresa de seguranças o codigo k fiz foi:


Console.WriteLine("introduza a data para agendar");
string d = Console.ReadLine();
for (int i = 0; i <tabela3.Length ; i++)
{
Console.WriteLine("{0}", d);
if (d == tabela3.Datamarcacao)
{
tabela3.Datamarcacao = d;

Console.WriteLine("introduza a hora de inicio");
inicio =
Convert.ToInt32(Console.ReadLine());
Console.WriteLine("introduza a hora de Fim");
fim =
Convert.ToInt32(Console.ReadLine());
Console.WriteLine("introduza o codigo cliente");
cod_cli =
Convert.ToInt32(Console.ReadLine());
Console.WriteLine("introduza a quantidade de funcionarios a alocar");
quantidade =
Convert.ToInt32(Console.ReadLine());
tabela3[ag++] =
new agenda(tabela3.Datamarcacao, Convert.ToInt32(inicio), Convert.ToInt32(fim), Convert.ToInt32(cod_cli), Convert.ToInt32(quantidade));

}
else if (d != tabela3.Datamarcacao)
{
tabela3.Datamarcacao = d;
Console.WriteLine("introduza a hora de inicio");
inicio =
Convert.ToInt32(Console.ReadLine());
Console.WriteLine("introduza a hora de Fim");
fim =
Convert.ToInt32(Console.ReadLine());
Console.WriteLine("introduza o codigo cliente");
cod_cli =
Convert.ToInt32(Console.ReadLine());
Console.WriteLine("introduza a quantidade de funcionarios a alocar");
quantidade =
Convert.ToInt32(Console.ReadLine());
tabela3[ag++] =
new agenda(tabela3.Datamarcacao, Convert.ToInt32(inicio), Convert.ToInt32(fim), Convert.ToInt32(cod_cli), Convert.ToInt32(quantidade));
}
}
foreach (agenda t in tabela3)
{
if (t != null)
Console.WriteLine(t.listagem());
}
 
Back
Topo