Pętla while (cin) c++

0

próbuje napisać pętle while w której cin przyjmuje inty chciałbym aby pętla się zakończyła jeśli ktoś zamiast inta wpisze np. w

void dodaj(){
int a=0;
int b=-1;

while (cin) {
	
cout<<"podaj wspolczynnik (w konczy wprowadzanie)"<<endl;
cin>>a;
cout<<"podaj potege"<<endl;	
cin>>b;
    
	if(cin.fail())
	cin.clear();
	break;
	
}
	
}
0

while(cin >> a >> b)

0

próbowałem program wtedy nic nie wyświetla dodatkowo na początku zmienne a i b muszą mieć wartośc 0 i -1

0

No to if (!(cin >> a)) break; i analogicznie dla drugiego.

O co chodzi z wartościami? I tak je nadpisujesz.

0

wartości są dodawane do listy cyklicznej program ma przyjmować dane w postaci wykładnika i potęgi wielomianu zapisywać go do listy cyklicznej i wypisywać na ekran wprowadzony wielomian.

#include <iostream>
#include <string> 

using namespace std;


struct Node {
   int data1;   // współczynnik przy x-sie
   int data2;    // potęga x-sa
   struct Node *next;
};
struct Node* head = NULL;
void insert(){
int newdata;
int newdata2;
while(cin)
 {
	
cout<<"podaj wspolczynnik (w konczy wprowadzanie)"<<endl;
cin>>newdata;
cout<<"podaj potege"<<endl;	
cin>>newdata2;
    

	
}


   struct Node *newnode = (struct Node *)malloc(sizeof(struct Node));
   struct Node *ptr = head;
   newnode->data1 = newdata;
   newnode->data2 = newdata2;
   newnode->next = head;
   if (head!= NULL) {
      while (ptr->next != head)
      ptr = ptr->next;
      ptr->next = newnode;
   } else
   newnode->next = newnode;
   head = newnode;
}
   

	

void display() {
   struct Node* ptr;
   ptr = head;
   do {
      cout<<ptr->data1<<"x "<<ptr->data2;
      ptr = ptr->next;
   } while(ptr != head);
}
int main() {
   insert();
 
   display();
   return 0;
}

nie wiem jak zatrzymać pętle while

0

Czemu tak komplikować?

#include <iostream>
#include <sstream>
#include <string>
#include <iterator>
#include <vector>
using namespace std;

int main()
{
	cout<<"Podaj wspólczynniki od x^0 i nacisnij <Enter>: ";
	string s;
	getline(cin,s);
	stringstream ss(s);
	istream_iterator<double> iss(ss),ess;
	vector<double> polinom(iss,ess);
	//cout.setf(ios::fixed);
	double val;
	for(size_t size=polinom.size(),first=true,i=size;i--;)
	{
		if(!(val=polinom[i])) continue;
		cout<<(" "+first)<<(first?noshowpos:showpos)<<val<<"*x^"<<noshowpos<<i;
		first=false;
	}	
    return 0;
}
0

@_13th_Dragon: Zadanie polega na tym iż mam stworzyć typ danych reprezentujący wielomiany, mają być przechowywane w liście cyklicznej a pierwszymi wartościami listy mają być 0 i -1 nastepnie funkcja która będzie wyświetlała wielomian już złożony czyli na podaje 2 6 -5 5 funkcja wyświetli mi 2x^6 - 5x^5

#include <iostream>

using namespace std;

struct Node{
	int data1;   //wspólczynnik
	int data2;   //potęga
	struct Node *next;
};
struct Node* head = NULL;

Node* nowyWielomian(int n, int a){
    Node* w = new Node;
	w->data1 = n;
	w->data2 = a;
	return w;
}

Node* wczytajWieloman(){
	int ile;
	int n=0;
	
	int a=-1;

	struct Node *newnode = (struct Node *)malloc(sizeof(struct Node));
   struct Node *ptr = head;
   newnode->data1 = a;
   newnode->data2 = n;
   newnode->next = head;
   if (head!= NULL) {
      while (ptr->next != head)
      ptr = ptr->next;
      ptr->next = newnode;
   } else
   newnode->next = newnode;
   head = newnode;
   cout<<"z ilu wspolczynnikow sklada sie wielomian";
   cin>>ile;
   
   while(ile>0){
   
	cout<<"podaj wykladnik"<<endl;
	cin>>a;
	cout<<"podaj potege"<<endl;
	cin>>n;
	ile--;
}
	Node* w = nowyWielomian(a, n);

	return w;
}
void display(Node* w) {
   struct Node* ptr;
   ptr = head;
   do {
   
   	
      cout<<ptr->data1<<"x^"<<ptr->data2;
      ptr = ptr->next;
  }
  
    while(ptr != head);
}


int main () {
     Node* w = wczytajWieloman();
	display(w);
	
	return 0;
}

zrobiłem coś takiego ale program wyświetla mi tylko 2 pierwsze wartości nie wiem czy dobrze zaimplementowałem listę, jeśli ktoś może coś podpowiedzieć byłbym wdzięczny z tablicami nie mam problemu ale listy jeszcze nie bardzo rozumiem.

1

zlituj się, i nie używaj malloc w C++, tylko new
Tak przy okazji, daj konstruktor i zapewnij sobie prawidłowe inicjowanie.
Słowa struct też się już nie przywołuje za każdą deklaracją zmiennej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1