• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

ricamerica

ajuda a corrigir o erro

10 mensagens neste tópico

Caros colegas tenho um trabalho em que me pedem para criar um form em c# e que consiga fazer o seguinte:

Pretende-se desenvolver uma função que consiga formatar o nome de uma pessoa segundo as regras das paginas amarelas. por exemplo Ricardo Jorge Saraiva Gonçalves deverá ser apresentado como Gonçalves, Ricardo, J. S.

:P :P :fartnew2: :bored:

caros colegas eu consegui fazer o programa mas tem um pekeno erro que nao sei o pk de ele nao funcionar:

o erro é o seguinte se o nome tiver 4 nomes ele altera acima dos 4 nomes ele ja nao altera agradecia se me pudessem ajudar e dizer o que esta mal, pk eu ja procurei tudo e nao encontro junto envio o codigo produzido até agora:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Paginas_Amarelas
{
class Program
{
static string proced(int x, char[] pagi)
{
string s_esp = "", ponto = ". ";
s_esp = s_esp + char.ToUpper(pagi[x]);
s_esp = s_esp + ponto;
return (s_esp);
}
static void Main(string[] args)
{
string x, virgula = ", ", maiuscula = "";
int resultado = 0;
int cont = 0, cont1 = 0, cont4 = 0, pa, cont2, cont3; 
int c = 0, i = 0, cac = 0;


Console.WriteLine("Insira o nome:");
x = Console.ReadLine();
char[] pag = x.ToCharArray(); 
i = pag.Length - 1;

while (i > 0)
{
if (pag[i] == ' ')
{
c = i;
cac = c;
resultado = pag.Length - 1 - cont;
break;
}
i--;
cont++;
}

c = c + 1;
while (c <= pag.Length || resultado > 0)
{
if (c == pag.Length)
{
maiuscula += virgula;
break;
}
while (c < pag.Length)
{
maiuscula += char.ToUpper(pag[c]);
c++;
}
}

cont3 = 0;
maiuscula = maiuscula + char.ToUpper(pag[cont3]);
while (pag[cont3 + 1] != ' ')
{
maiuscula = maiuscula + char.ToLower(pag[cont3 + 1]);
cont3++;
}
maiuscula = maiuscula + virgula;
resultado = resultado - (++cont3);
cont1 = cont3 + 1;
cont2 = cont1 - 1;
cont4 = cont;
pa = 0;
while (pa <= pag.Length)
{
if (pag[cont1] == pag[cac + 1])
{
cont4 = cont4 + cont2;
}
if (cont4 >= pag.Length || resultado <= 0)
{
break;
}
else if (pag[cont2] == ' ')
{
maiuscula = maiuscula + proced(cont1, pag);
}
cont1++;
cont2++;
pa++;
}
Console.WriteLine("Nome: {0}", maiuscula);
Console.WriteLine(resultado);
Console.ReadLine();
}
}
}

antes demais muito obrigado por ajudarem  :wallbash: ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tentei mas dava-me erro atras de erro

nao sou la muito bom a programar vou chegando la

mas nao sou um expert :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se usares o split certamente terás muito melhor cotação no exercicio. Programar não é apenas resolver os problemas... é resolver os problemas bem :P

Tenta usar o split e depois mete as tuas dúvidas  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

bom usei o split mas isto e so erros e tentei fazer em form

o codigo do form é:

namespace WindowsFormsApplication1
{
    partial class Form1
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.tbx1 = new System.Windows.Forms.TextBox();
            this.button1 = new System.Windows.Forms.Button();
            this.tbx2 = new System.Windows.Forms.TextBox();
            this.SuspendLayout();
            // 
            // tbx1
            // 
            this.tbx1.Location = new System.Drawing.Point(69, 26);
            this.tbx1.Name = "tbx1";
            this.tbx1.Size = new System.Drawing.Size(282, 20);
            this.tbx1.TabIndex = 0;
            this.tbx1.TextChanged += new System.EventHandler(this.tbx1_TextChanged);
            // 
            // button1
            // 
            this.button1.Location = new System.Drawing.Point(144, 94);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(150, 35);
            this.button1.TabIndex = 1;
            this.button1.Text = "Concatenar";
            this.button1.UseVisualStyleBackColor = true;
            this.button1.Click += new System.EventHandler(this.button1_Click);
            // 
            // tbx2
            // 
            this.tbx2.Location = new System.Drawing.Point(69, 164);
            this.tbx2.Name = "tbx2";
            this.tbx2.Size = new System.Drawing.Size(281, 20);
            this.tbx2.TabIndex = 2;
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(441, 264);
            this.Controls.Add(this.tbx2);
            this.Controls.Add(this.button1);
            this.Controls.Add(this.tbx1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.Load += new System.EventHandler(this.Form1_Load);
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion

        private System.Windows.Forms.TextBox tbx1;
        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.TextBox tbx2;
    }
}

e o codigo do trabalho é:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        string[] x;
        string[] y;
        int i;
        string result = String.Empty;
        private void Form1_Load(object sender, EventArgs e)
        {
            MessageBox.Show("Bem Vindo ao programa nomes", "Concatena nomes!!!");
        }

        private void tbx1_TextChanged(object sender, EventArgs e)
        {
            x = tbx1.Text;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // Separa os nomes

            string[] x = x.Split(' ');
            // Pega no Ultimo nome

            result = x[x.Length - 1];
            // Pega no Primeiro nome

            result += ", " + x[0] + " ";
            // Pega nas iniciais dos nomes restantes 

            for (int i = 1; i < x.Length - 1; i++)
            {

                result += x[i][0] + ". ";

            }
            tbx2 = (result);

        }
    }
}

e agora nao entendo os erros que isto dá se me puderes ajudar????

abraços e obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Essas variáveis globais não são necessárias, podes apagar todas.

private void button1_Click(object sender, EventArgs e)
{
// Separa os nomes
string[] x = tbx1.Text.Split(' ');

// Pega no Ultimo nome

string result = x[x.Length - 1];
// Pega no Primeiro nome

result += ", " + x[0] + " ";
// Pega nas iniciais dos nomes restantes 

for (int i = 1; i < x.Length - 1; i++)
{

    result += x[i][0] + ". ";

}
tbx2.Text = result; //não esquecer que queres afectar o texto da textbox e 
não a própria textbox com um objecto do tipo string

}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

obrigado caro colega

so + uma questao para passar a maiusculas tenho de usar o upstring nao é?????

abraços

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

obrigado caro colega

so + uma questao para passar a maiusculas tenho de usar o upstring nao é?????

abraços

variavel.ToString.ToUpper();

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

se a variável for do tipo string é só fazer variavel.ToUpper();

senão for, terás que a converter primeiro para string (como o jpaulino disse)  variavel.ToString().ToUpper();

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora