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

ricamerica

ajuda a corrigir o erro

Recommended Posts

ricamerica

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: ;)

Share this post


Link to post
Share on other sites
ricamerica

tentei mas dava-me erro atras de erro

nao sou la muito bom a programar vou chegando la

mas nao sou um expert :P

Share this post


Link to post
Share on other sites
ricamerica

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

Share this post


Link to post
Share on other sites
vitortomaz

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

}

Share this post


Link to post
Share on other sites
ricamerica

obrigado caro colega

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

abraços

Share this post


Link to post
Share on other sites
jpaulino

obrigado caro colega

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

abraços

variavel.ToString.ToUpper();

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.