C++ 菜单C/C+中的字符串和数组+;
我在打印菜单的案例3时遇到问题,因为这是一个涉及字符串和char的问题,而其他案例可以很好地处理向量,我如何解决这个问题C++ 菜单C/C+中的字符串和数组+;,c++,C++,我在打印菜单的案例3时遇到问题,因为这是一个涉及字符串和char的问题,而其他案例可以很好地处理向量,我如何解决这个问题 #include <windows.h> //Lots of useful things #include <iostream> //"cout" and "cin" #include <conio.h> //"getch()" and "kbhit()" #include <string> //Strings, obvious
#include <windows.h> //Lots of useful things
#include <iostream> //"cout" and "cin"
#include <conio.h> //"getch()" and "kbhit()"
#include <string> //Strings, obviously
#include <ctime> //Is needed in most compilers for the rand() seeds
#include <stdio.h>
#include <stdlib.h>
using namespace std; //I hate using std:: before every cout or string
int main(int argc, char** argv) {
int option;
int arr[10], sum, i, j, n, c,k,l;
char cadena;
char *ptrcad;
int num, c1,d1,a[100],b[100];
cout<<" MENU DE OPCIONES: "<<endl<<endl;
cout<<" 1. Calcular la suma de todos los elementos de un vector"<<endl;
cout<<" 2. Indicar si un valor num se encuentra en un vector"<<endl;
cout<<" 3. Invertir una cadena apuntada"<<endl;
cout<<" 4. Invertir los elementos de un vector vec de N posiciones"<<endl;
cout<<" 5. Informar Ia posicion donde aparece por ultima vez un valor"<<endl;
cout<<" 6. Determinar si dos vectores son iguales"<<endl;
cout<<" 7. Eliminar de una lista encadenada apuntada por cad todas la apariciones"<<endl;
cout<<" 8. Elabore una rutina recursiva que imprima los elementos de una lista encadenada"<<endl;
cout<<" 9. Elaborar una rutina recursiva que permita ordenar un vector de forma ascendente"<<endl;
cout<<" 10. Salir"<<endl<<endl;
cout<<" ELIJA UNA OPCION: ";
cin>>option;
system("cls");//Clear the screen and start the second part of the code
switch(option){
case 1:
sum=0;
for(i=0;i<10;i++){
cout<<"Ingrese dato: ";
cin>>arr[i];
sum+=arr[i];
}
cout<<"\n Datos almacenados dentro del arreglo: "<<endl;
for(j=0; j<10;j++){
cout<<" "<<arr[j]<<" ";
}
cout<<"\n\n La suma total es = "<<sum<<endl;
break;
case 2:
c=0;
for(i=0;i<10;i++){
cout<<"Ingrese dato: ";
cin>>arr[i];
}
cout<<"\n Datos almacenados dentro del arreglo: "<<endl;
for(j=0; j<10;j++){
cout<<" "<<arr[j]<<" ";
}
cout<<"\n\n Ingrese el dato a verificar: ";
cin>>n;
for(i=0;i<10;i++){
if(n==arr[i]){
cout<<"El elemento "<<n<<" se encuentra en el arreglo en la posicion "<<i<<endl;}
else{
c++;}
}
if(c++==10){
cout<<"El elemento "<<n<<" no se encuentra en el arreglo"<<endl;}
break;
case 3:
char cad[20];
char *ptrcad; //puntero que apunta a mi cadena
cout<<"Ingrese la cadena: "<<endl;
gets(cad);
cout<<cad;
for(int i=5;i>=0;i--){
ptrcad=&cad[i];//asigno puntero, ptr cad apunta al contenido de cad
cout<<*ptrcad;
}
break;
case 4:
cout<<"Ingrese numero de elementos del arreglo: ";
cin>>num;
for(i=0;i<num;i++){
cout<<"Ingrese dato: ";
cin>>arr[i];
}
cout<<"\n Datos almacenados dentro del arreglo: "<<endl;
for(j=0; j<num;j++){
cout<<" "<<arr[j]<<" ";
}
for (int i=0; i<num/2; i++){
int temp=arr[i];
arr[i]=arr[num-1-i];
arr[num-1-i]=temp; }
cout<<"\n El arreglo invertido es: "<<endl;
for (int i=0; i<num; i++){
cout<<" "<<arr[i]<<" "; }
break;
case 5:
break;
case 6:
int v1[5],v2[5], ban;
ban=0;
for(i=0;i<5;i++){
cout<<"Ingrese dato vector 1: ";
cin>>v1[i];
}
cout<<"\n Datos almacenados dentro del arreglo 1: "<<endl<<endl;
for(j=0; j<5;j++){
cout<<" "<<v1[j]<<" ";
}
for(i=0;i<5;i++){
cout<<"Ingrese dato vector 2: ";
cin>>v2[i];
}
cout<<"\n Datos almacenados dentro del arreglo 2: "<<endl<<endl;
for(j=0; j<5;j++){
cout<<" "<<v2[j]<<" ";
}
for(i=0;i<5;i++)
if(v1[i]==v2[i])
ban++;
if(ban==5)
cout<<"\nLos vectores son iguales"<<endl;
else
cout<<"\nLos vectores no son iguales"<<endl;
break;
case 7:
break;
case 8:
break;
case 9:
int a[5], aux;
for(i=0;i<5;i++){
cout<<"Ingrese dato vector 1: ";
cin>>a[i];
}
cout<<"\n Datos almacenados dentro del arreglo 1: "<<endl<<endl;
for(j=0; j<5;j++){
cout<<" "<<a[j]<<" ";
}
for(i=0; i<=5;i++)
for(l=i+1; l<=5;l++)
if(a[i]>=a[l])
{
aux=a[l];
a[l]=a[i];
a[i]=aux;
}
cout<<"El vector ordenado es: ";
for(i=0;i<=5;i++)
cout<<a[i]<<" ";
break;
case 10:
exit(0);
default: cout<<"Opcion no valida";
}
return 0;
}
#包括//许多有用的东西
#包括//“cout”和“cin”
#包括//“getch()”和“kbhit()”
#显然,包括//字符串
#对于rand()种子,大多数编译器都需要include/
#包括
#包括
使用名称空间std//我讨厌在每个cout或string之前使用std::
int main(int argc,字符**argv){
int选项;
int arr[10],和,i,j,n,c,k,l;
卡尔卡德纳;
char*ptrcad;
整数,c1,d1,a[100],b[100];
从你的评论中可以看出
在案例3中,我必须使用指针反向打印字符串,我的错误是在控制台中我无法写入任何内容,程序只是退出
我看不出你的程序有任何问题。它在对你指定的选项执行操作后按预期退出。如果你想让它继续接受选项,你需要有某种循环
例如
此外,通常不建议使用它来读取stdin
请注意,gets与fgets完全不同:gets不仅使用stdin作为源,而且在结果字符串中不包含结尾的换行符,并且不允许指定str的最大大小(这可能导致缓冲区溢出)
[P>实际上,微软C++编译器如果使用它会引发一个错误。建议使用<代码> CIN < /C>或<代码> FGES。你已经包含了字符串头,为什么不使用它的内容?我打赌很多错误就这样消失了。你得到什么错误?在3的情况下,什么是试图实现的?打印用户输入了6个字符,在反向中?案例3我必须使用指针反向打印字符串,我的错误是在控制台中我不能写任何东西,程序只是退出
while(true)
{
switch(option)
{
case 0:
// actions
break;
....
case 10:
exit(0);
}
}