SABERMASJUSTODARACT
SABERMASJUSTODARACT Por una Facultad de provecho a la comunidad

Repuestas en Yahoo

En C++ para poder ordenar las letras de una palabra en orden alfabetico.
Por ejemplo: Hola -aHlo



#include <stdio.h>

char cad[20];
int i, j, k;
char e;

main(){
printf("Ingrese Palabra a Reordenar: ");
gets(cad);
fflush(stdin);
for(i=0; i<20; i++) if (cad[i]=='\0') break; // largo de lo escrito
/*burble*/
for(k=0; k<i; k++){
for(j=k+1; j<i; j++){
if(cad[k] > cad[j] ){
e=cad[j];
cad[j]=cad[k];
cad[k]= e;
}
}
}
printf("\nLa Palabra Reordenada es: %s", cad);
getchar();
return 0;
}


Como hacer una cadena de tamaño 20?donde escribas una palabra y te las muestre de forma inversa
por ejemplo:
Hola soy Paco - acoP yos aloH

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

void vesre();
char palabra[50];
char reversa[50];
int i = -1, j = 0;
char sigue;

int main() {
do{
vesre();

printf("\nIngresará otra palabra? S = Si; N = No ");
scanf("%c", &sigue);
fflush(stdin); // borra el enter del buffer de teclado
}while(sigue == 's' || sigue == 'S');
return 0;
}// fin del main

void vesre()
{
printf("Escribe la palabra: ");
scanf("%s", &palabra); // usar gets(palabra); para una frase
fflush(stdin);
while(palabra[++i] != '\0' );
j=0;
while(i >= 0)
reversa[j++] = palabra[--i];

reversa[j] = '\0' ;

printf("Tu lalabra al reves es: %s \n", reversa);



Usando la funcion strrev() de string.h como te mencione en la anterior repuesta, el codigo
quedaría:

#include <string.h>
#include <stdio.h>

char cad[40];

main(){
printf("Ingrese cadena a invertir: ");
gets(cad);
fflush(stdin);
printf("\nLa cadena invertida es: %s", strrev(cad));
getchar();
return 0;
}

¿COMO HAGO UN MENU QUE SE DESPLACE CON LAS FECHAS DIRECIONALES EN C++. PRODRIAN EXPLICARME COMO?


Primero tendras que definir una funcion que pinte el menú, ya que cada accion supone tener que redibujar la pantalla, salvo que uses una version de compilador que use el gotoxy(x, y) para posicionar el cursor, con lo cual no hace flata lo anerior, sino brrar el caracter anterior con un caracter vacio y reemplazarl el que sigue por lo que usars com cursor.
En el caso de no tener gotoxy, será una linea que subrayará la seleccion y que contara con n caracters vacios anes de los que definen la linea, sera el caracter 26 o el 27 el que defina cuantos espacios vacios se hacen antes del indicador, y el valor de la cuenta de esos caracteres lo que nos sirva para saber donde esta el indicador

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

char c;
int i=0, j, posi;

void pintamenu();
main(){
do
{
pintamenu();
while( !kbhit() );
c=getch();
if(c ==char(77) && i< 70) i=i+1;
if(c ==char(75) && i>0) i=i-1;

} while( c != char(13));
posi= i/15;


switch(posi){
case 0: printf("\nUd selecciono Ingresar Numeros"); getchar(); break;
case 1: printf("\nUd selecciono Sumar Numeros"); getchar(); break;
case 2: printf("\nUd selecciono Restar Numeros"); getchar(); break;
case 3: printf("\nUd selecciono Multiplicar Numeros"); getchar(); break;
case 4: printf("\nUd selecciono Dividir Numeros"); getchar(); break;
default: printf("\nSeleccion fuera de rango"); getchar(); break;
}
}

void pintamenu(){
system("CLS");
printf("MENU, SELECCIONE CON LAS FLECHAS DERACHA O IZQUIERDA Y DE ENTER\n");
printf("_____________________" "__________________________" "________________" "___________\n");
printf("|INGRESAR NUMEROS| SUMAR | RESTAR | MULTIPLICAR | DIVIDIR |\n");
printf("---------------" "--|--------------|---" "-----------|-----" "--------|------------\n");
for(j=0;j<i; j++)printf(" ");
printf("%c%c%c", char(219), char(219), char(219));
}


¿Como hacer un registro en c++

ayuda por favor!
con ejemplos


Un registro supone una base de datos, y una base de datos el poder almacenar.
Para un registro se necesitan un conjunto de datos referidos a un solo elemento, en ese caso recibe el nombre de entidad.
Una persona por ejemplo, tiene sus caracteristicas propias diferenciables unas de otras
apellido, nombres, dni fecha de nacimiento, grupo sanguineo, estado civil, anteedentes, profesion, domicilio , (pais, provincia ciudad) telefono (fijo y/o celular) e.mail, cuenta bancaria (CBU) etc.
Estos datos se almacenan en una estructura estandar de tamaño fijo, ocupando el menor espacio posible, por lo que se evita salvo ser indispensable los datos numericos

struct persona{
char apellido[20];
char nombres[20];
char dni[11];
char FecNac[8];
char calle[20];
char nro[5];
char Prov[10];
char pais[10];
char email[20];
/*etc*/
};
de este tipo de estructura, que es un tipo de dato personal, se crea un vector, que será la cantidad de datos estimados que tendrá nuestra base de datos
persona per[1000];
Esta declaracion se puede hacer a continuacion del corchete de cierre del struct, quedando un a sola declaracion la de un vector de struct

stuct persona{
/* */
}per [1000];

Luego usando los medios que provee el programa, almacenarlo en el disco,para tenerlo en forma permanente y consultarlo cuando lo necesitemos, luego de llenado totalmente o en forma parcial los datos, constituyendo el indice del arreglo (vector) el autonumerico que identifica cada registro, y la letra inicial del apellido lo que permite detectar si el registro n+1 ha sido llenado o no.

FILE *arch;
fopen=("basedat.dat", "w+");
fwrite(&per, sizeof(per), 1, arch);
fclose (arch);

de esta manera guardamos los registros en el disco, luego lo leemos;
FILE *arch;
fopen=("basedat.dat", "r+");
fread(&per, sizeof(per), 1, arch);
fclose (arch);
/*quedando cargados en el vector de estructura definido antes*/

http://sabermasjustodaract.es.tl/Apendic...

Un ejemplo usando vector de estructura y archivos de disco
#include <stdlib.h>
#include <stdio.h>

const int cant=32;//cnatidad total de alumnos probar con menos

void cargar();
void mostrar();
int i, j;
struct alumno
{
char name[20];
char ape[10];
char sexo;
float nota[5], pp;
}alu[cant];

int main(){

cargar();
mostrar();
getchar();
return 0;
}

void cargar(){
for(i=0; i<cant; i=i+1)
{
system("CLS");
fflush(stdin);
printf("INGRESE EL NOMBRE DEL %i ALUMNO: ",i+1);
gets(alu[i].name);
fflush(stdin);
if(alu[i].name[0]=='\0')break; // salida de la carga de alumnos
printf("INGRESE EL APELLIDO DEL %i ALUMNO: ",i+1);
gets(alu[i].ape);
fflush(stdin);
printf("INGRESE EL SEXO DEL %i ALUMNO( F ó M ): ",i+1);
scanf("%c", &alu[i].sexo);
fflush(stdin);
alu[i].nota[4]=0;
for(j=0; j<4;j++){
printf("INGRESE LA %i NOTA: DEL %i ALUMNO: ",j+1, i+1);
scanf("%f", &alu[i].nota[j]);
fflush(stdin);
alu[i].nota[4]= alu[i].nota[4]+ alu[i].nota[j];
}
alu[i].nota[4]=alu[i].nota[4]/4; //PROMEDIO DEL ALUMNO
}}



void mostrar(){
/*
printf("%10s %20s %4s %4s %4s %4s %4s %4s", " Nombres ",
"Apellidos ", "Sexo", "Prom", " N1 ", " N2 ", " N3 ", " N4 ");
for(i=0; i< cant; i++){
printf("\n%10s %20s %c %4.2f", alu[i].ape, alu[i].name, alu[i].sexo, alu[i].nota[4]);
for (j=0; j<4; j++)printf("; %4.2f", alu[i].nota[j]);
}
*/
//Lo de arriba muestra listado de alumnos
float pt = 0, suma=0;
int cant1=0;

for(i=0; i<cant; i++){
suma=suma + alu[i].nota[4]; cant1=cant1+1;
}
pt= suma / cant1;
printf("\nPROMEDIO DEL TOTAL DE % i ALUMNOS : % 4.2f\n",cant1, pt);

pt = 0, suma=0;
cant1=0;

for(i=0; i<cant; i++){
if(alu[i].sexo=='m' || alu[i].sexo=='M'){
suma=suma + alu[i].nota[4]; cant1=cant1+1;
}}
pt= suma / cant1;

printf("\nPROMEDIO DEL TOTAL DE ALUMNOS %i VARONES: % 4.2f\n", cant1, pt);

pt = 0, suma=0;
cant1=0;
for(i=0; i<cant; i++){
if(alu[i].sexo=='f' || alu[i].sexo=='F'){
suma=suma + alu[i].nota[4]; cant1=cant1+1;
}}
pt= suma / cant1;

printf("\nPROMEDIO DEL TOTAL DE ALUMNOS %i MUJERES: % 4.2f\n", cant1, pt);
}

Saludos
Antonio



¿Programa en bloc de notas que de todas las tablas de multiplicar?


Hay varias formas de hacer un archivo bach que muestre las tablas de multiplicar, he copiado algunos y te los paso, vos verás cual te queda.

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /l %%Y IN (1, 1, 9) DO (
ECHO TABLA DEL %%Y :
FOR /l %%X IN (0, 1, 10) DO (
SET /a TOT=%%X*%%Y
ECHO %%Y X %%X = !TOT!
)
)
PAUSE


Otro:

@ECHO OFF
MODE CON: lines=25 cols=100
SETLOCAL ENABLEDELAYEDEXPANSION
ECHO TABLAS DE MULTIPLICAR:
ECHO X1 X2 X3 X4 X5 X6 X7 X8 X9 x10
ECHO --- ---- ---- ---- ---- ---- ---- ---- ---- ----
FOR /l %%Y IN (1, 1, 10) DO (
SET A=TABLA DEL %%Y :
FOR /l %%X IN (1, 1, 10) DO (
SET /a TOT=%%X*%%Y
SET A=!A! !TOT!
)
ECHO !A!
)
ECHO.
PAUSE


otro:

@echo off
:: Tablas de mutiplicar hasta el 20
set /a operacion=0
set /a aumento=1
for /l %%x in (1 1 20) do (
echo Tabla : %%x
)
echo.Elija el numero de la opcion deseada :
:menu
echo:
set /p table=Tabla :
if not defined table (goto:menu)
if %table% gtr 20 (goto:menu)
if %table% lss 1 (goto:menu)
:bucle
if %aumento% equ 11 (
pause>nul
goto:eof
)
set /a operacion=%table%*%aumento%
echo. %table% x %aumento% = %operacion%
set /a aumento+=1
goto:bucle



otro:

@Echo Off
mode con cols=90 lines=20
more/c<nul
echo: -Tablas de multiplicar- & echo+
for /l %%y in (1,1,10)do (
for /l %%x in (1,1,10)do set/a.=%%x*%%y&<nul,call set/p"=%%x*%%y=%%.%% "
echo+
)
pause 1>nul & exit


Ayuda con un programa en c++

Hola, necesito su ayuda, debo hacer un codigo donde en un cadena las vocales cambien de minúsculas a mayúsculas.
gracias de antemano.
Actualizar: Debo utilizar switch para este ejercicio



Hola:
Podes hacerlo de varias maneras, en todos los casos debes identificar las vocales, lo que podes hacer recorriendo el string donde tenes tu texto(por ejemplo letras) con un for , y con un switch(letras[i]) {
case 'a': letras[i]='A' break;
case 'e': letras[i]='E'; break;
.........
}
y asi para cada una, no te olvides que las letras o caracteres van entre comillas simples

Otra forma, es usando su valor ascii lo que podes hacer en el mismo if el cambio o tambien en un switch
para la a;
for(i=0; i<100;i++){
if (int (letras[i])==97) letras[i]=char(65);
if(int(letras[i]==101) letras[i]=char(69);
.........

Tambien hay funciones en la libreria ctype.h que pasan una letra a su mayuscula, toupper y su opuesta tolower, pero tambien tenes que ubicar las vocales primero en el string, por lo que no es de mucho ahorro de codigo.

Saludos
Antonio



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

char linea[80], dni[20], fecha[20], horamax[10];

int i, t, max;
main(){
system("mode con: lines=50 cols=80"); //tamaño de la ventana de consola
time_t t;
struct tm *ahora;
time(&t);
ahora = localtime(&t);
sprintf(fecha, "%02d/%02d/%02d; ", ahora->tm_mday, ahora->tm_mon + 1, ahora->tm_year -100);
sprintf(linea, "%20s %s %s", "ECHO REPORTE DEL DIA: ", fecha, "> reporte.txt");
system("echo off");
system(linea);  //Creo nuevo archivo e imprimo fecha
t=0;
i=0;
max=0;
sprintf(linea, "%s%s", "ECHO Turno      DNI ", " >>reporte.txt");           
system(linea);
do{
printf(" A para Atender, Documento del Cliente =  Nuevo Turno: ");
gets(dni);
if(dni[0]== 'a' || dni[0]== 'A')
{
printf("\a\a El turno %5d esta siendo llamado para atender \n", i);
i=i+1;
}           
                          
if(dni[0]!= '\0' && dni[0]!= 'a' && dni[0]!= 'A')
{
sprintf(linea, "%s %5d   %s%s", "ECHO ", t, dni,">>reporte.txt");           
system(linea);
t=t+1;
}                           
system("type reporte.txt"); //muestra el archivo              
if((t-i)>max) {
              max=(t-i); //calculo del maximo sin atender
              sprintf(horamax, "Hora:%02d %02d", ahora->tm_hour, ahora->tm_min);
              }
}while (dni[0]!= '\0');//hasta que el primer caracter sea fin de string
sprintf(linea, "%s  %d %s", "ECHO Clientes Atendidos", i, " >>reporte.txt");
system(linea);
sprintf(linea, "%s  %d %s", "ECHO Clientes Sin Atender", t-i, " >>reporte.txt");
system(linea);
sprintf(linea, "%s %d %s %s", "ECHO Maximo Clientes Sin Atender:", max, horamax, " >>reporte.txt");
system(linea);
system("CLS");
system("type reporte.txt");
getchar();
}      
      
------------------------------------------------------------------------------------

¿Codificacion en c++?

REALIZAR EL SIGUIENTE PROGRAMA:

SE DESEA CALCULAR LA CANTIDAD DE APROBADOS Y REPROBADOS DE UN GRUPO DE N ALUMNOS.

TENEMOS COMO DATOS DE ENTRADA LA MATRICULA,EL NOMBRE, LA CALIFICACION DEL PRIMER PARCIAL,LA CALIFICACION DEL SEGUNDO PARCIAL

1.-CALCULAR EL PROMEDIO DEL ALUMNO

2.- CUANTOS ALUMNOS TIENEN LA CALIFICACION DE 100

3.- CUANTOS ALUMNOS ESTANB ENTRE 91-99

4.- CUANTOS ESTAN ENTRE 81-90

5.- CUANTOS ESTAN ENTRE 70-80

6.- CUANTOS ESTAN REPROBADOS

7.- CUANTOS ESTAN APROBADOS

8.- CUANTOS ALUMNOS FUERON EN TOTAL

IMPRIMIR LA MATRICULA,NOMBRE,PROMEDIO

Aca te paso un codigo que te va ayudar a hacer tu trabajo
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

const int cant=25;//cantidad total de alumnos probar con menos
FILE *arch;

void cargar();
void mostrar();
void ordenar();
int i, j;
struct alumno
{
char name[20];
char ape[10];
char sexo;
float nota[5], pp;
}tmp, alu[cant];

//alumno *alu; //puntero del tipo struct

int main(){
system("MODE CON: cols=120 Lines=50");
   
cargar();
ordenar();
mostrar();
getchar();
return 0;
}

void cargar(){
char op;

printf("Usar datos cargados S=si; N=no Cargar datos Nuevos: -->");
op=getchar();
if(op=='n' || op=='N'){
for(i=0; i<cant; i=i+1)
{
system("CLS");
system("COLOR 1F");
fflush(stdin);
printf("INGRESE EL NOMBRE DEL %i  ALUMNO: ",i+1);
gets(alu[i].name);
fflush(stdin);
if(alu[i].name[0]=='\0')break; // salida de la carga de alumnos
printf("INGRESE EL APELLIDO DEL %i  ALUMNO: ",i+1);
gets(alu[i].ape);
fflush(stdin);
printf("INGRESE EL SEXO DEL %i  ALUMNO( F ó M ): ",i+1);
scanf("%c", &alu[i].sexo);
fflush(stdin);
alu[i].nota[4]=0;
for(j=0; j<4;j++){
printf("INGRESE LA %i NOTA: DEL %i  ALUMNO: ",j+1, i+1);
scanf("%f", &alu[i].nota[j]);
fflush(stdin);
alu[i].nota[4]= alu[i].nota[4]+ alu[i].nota[j];
}
alu[i].nota[4]=alu[i].nota[4]/4; //PROMEDIO DEL ALUMNO
}
arch=fopen("backdat.txt", "w+");
fwrite(&alu, sizeof(alu), 1, arch);
fclose(arch);
}/*del if de nuevos ingresos*/
else
{
system("COLOR 2E");
arch=fopen("backdat.txt", "r+");
if(arch== NULL){ printf("\nError abriendo archivo leer"); getchar(); }
fread(&alu, sizeof(alu), 1, arch);
fclose(arch);
}

}


void mostrar(){
 
float pt = 0, suma=0;
int cant1=0;

for(i=0; i<cant; i++){
         suma=suma + alu[i].nota[4]; cant1=cant1+1;
         }
pt= suma / cant1;
printf("\nPROMEDIO DEL TOTAL DE % i ALUMNOS : % 4.2f\n",cant1, pt);

pt = 0, suma=0;
cant1=0;

for(i=0; i<cant; i++){
         if(alu[i].sexo=='m' || alu[i].sexo=='M'){                  
suma=suma + alu[i].nota[4]; cant1=cant1+1;
          }}
pt= suma / cant1;

printf("\nPROMEDIO DEL TOTAL DE ALUMNOS %i VARONES: % 4.2f\n", cant1, pt);

pt = 0, suma=0;
cant1=0;
for(i=0; i<cant; i++){
if(alu[i].sexo=='f' || alu[i].sexo=='F'){
suma=suma + alu[i].nota[4]; cant1=cant1+1;
          }}
pt= suma / cant1;

printf("\nPROMEDIO DEL TOTAL DE ALUMNOS %i MUJERES: % 4.2f\n", cant1, pt);
}


void ordenar(){
int k;    
printf("\n\tAlumnos segun registro inicial\n");
printf("---------------------------------------------------------------\n");  
printf("%10s %20s %4s %4s %5s %5s %5s %5s\n", " Apellido ",
"  Nombre  ", "Sexo", "Prom", " N1 ", " N2 ", " N3 ", " N4 ");    
for(i=0; i< cant; i++){
         printf("\n%10s %20s %c   %4.2f", alu[i].ape, alu[i].name, alu[i].sexo, alu[i].nota[4]);
for (j=0; j<4; j++)printf("; %4.2f", alu[i].nota[j]);
printf("\n"); 
}
//Lo de arriba muestra listado de alumnos                            

fflush(stdin);

for(i=0; i<cant; i++){
for(j=i+1; j<cant; j++){
if (stricmp(alu[i].ape, alu[j].ape)<0)  /* metodo burbuja */
   {
        /*reset del temp*/
        sprintf(tmp.name, "%s", "");
        sprintf(tmp.ape, "%s", "");
        tmp.sexo=' ';
        tmp.nota[0]=0;              
        tmp.nota[1]=0;
        tmp.nota[2]=0;
        tmp.nota[3]=0;
        tmp.nota[4]=0;
        /*fin del reset del temp*/
       
        sprintf(tmp.ape, "%s", alu[i].ape); /* alu[i]-->tmp */
        sprintf(tmp.name, "%s", alu[i].name);
        tmp.sexo=alu[i].sexo;
        for(k=0; k<5; k++)
        {
        tmp.nota[k]=alu[i].nota[k];
        } /*for k*/
       
        sprintf(alu[i].ape, "%s",alu[j].ape);  /* alu[j]--> alu[i] */
        sprintf(alu[i].name, "%s", alu[j].name);
        alu[i].sexo=alu[j].sexo;
        for(k=0; k<5; k++)
        {
        alu[i].nota[k]=alu[j].nota[k];
        }/*for k*/
       
        sprintf(alu[j].ape, "%s", tmp.ape);  /* alu[i]en temp --> alu[j] */
        sprintf(alu[j].name, "%s", tmp.name);
        alu[j].sexo=tmp.sexo;
        for(k=0; k<5; k++)
        {
        alu[j].nota[k]=tmp.nota[k];
        }/*for k*/
       
    } /*if*/   
}/*for i*/
} /*for j*/      
printf("\n\tAlumnos segun registro ordenado por Apellido Descendente\n");  
printf("---------------------------------------------------------------\n");
printf("%10s %20s %4s %4s %5s %5s %5s %5s\n", " Apellido ",
"  Nombre  ", "Sexo", "Prom", " N1 ", " N2 ", " N3 ", " N4 ");    
for(i=0; i< cant; i++){
         printf("\n%10s %20s %c   %4.2f", alu[i].ape, alu[i].name, alu[i].sexo, alu[i].nota[4]);
for (j=0; j<4; j++)printf("; %4.2f", alu[i].nota[j]);
printf("\n"); 
}
//Lo de arriba muestra listado de alumnos ordenado                            
}  




Seguir--> (Introduccion a JAVA)
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis